python 读写excel:(主要步骤)
1.使用xlutils实现读写excel
# -*- coding: utf-8 -*-
from xlutils.copy import copy
1.获取excel文件全路径
my_save_excel_fille_name = QtGui.QFileDialog.getSaveFileName(self, u'请选择数据存入的文件', u'/')
print unicode(my_save_excel_fille_name)
2.打开该excel工作簿
old_xls = open_workbook(unicode(my_save_excel_fille_name).replace(u'/', u'\\'), formatting_info=True)
3.复制一个新的工作簿
new_xls = copy(old_xls)
4.获取表单
new_xls_sheet = new_xls.get_sheet(0)
5.修改表单中的单元格内容
new_xls_sheet.write(9,2, 5.45)
6.保存新的工作簿,和原来同名,实现修改后覆盖
new_xls.save(unicode(my_save_excel_fille_name))
注意:此种方法使用的是xlutils,一般常用于复制文件,复制后原来的excel中的格式不会保存,比如原来的.xlsx文件含有公式,复制后公式失效。
后来使用formatting_info=True,这个也只能实现修改.xls文件,虽然能保留一定的格式,但还是不能保留公式。
2.使用win32com 解决格式保留问题:(缺点好像是不能跨平台)
from win32com import client as wc
1.获取excel文件全路径
my_save_excel_fille_name = QtGui.QFileDialog.getSaveFileName(self, u'请选择数据存入的文件', u'/')
print unicode(my_save_excel_fille_name)
excel = wc.Dispatch('Excel.Application')
3.不让其显示,相当于后台
excel.Visible = 0
4.打开工作簿
my_excel = excel.Workbooks.Open(unicode(my_save_excel_fille_name).replace(u'/',u'\\'))
print my_excel.Sheets.Count
5.获取表单
my_sheet = my_excel.Sheets('sheet1')
6.统计表单行列总数
print my_sheet.UsedRange.Rows.Count
print my_sheet.UsedRange.Columns.Count
7.读单元格内容
print my_sheet.Cells(9+1,2+1).Value
8.修改单元格内容
my_sheet.Cells(9+1,2+1).Value = 5.00
9.读单元格内容
print my_sheet.Cells(9+1,2+1).Value
10.保存
my_excel.Save()
11.退出
my_excel.Close()
注意:此种方式可以实现对已经存在的excel进行读写,而且能保留之前原有的格式。