Python数据处理与Excel存储详解

openpyxl

  • 特点

  • 支持读写Excel 2010 xlsx/xlsm/xltx/xltm文件格式。
  • 可以操作Excel的几乎所有功能,如样式、图表、图片等。
  • 适用于复杂的Excel操作,例如公式、数据验证和条件格式。
  • 社区支持较好,文档比较完善。
  • 优点

  • 功能全面,能够处理复杂的Excel文件。
  • 可以读取和修改现有的Excel文件。
  • 支持较新的Excel特性。
  • 缺点

  • 内存消耗较大,对于非常大的Excel文件可能不太适用。
  • 读写速度相对较慢。
  • import os
    import openpyxl
    
    # 获取当前工作目录
    current_work_directory = os.getcwd()
    
    # 指定 Excel 文件路径
    excel_file_path = os.path.join(current_work_directory, 'test.xlsx')
    
    # 加载已存在的工作簿
    workbook = openpyxl.load_workbook(excel_file_path)
    
    # 选择默认的工作表,或者通过名字获取特定的工作表
    sheet = workbook.active
    
    # 假设这是你要写入的数据,可以是任何你处理后的数据
    data_to_write = [
        ['标题1', '标题2', '标题3'],
        [1, 2, 3],
        [4, 5, 6],
        # ... 更多数据
    ]
    
    # 写入数据到工作表
    for row_index, row_data in enumerate(data_to_write, start=1):  # 从第一行开始写入
        for col_index, value in enumerate(row_data, start=1):
            sheet.cell(row=row_index, column=col_index, value=value)
    
    # 保存工作簿
    workbook.save(excel_file_path)
    
    

    xlsxwriter

    XlsxWriter 是一个用于创建 Excel XLSX 文件的 Python 库,它支持写入大量数据并保存。相比于 XLWT,XlsxWriter 支持更现代的 XLSX 格式,并且在处理大量数据时性能更好。

  • 特点

  • 只支持写入Excel 2010 xlsx/xlsm文件格式。
  • 专注于写操作,不支持读取Excel文件。
  • 适合快速创建和写入大型Excel文件。
  • 优点

  • 写入速度快,对于大量数据写入效率较高。
  • 内存占用小,适合处理大型数据集。
  • 生成的Excel文件较小。
  • 缺点

  • 功能相对有限,不支持读取或修改现有Excel文件。
  • 不支持某些复杂的Excel特性,如条件格式和数据验证。
  • import os
    import xlsxwriter
    
    # 获取当前工作目录
    current_work_directory = os.getcwd()
    # 指定 Excel 文件路径
    excel_file_path = os.path.join(current_work_directory, 'test.xlsx')
    # 创建一个新的工作簿
    workbook = xlsxwriter.Workbook(excel_file_path)
    # 创建一个新的工作表
    worksheet = workbook.add_worksheet('Sheet')
    
    # 设置标题行
    titles = ["列名1", "列名2", "列名3", "列名4"]
    for col_num, title in enumerate(titles, start=1):
        worksheet.write(0, col_num - 1, title)
    
    # 修改单元格值
    worksheet.write(1, 1, 1)
    
    # 保存工作簿到当前工作目录
    workbook.close()
    
    

    总结

  • 如果你的需求是读取和修改现有的Excel文件,或者需要使用复杂的Excel特性,openpyxl可能是更好的选择。
  • 如果你只需要创建新的Excel文件,并且关注写入速度和文件大小,xlsxwriter可能更适合你。
  • 根据你的具体需求,你可以选择最合适的库。对于大多数简单的用例,xlsxwriter由于其写入速度快和资源消耗低,通常是一个较好的选择。而对于需要更复杂操作的用例,openpyxl提供了更多的灵活性。

    大量数据

    import xlsxwriter
    
    # 创建一个新的 Excel 文件
    workbook = xlsxwriter.Workbook('large_data.xlsx')
    
    # 添加一个工作表
    worksheet = workbook.add_worksheet('Data')
    
    # 写入表头
    headers = ['ID', 'Name', 'Age', 'City']
    for col_num, header in enumerate(headers):
        worksheet.write(0, col_num, header)
    
    # 生成大量数据并写入工作表
    row_num = 1
    for i in range(1, 100001):  # 生成 100,000 行数据
        data = [i, f'Name{i}', i % 100, f'City{i % 10}']
        for col_num, value in enumerate(data):
            worksheet.write(row_num, col_num, value)
        row_num += 1
    
    # 关闭工作簿并保存文件
    workbook.close()
    
    print("数据已成功写入 large_data.xlsx 文件。")
    

    使用pandas保存到Excel文件

    Pandas导入导出excel、csv、txt文件

    from pandas import DataFrame
    l1 = [1,2,3,4]
    l2 = [1,2,3,4]
    df = DataFrame({'序号': l1, '值': l2})
    df.to_excel('test.xlsx', sheet_name='sheet1', index=False)
    

    作者:星寂樱易李

    物联沃分享整理
    物联沃-IOTWORD物联网 » Python数据处理与Excel存储详解

    发表回复