当前位置: 首页 > 后端技术 > Python

用Python读写Excel表格

时间:2023-03-25 23:36:42 Python

Python可以读写Excel表格吗?当然。Python下有很多库可以做到,openpyxl是最好的之一。openpyxl设计精美,您一定会爱上它!不信请继续往下看:在工作簿启动openpyxl之前,不需要提前创建工作簿(Workbook)。只需导入Workbook类在内存中创建一个新的工作簿并开始操作:>>>fromopenpyxlimportWorkbook>>>wb=Workbook()新建的工作簿默认有一个预建的工作表,通过active属性是可用:>>>ws=wb.active注意如果工作簿包含多个工作表,该属性将返回第一个。使用create_sheet方法,可以创建新的工作表。创建可以追加在最后:>>>ws1=wb.create_sheet('Mysheet')也可以插入在前面:>>>ws1=wb.create_sheet('Mysheet',0)如果没有指定sheetname,它会自动生成,序列表如:Sheet、Sheet1、Sheet2等。当然如果觉得不合适可以修改:>>>ws.title='NewTitle'工作表标题标签的背景色默认为白色。这可以通过使用RGB颜色代码设置sheet_properties.tabColor属性来修改:>>>ws.sheet_properties.tabColor="1072BA??"一旦你命名工作表,你可以通过该名称找到它:>>>ws3=wb["NewTitle"]通过sheetnames属性,可以得到所有的工作表名称:>>>print(wb.sheetnames)['Sheet2','NewTitle','Sheet1']当然直接遍历所有工作表是为了——in更优雅:>>>forsheetinwb:...print(sheet.title)使用copy_worksheet方法复制工作簿中的工作表:>>>source=wb.active>>>target=wb.copy_worksheet(source)从文件加载如果你已经有一个工作簿,你可以通过openpyxl.load_workbook函数加载它:>>>fromopenpyxlimportload_workbook>>>wb2=load_workbook('test.xlsx')>>>print(wb2.sheetnames)['Sheet2','NewTitle','Sheet1']单个单元格操作工作表的数据处理,从修改单元格内容开始。可以通过工作表键直接访问单元格:>>>cell=ws['A4']该语句将返回单元格A4,如果不存在则创建它。可以直接赋值:>>>ws['A4']=10另一种方式是使用cell方法访问单元格,指定行和列:>>>cell=ws.cell(row=4,column=2,value=10)注释工作表创建后不包含任何单元格,单元格在第一次访问时自动创建。多单元格连续多个单元格可以切片得到:>>>cell_range=ws['A1':'C2']切片得到的单元格范围如下:以行或列为单位:#取出C列>>>colC=ws['C']#取出C到D列>>>col_range=ws['C:D']#取出第10行>>>row10=ws[10]#取出第5行to10>>>row_range=ws[5:10]也可以使用iter_rows方法:#从第1行遍历到第2行,每行最多返回3列>>>forrowinws.iter_rows(min_row=1,max_row=2,max_col=3):...对于行中的单元格:...print(cell)如果需要遍历表格的所有行或列,可以使用相关属性。使用行属性遍历所有行:>>>ws=wb.active>>>ws['C9']='helloworld'>>>tuple(ws.rows)((,,),(,,),(,,),(,,),(,,),(,,),(,,),(,,),(,,))使用列属性遍历所有列:>>>tuple(ws.columns)((,,,,,<细胞表.A6>,...<细胞表.B7>,<细胞表.B8>,),(,,,,,,,,))数据存储Excel表格通过单元格存储数据,直接赋值即可:>>>cell.value='hello,world'>>>print(cell.value)'hello,world'>>>cell2.value=3.14>>>print(cell2.value)3.14同时还可以附加类型和格式到cells信息,创建工作簿时需要指定guess_types参数:>>>wb=Workbook(guess_types=True)这样,文本(包括百分比)会自动转换为浮点数:>>>cell.value='31.50'>>>print(cell.value)31.5>>>cell2.value='12%'>>>print(cell2.value)0.12日期可以直接用原生datetime对象设置:>>>导入日期时间>>>单元格。value=datetime.datetime.now()>>>printcell.valuedatetime.datetime(2010,9,10,22,25,18)保存到文件最安全的保存方式是调用save方法保存到指定文件:>>>wb=Workbook()>>>wb.save('balances.xlsx')警告此操作将覆盖现有文件,没有任何警告!在t的帮助下emplate属性,可以将工作表另存为模板文档:>>>wb=load_workbook('document.xlsx')>>>wb.template=True>>>wb.save('document_template.xltx')或者另存为一个普通的文档:>>>wb=load_workbook('document_template.xltx')>>>wb.template=False>>>wb.save('document.xlsx',as_template=False)保存到web应用程序中的流,例如Flask和Django,你可能需要将文件保存到流(stream)中,用一个临时文件(NamedTemporaryFile)可以轻松实现:>>>fromtempfileimportNamedTemporaryFile>>>fromopenpyxlimportWorkbook>>>wb=Workbook()#先保存到临时文件,然后读出文件内容>>>withNamedTemporaryFile()astmp:...wb.save(tmp.name)...tmp.seek(0)...stream=tmp.read()附录更多Python技术文章请访问:Python语言小册子订阅更新,获取更多学习资料请关注我们的微信公众号: