python openpyxl 向已存在的excel表格中写入数据 及可能出现的Error处理

虽然平时数据文件读写都是用的.csv,但还是偶然需要把数据写入恶心的excel表格。在CSDN上搜了很多相关的博客,发现都是用的xlutils,xlrd,xlwd三者的结合。直接拿来用了之后,发现写入后的excel表格就会格式错误打不开。

于是又一次去StackoverFlow上转了圈(这个社区真的超赞),发现了很多简单的方法。这里就只提供openpyxl库相关的方法吧。

import openpyxl

xfile = openpyxl.load_workbook('test.xlsx')

sheet = xfile.get_sheet_by_name('Sheet1')
sheet['A1'] = 'hello world'
xfile.save('text1.xlsx')

改写只需要几行,与xlutils相比不知道爽到哪里去啦~

 

#################################################################################################

不过在处理其他表格时,突然又开始报错:

AttributeError: 'tuple' object has no attribute 'value'

没事,继续在StackoverFlow上找,把对应行列写入数据的那一行换一种写法就好:

##sheet['A1'] = 'hello world'
sheet.cell(row=1, column=1).value = 'hello world' 

 

################################################################################################

因为之前用的xlutils处理并覆盖了测试文件,再用的openpyxl的第一次,出现了另一个Error,一度让我怀疑openpyxl的可行性。

zipfile.BadZipFile: File is not a zip file

继续必应走起(现在还有人用广告满天飞的百度?),发现这与excel文件本身的格式有关:

Excel 2003 format (xls)格式是binary的,而Excel 2007 format(xlsx)不同,是一个zip file。一个正常的excel文件不是binary 的就是zip file,我这个文件后缀是.xlsx,很可能是xlutils把我的测试文件搞坏了。直接试着打开,果不其然。(第三个reference中,后面也有提到一个既不是xlsx也不是xls的文件也是可以被excel读取的。答者相信这可能是XML Spreadsheet 2003 file format格式,这里就不细细追究了)

 

################################################################################################

reference:

1. https://stackoverflow.com/questions/18849535/how-to-write-update-data-into-cells-of-existing-xlsx-workbook-using-xlsxwriter-i

2. https://stackoverflow.com/questions/48537430/openpyxl-worksheet-object-has-no-attribute-writepython

3. https://stackoverflow.com/questions/31212104/how-to-load-in-python-an-xlsx-that-originally-had-xls-file-extension

 

你可能感兴趣的:(python,openpyxl,excel,write,python)