Python之Excel读写
在日常工作中,对Excel文件的读写比较多,如何使用Python读写excel文件就是我当前需要解决的问题。
一般遇到问题我喜欢用自己的方式去解决,所以我没有首先去找三方库去解决这个问题。我首先去Microsoft去搜索诸如Manipulate Office之类的关键字,然后就看到了这个:How to: Manipulate Office Open XML Formats Documents,Office Open XML Formats是从office2007开始支持的一种office文档的格式,我们可以这样查看一个office文档,将我们所要操作的文档test.xlsx之类的重命名为test.xlsx.zip,然后打开zip文件,就会发现如下的文件布局:
当然,word文件会具有类似的格式,这里不再贴图!
貌似问题简化了很多,我可以通过解析xml的方式去解析我们的excel文件,然后进行相应的操作,这个方法会有个弊端就是对office2007之前的文件无效。这个问题留作以后我们的实现目标吧,毕竟是个比较复杂的过程,工作量较大!
--------------------------------------------------------------------------------------------------------------------------------------------
xlrd和xlwt模块用于在python中对excel进行读写操作,下载戳这里:xlrd下载和xlwt下载。安装方法很简单,解压文件,然后cmd到当前目录,运行:
python setup.py install
安装完成后我们就可以使用他们了:
Sample1(excel读操作):
import xlrd data = xlrd.open_workbook('E:/test.xls') for sheet in data.sheets(): print sheet.name, sheet.nrows, sheet.ncols, sheet.row_values(0)
Sample2(excel写操作):
import xlwt class ExcelReporter(): rowIndex = 0 def __init__(self): self.rowIndex = 0 def SaveReport(self, vm_test_results, report_file): wb = xlwt.Workbook() sheet = wb.add_sheet('TestResults') self.__WriteRow(sheet, ['Case', 'Status', 'Install', 'Launch', 'Function', 'Uninstall', 'Process Crash', 'System Hang', 'System Crash', 'Error Messages']) for vm_result in vm_test_results: self.__WriteVMResult(sheet, vm_result) try: wb.save(report_file) except Exception as ex: raise ex def __WriteRow(self, sheet, row): sheet.write(self.rowIndex, 0, row) self.rowIndex += 1 def __WriteCols(self, sheet, items): for colIndex in range(0, len(items)): sheet.write(self.rowIndex, colIndex, items[colIndex]) self.rowIndex += 1 def __WriteVMResult(self, sheet, vm_result): self.rowIndex += 1 self.__WriteRow(sheet, vm_result.vm_alias) if vm_result.test_aborted: self.__WriteRow(sheet, 'Testing for this vm was aborted before running any case. Please check engine log for details') elif vm_result.test_exception: self.__WriteRow(sheet, 'Exception occur when testing for this vm. Please check engine log for details') else: for case_result in vm_result.cases_results: self.__WriteCaseResult(sheet, case_result) def __WriteCaseResult(self, sheet, case_result): items = [''] * 10 items[0] = case_result.case_name if case_result.case_passed == True: items[1] = 'PASS' else: items[1] = 'FAIL' if case_result.install_script_success == False or case_result.install_script_completed == False: ... ...
...
PS:上述代码部分方法代码并未给出!
再补充贴个设置Excel表格中字体等的小函数:
def __SetErrorStyle(self): ErrorFont = xlwt.Font() ErrorFont.name = 'Calibri' ErrorFont.height = 240 # size 12 ErrorFont.bold = True ErrorFont.italic = True ErrorFont.colour_index = 2 # red style = xlwt.XFStyle() style.font = ErrorFont return style
最后贴个我用xlwt生成的测试报告的截图:
谢谢阅读!
作者:
薛定谔の喵
出处:
http://www.cnblogs.com/berlin-sun/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接,否则保留追究法律责任的权利。