暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Pandas处理excel文件(读取与存储)以及读取加密excel的方法

漫谈大数据与数据分析 2020-04-20
5310



Excel文件的读取与存储

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 message
0 1 2 3 4 hello
1 5 6 7 8 world
2 9 10 11 12 foo

如果要读取一个文件中的多个表单,创建ExcelFile会更快。

只读取一个表单时pandas.read_excel会更方便:

In [106]: frame = pd.read_excel('examples/ex1.xlsx', 'Sheet1')
In [107]: frame
Out[107]:
a b c d message
0 1 2 3 4 hello
1 5 6 7 8 world
2 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_workbook
book = load_workbook('examples/ex2.xlsx')
writer = pd.ExcelWriter('examples/ex2.xlsx', engine='openpyxl', book=book)
writer.book = book
frame.to_excel(writer, 'a1')
frame.to_excel(writer, 'a2')
writer.save()

这样即使'examples/ex2.xlsx'文件中已经存在名字为a1的表,也会以a11的名称保存,而不会删除原有的数据。



python读取加密的excel文件

下面的代码可读取代码相同目录下的加密的excel文件,密码为123456.

import pandas as pd
import numpy as np
import os
from xlrd import *
import win32com.client
import sys


xlApp = 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.Count
rows = xlws.UsedRange.Rows.Count
print(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进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论