python的openpyxl包读存电子表格文件的注意点

在python中,操作电子表格时,经常会使用openpyxl模块。但是,在使用openpyxl模块打开或保存电子表格文件时,用法如下:

wb = openpyxl.load_workbook('test.xlsx')
wb.save('test.xlsx')

两个点需要注意:
1、文件名要带扩展名,如test.xlsx。
2、当前版本的openpyxl不支持.xls文件。
3、文件名中不能带有文件夹名。如以下代码会出错(原因也许是把“\”当成了转义字符):

wb = openpyxl.load_workbook('c:\python\test.xlsx')
wb.save('c:\python\test.xlsx')

因此,可以使用os.chdir()方法先把当前文件夹定位到文件所在的文件夹,然后load_workbook()和save()方法的参数直接使用文件名字符串即可。也可以使用原义字符串:

wb = openpyxl.load_workbook(r'c:\python\test.xlsx')
wb.save(r'c:\python\test.xlsx')

额外说明:
1、在使用remove_sheet(sheetobj)方法移除工作表时,sheetobj参数必须是worksheet对象,而不是工作表的名称字符串。如果只知道工作表名称时,可以使用wb[‘Sheet’]返回worksheet对象。例如:

wb.remove_sheet(wb['Sheet'])

2、以下代码在执行时不出错,但当保存电子表格时出错:

sheet.row_dimensions[1] = 20
sheet.column_dimensions['B'] = 20

修改为如下代码后,无论执行还是保存时均不出错:

sheet.row_dimensions[1].height = 20
sheet.column_dimensions['B'].width = 20

3、插入、删除行列
sheet.insert_rows(num1,num2) :在第num1行前面插入num2个空行
sheet.insert_cols(num1,num2):在第num1列前面插入num2个空列
sheet.delete_rows(num1,num2) :从第num1行开始删除num2个行
sheet.delete_cols(num1,num2) :从第num1列开始删除num2个列

猜你喜欢

转载自blog.csdn.net/any1where/article/details/128451531