pandas读取加密excel,并保存加密格式

最近在处理些加密文件,并且需要加密保存,确保数据安全。对于读取习惯csv的我来说很头疼,外加发现网上信息比较散我整理了一下xlsx的加密读取和保存
需安装pywin32

!pip install pywin32
import win32com.client as win32

读取:

def df_from_pswxlsx(filename, password, gl_excel_com, sheetname):
    """
    调用格式:
    df=df_from_pswxlsx("D:\\amlui\\pivot\\aa.xlsx","Xyl19765225","KET.Application")
    参数一:文件路径
    参数二:文件密码
    参数三:不同配置的Excel-COM 参数,WPS excel用'KET.Application',
            MS office Excel文件用'Excel.Application'
    参数四:excel工作簿中要处理的sheet名。
    return: 解密后输出的pandas格式的df,df就可以参与各种运算了。
    於策2020年7月7日调试成功,算法改进后运行速度超级快。
    1437条记录从47秒减至2.7秒
    3410条记录从105秒减至3.05秒
    """
    psw_xlsx = win32.DispatchEx(gl_excel_com)  # 这个功能创建新进程,不会打扰用户手动进程
    psw_xlsx.DisplayAlerts = 0  # 不显示警告,SaveAS的弹框就不出来了。
    wb = psw_xlsx.Workbooks.Open(filename, UpdateLinks=False, ReadOnly=False, Format=None, Password=password,
                                 WriteResPassword=password)
    # 获取工作表具体情况
    data_lst = list(wb.Worksheets(sheetname).UsedRange())  # 数据存入,"原始数据",2-"借贷求和计数"...数字与表名可以互换
    df = pd.DataFrame(data_lst[1:],
                      columns=data_lst[0])  # data_lst[1:]除了表头(只有一行)以外的所有数据,data_lst[0],原excel表的第一行表头作为列索引。
    wb.Close()
    psw_xlsx.DisplayAlerts = 1
    psw_xlsx.Application.Quit()  # 只清掉我自己开启的进程
    return df

#调用保存

def pwd_xlsx(old_filename,new_filename,pwd_str,pw_str=''):
    xcl = win32.Dispatch("Excel.Application")
    # pw_str为打开密码, 若无 访问密码, 则设为 ''
    wb = xcl.Workbooks.Open(old_filename, False, False, None, pw_str)
    xcl.DisplayAlerts = False
    # 保存时可设置访问密码.
    wb.SaveAs(new_filename, None, pwd_str, '')
    xcl.Quit()

参考:
1.https://blog.csdn.net/lttisky/article/details/108236732?spm=1001.2101.3001.6650.1&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-1.pc_relevant_default&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-1.pc_relevant_default&utm_relevant_index=2

2.https://blog.csdn.net/weixin_43097265/article/details/107248676

上一篇:pandas(三)


下一篇:CTFhub SQL注入