标签:Python与Excel,合并工作簿
本文介绍使用Python向Excel主文件添加新数据的最佳方法。该方法可以保存主数据格式和文件中的所有内容。
安装库
本文使用xlwings库,一个操控Excel文件的最好的Python库。在终端使用下面的命令安装:
pip install xlwings
示例文件
本文用到了两个示例Excel工作簿:
主文件.xlsx
新数据.xlsx
可以到知识星球App完美Excel社群下载。
使用主文件
可以使用xlwings打开Excel文件。执行下面的代码(如下图1),将打开Excel主文件。
图1
主文件内容如下图2所示。
图2
可以看出:
1.主文件包含两个工作表,都含有数据。
2.每个工作表都有其格式。
3.想要在每个工作表的最后一行下面的空行开始添加数据。如图2所示,在“湖北”工作表中,是在第5行开始添加新数据。
使用Python很容易获取所有Excel工作表,如下图3所示。注意,它返回一个Sheets对象,是Excel工作表的集合,可以使用索引来访问每个单独的工作表。要获取工作表名称,只需调用.name属性。
图3
接下来,要解决如何将新数据放置在想要的位置。
这里,要将新数据放置在紧邻工作表最后一行的下一行,例如上图2中的第5行。那么,我们在Excel中是如何找到最后一个数据行的呢?可以先选择单元格A1,然后按下Ctrl+向下箭头键,则会移至最后一行(对于图2所示的工作表来说是第4行)。
下面的代码可以获取最后一行,如下图4所示。
图4
打开并读取新数据文件
打开新数据文件,从中获取所有非空的行和列中的数据。使用.expand()方法扩展单元格区域选择。注意,从单元格A2开始扩展,因为第1列为标题行。
图5
我们得到了一个列表。这两个省都在列表中,让我们将它们分开,并从每个子列表中删除省份。以湖北为例。这里我们使用列表解析,这样可以避免长循环。
图6
将数据转到主文件
下面的代码将新数据工作簿中的数据转移到主文件工作簿中:
图7
上述代码运行后,主文件如下图8所示。
图8
可以看到,添加了新数据,但格式不一致。
转换新数据区域的格式
从第2行复制单元格格式,并仅将格式粘贴到数据区域的其余部分。如下图9所示的代码。
图9
结果如下图10所示。
图10
注意,复制/粘贴也将复制其它格式。如果日期格式不同,以按如下方式更改它们的格式:
master_wb.sheets[0].range('A5:A6').number_format = 'mm/dd/yyyy'
注:本文学习整理自pythoninoffice.com,供参考。