用pandas向Excel中新增sheet并新增数据
本来我以为这是个很简单的需求。但上网查了之后发现中文网页里回答互相复制粘贴,而且竟然没有一个回答的代码是不报错的。可笑的是有的网站搬运了外文网站上的代码,但那些代码是人家没写正确上网问的(被搬运水平气笑)。于是上了外文的网站,在一个极其长的帖子了读了很多的对于错误答案的讨论后找到了这个问题的正确解决方式。于是记下希望能为以后遇到这个需求的人节省时间。
需求:假设已有一个工作簿test, 里面已经包含两个工作表x1和x2,现在需要追加两个工作表x3和x4。但直接用to_excel方法会覆盖掉原有的工作表。这时候就需要用ExcelWriter来实现功能。测试过程及代码如下:
导入所需模块

输入文件地址,并先写入两页表格,保存,作为“已有内容的Excel表格”。

这时候得到的test的Excel文件如下图,有两页工作表。

准备好x3和x4的dataframe,然后打开工作簿(read_excel())。 关键的地方来了,要追加工作表时不能像上面一样使用‘xlsxwriter’引擎,必须要换‘openpyxl’引擎才能实现追加功能,后面才能设置mode为‘a’ (append)。否则会返回报错,因为‘xlsxwriter’引擎没有append模式(顺便吐槽,由此可见某些网站上说的用哪个引擎都一样的说法在这个需求下是错的)。

总之这段程序跑完后,两个工作表被追加到了工作簿,而原来的工作表也没有被覆盖。

一个小点:在运行代码操作Excel时应关掉文件,否则会报错denied。