iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >如何解决使用openpyxl时遇到的问题
  • 184
分享到

如何解决使用openpyxl时遇到的问题

2023-06-14 04:06:13 184人浏览 薄情痞子
摘要

本篇内容主要讲解“如何解决使用openpyxl时遇到的问题”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何解决使用openpyxl时遇到的问题”吧!最近在用python处理excel表格是遇到

本篇内容主要讲解“如何解决使用openpyxl时遇到的问题”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何解决使用openpyxl时遇到的问题”吧!

最近在用python处理excel表格是遇到了一些问题

1, xlwt最多只能写入65536行数据, 所以在处理大批量数据的时候没法使用

2, openpyxl 这个库, 在使用的时候一直报错, 看下面代码

from openpyxl import Workbookimport datetimewb = Workbook()ws = wb.active ws['A1'] = 42 ws.append([1,2,3]) ws['A2'] = datetime.datetime.now()wb.save('test.xlsx')

报错信息如下

File "src\lxml\serializer.pxi", line 1652, in lxml.etree._IncrementalFileWriter.write TypeError: Got invalid input value of type <class 'xml.etree.ElementTree.Element'>, expected string or Element

有没有人知道是什么原因呀? 惆怅!!!

got invalid input value of type <class ‘xml.etree.ElementTree.Element'>, expected string or Element

填坑:

出现这个问题好久了, 不知道怎么解决, 也去google 和baidu搜索, 一篇文章提到了可能是包冲突的问题, 抱着试一试的心态, 没想到解决了

lxml 这个包和openpyxl 起冲突, 解决办法, 先卸掉lxml

pip uninstall lxml

最后运行上面处理excel的代码, 运行成功, 无错误!!! 困扰了我很长时间的问题得以解决!!!

还有另一种方法:

由于lxml 包经常要用到, 所以每次卸载掉再安装实在是麻烦, 所以我有下面的想法

例如下面的代码, 从数据库中取数据存入表格

import pymysqlimport pandas as pdfrom sqlalchemy import create_engineengine = create_engine("Mysql+pymysql://user:passWord@ip:port/database",encoding='utf-8')sql = """SELECT catalog_1 as '目录一',catalog_2 as '目录二',catagory as '目录三',    region as '区域',year as '年份',data as '数据',unit as '单位' from table    where catalog_1 = "农业" limit 100"""df = pd.read_sql_query(sql, con=engine)# writer = pd.ExcelWriter(r'C:\Users\Administrator\Desktop\test.xlsx')# df.to_excel(writer)# writer.save()

这时候, 我们不选择to_excel() 这个函数, 而是选择使用to_csv() ; 即可避免openpyxl 和lxml 的冲突

df.to_csv(r'C:\Users\Administrator\Desktop\test.csv',index=False)# 经过验证, 此种方法是行得通的

最后得到的csv 文件用Excel 可以直接打开, 也可以另存为*.xlsx文件

最终解决办法

今天发现我使用的openpyxl版本是3.0.2, 卸载此版本, 安装3.0.0版本

最新更新于2020-3-16, 经过测试, 此报错解除!

补充:Python—使用Openpyxl的dataframe_to_rows的一个小坑

这个坑说大不大,说小遇到了也头疼。

一般我们把dataframe直接写到Excel文件,直接 df.to_excel即可。不过如果想把多个表格写入同一个工作表呢,那就需要用openpyxl的dataframe_to_rows功能。

看下面一段代码。

import pandas as pdfrom openpyxl import Workbookfrom openpyxl.utils.dataframe import dataframe_to_rowsdf1=pd.DataFrame([[1,4],[2,5],[3,6]] ,index=['a','b','c'],columns=['a','b'])df2=pd.DataFrame([[1,4],[2,5],[3,6],[7,8]] ,index=['d','e','f','g'],columns=['a','b'])wb=Workbook()ws=wb.active #打开工作表#把df1写入工作表for row in dataframe_to_rows(df1): ws.append(row)#换行ws.append([])#把df2写入工作表for row in dataframe_to_rows(df2): ws.append(row)wb.save('text.xlsx')

这段代码就是把df1,df2都写入到一个工作表,但一看结果,傻了,怎么标题行和内容之间多了空行啊

如何解决使用openpyxl时遇到的问题

看看空行是如何产生的呢

如何解决使用openpyxl时遇到的问题

原来多了一个None啊,难怪是空行,目测None是index带来的,那就把index去掉呗

如何解决使用openpyxl时遇到的问题

这回None是没有了,但是index的内容也想要显示,怎么办呢,这么办:

如何解决使用openpyxl时遇到的问题

哈哈,这样就完美了。这里reset_index的意思就是把index列,变成普通列,比如:

如何解决使用openpyxl时遇到的问题

如上图,如果直接reset_index,index列变成普通列,但是列头自动变成了index,这可不好,所以先给index列赋值,也就是df1.index.name=‘code'

最后代码如下

import pandas as pdfrom openpyxl import Workbookfrom openpyxl.utils.dataframe import dataframe_to_rowsdf1=pd.DataFrame([[1,4],[2,5],[3,6]] ,index=['a','b','c'],columns=['a','b'])df2=pd.DataFrame([[1,4],[2,5],[3,6],[7,8]] ,index=['d','e','f','g'],columns=['a','b'])wb=Workbook()ws=wb.active #打开工作表df1.index.name='code1'df2.index.name='code2'#把df1写入工作表for row in dataframe_to_rows(df1.reset_index(),index=False): ws.append(row)#换行ws.append([])#把df2写入工作表for row in dataframe_to_rows(df2.reset_index(),index=False): ws.append(row)wb.save('text.xlsx')

结果,哈哈,完美

如何解决使用openpyxl时遇到的问题

到此,相信大家对“如何解决使用openpyxl时遇到的问题”有了更深的了解,不妨来实际操作一番吧!这里是编程网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

--结束END--

本文标题: 如何解决使用openpyxl时遇到的问题

本文链接: https://www.lsjlt.com/news/267885.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 如何解决使用openpyxl时遇到的问题
    本篇内容主要讲解“如何解决使用openpyxl时遇到的问题”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何解决使用openpyxl时遇到的问题”吧!最近在用python处理Excel表格是遇到...
    99+
    2023-06-14
  • 解决使用openpyxl时遇到的坑
    最近在用python处理Excel表格是遇到了一些问题 1, xlwt最多只能写入65536行数据, 所以在处理大批量数据的时候没法使用 2, openpyxl 这个库, 在使用的时...
    99+
    2024-04-02
  • 使用@ApiModel遇到的问题如何解决
    这篇文章主要介绍了使用@ApiModel遇到的问题如何解决的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇使用@ApiModel遇到的问题如何解决文章都会有所收获,下面我们一起来看看吧。@ApiModel遇到的问...
    99+
    2023-07-02
  • 使用nodeAPI时遇到过异步问题如何解决
    这篇文章主要讲解了“使用nodeAPI时遇到过异步问题如何解决”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“使用nodeAPI时遇到过异步问题如何解决”吧!问题闲逛技术群时常常看到群友遇到异...
    99+
    2023-07-05
  • 同时使用swiper和echarts遇到的问题如何解决
    今天小编给大家分享一下同时使用swiper和echarts遇到的问题如何解决的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。项...
    99+
    2023-07-06
  • SpringBoot @PathVariable使用时遇到的问题及解决
    目录@PathVariable使用时遇到的问题第一个问题解决办法第二个问题解决办法@PathVariable 404问题@PathVariable使用时遇到的问题 第一个问题 接口:...
    99+
    2024-04-02
  • 如何解决使用ProcessBuilder的遇到的问题
    这篇文章主要介绍如何解决使用ProcessBuilder的遇到的问题,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!使用ProcessBuilder踩到的坑最近使用ProcessBuilder执行命令,命令内容正确,但...
    99+
    2023-06-15
  • 如何解决MySQL使用中遇到的问题
    这篇文章给大家分享的是有关如何解决MySQL使用中遇到的问题的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。sql_mode=only_full_group_by引起group b...
    99+
    2024-04-02
  • 使用springboot时,解决@Scheduled定时器遇到的问题
    目录@Scheduled定时器遇到的问题下面说一下@Scheduled 注解的几个参数一、可以通过配置文件配置进来的二、不可通过配置文件配置的 (作用相同)定时任务@Schedule...
    99+
    2024-04-02
  • 如何解决使用canvas绘图时遇到的跨域问题
    这篇文章主要介绍了如何解决使用canvas绘图时遇到的跨域问题,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。当在canvas中绘制一张外链图片时,我们会遇到一个跨域问题。示例...
    99+
    2023-06-09
  • 详解如何解决使用JSON.stringify时遇到的循环引用问题
    程序员在日常做TypeScript/JavaScript开发时,经常需要将复杂的JavaScript对象通过JSON.stringify序列化成json字符串,保存到本地以便后续具体...
    99+
    2024-04-02
  • 使用nodeAPI时遇到过异步问题解决
    目录问题总结问题 闲逛技术群时常常看到群友遇到异步问题, 这里就最近看到的问题做个解答: 问题大致是这样: 下面这段代码, 是希望输出456的, 但实际上却输出了[], 因为rea...
    99+
    2023-01-28
    nodeAPI异步问题 nodeAPI 异步
  • 在python项目中使用2sys.argv时遇到的问题如何解决
    这篇文章主要介绍了在python项目中使用2sys.argv时遇到的问题如何解决,此处通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考价值,需要的朋友可以参考下:python可以做什么Python是一种编程语言,内置了许多...
    99+
    2023-06-06
  • 使用@ApiModel遇到的问题及解决
    目录@ApiModel遇到的问题1. 习惯2. 遇坑3. 排查4. 解决@ApiModel和@ApiModelProperty版本@ApiModel@ApiModelProperty...
    99+
    2024-04-02
  • 如何解决Mysql导入导出时遇到的问题
    这篇文章给大家分享的是有关如何解决Mysql导入导出时遇到的问题的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。背景自从把我手上的任务全部转换成docker运行和管理之后,遇到了一...
    99+
    2024-04-02
  • 如何解决MySQL中使用innobackup 2.4遇到的问题
    这篇文章将为大家详细讲解有关如何解决MySQL中使用innobackup 2.4遇到的问题,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。 一 ...
    99+
    2024-04-02
  • windows播放文件时遇到问题如何解决
    在Windows播放文件时遇到问题时,你可以尝试以下解决方法:1. 确保媒体文件的格式与Windows支持的媒体文件格式兼容。如果文...
    99+
    2023-09-20
    windows
  • Java轮询锁使用时遇到的问题怎么解决
    这篇文章主要介绍了Java轮询锁使用时遇到的问题怎么解决的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Java轮询锁使用时遇到的问题怎么解决文章都会有所收获,下面我们一起来看看吧。问题演示当我们没有使用轮询锁之...
    99+
    2023-06-30
  • Java 轮询锁使用时遇到问题解决方案
    目录问题演示简易版轮询锁问题1:死循环反例优化版问题2:线程饿死反例优化版总结前言: 当我们遇到死锁之后,除了可以手动重启程序解决之外,还可以考虑使用顺序锁和轮询锁,这部分的内容可以...
    99+
    2024-04-02
  • 如何解决使用Jackson反序列化遇到的问题
    这篇文章主要为大家展示了“如何解决使用Jackson反序列化遇到的问题”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“如何解决使用Jackson反序列化遇到的问题”这篇文章吧。Jackson反序列...
    99+
    2023-06-20
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作