pandas的ExcelFile类或pandas.read_excel函数支持读取Excel中的表格型数据。这两个工具分别使用扩展包xlrd和openpyxl读取XLS和XLSX文件。
要使用ExcelFile,通过传递xls或xlsx路径创建一个实例:
In [104]: xlsx = pd.ExcelFile('examples/ex1.xlsx')
存储在表单中的数据可以read_excel读取到DataFrame:
In [105]: pd.read_excel(xlsx, 'Sheet1')Out[105]:a b c d message0 1 2 3 4 hello1 5 6 7 8 world2 9 10 11 12 foo
如果要读取一个文件中的多个表单,创建ExcelFile会更快。
只读取一个表单时pandas.read_excel会更方便:
In [106]: frame = pd.read_excel('examples/ex1.xlsx', 'Sheet1')In [107]: frameOut[107]:a b c d message0 1 2 3 4 hello1 5 6 7 8 world2 9 10 11 12 foo
要将DataFream保存到excel文件中,调用to_excel方法即可:
frame.to_excel('examples/ex2.xlsx')
但如果需要保存到一个excel表的多个表单,则必须创建一个ExcelWriter,然后使用pandas对象的to_excel方法将数据写入到其中:
writer = pd.ExcelWriter('examples/ex2.xlsx')frame.to_excel(writer, 'Sheet1')frame.to_excel(writer, 'Sheet2')frame.to_excel(writer, 'Sheet3')frame.to_excel(writer, 'Sheet4')writer.save()
但是这样保存会删除'examples/ex2.xlsx'文件中已经存在的表单,需要保留excel原有表单可以使用如下方法:
from openpyxl import load_workbookbook = load_workbook('examples/ex2.xlsx')writer = pd.ExcelWriter('examples/ex2.xlsx', engine='openpyxl', book=book)writer.book = bookframe.to_excel(writer, 'a1')frame.to_excel(writer, 'a2')writer.save()
这样即使'examples/ex2.xlsx'文件中已经存在名字为a1的表,也会以a11的名称保存,而不会删除原有的数据。
下面的代码可读取代码相同目录下的加密的excel文件,密码为123456.
import pandas as pdimport numpy as npimport osfrom xlrd import *import win32com.clientimport sysxlApp = win32com.client.Dispatch("Excel.Application")filename, password = r"NBLC.xlsx", '123456'xlwb = xlApp.Workbooks.Open(Filename=os.path.abspath(filename),UpdateLinks=0,ReadOnly=True,Format=None,Password=password)xlws = xlwb.Sheets(1)cols = xlws.UsedRange.Columns.Countrows = xlws.UsedRange.Rows.Countprint(rows, cols)content = list(xlws.Range(xlws.Cells(1, 1), xlws.Cells(rows, cols)).Value)df03 = pd.DataFrame(content)df03
注意:xlApp.Workbooks.Open中的Filename必须填入绝对路径。
返回结果:

文章转载自漫谈大数据与数据分析,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




