[python3]Excel解析库-xlutils

打印 上一主题 下一主题

主题 1564|帖子 1564|积分 4692

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
`xlutils` 是一组用于处置惩罚 Excel 文件的 Python 库,它实际上是 `xlrd` 和 `xlwt` 的扩展,提供了额外的功能来操作 Excel 文件。`xlutils` 主要由三个部分组成:`xlutils.copy`、`xlutils.filter` 和 `xlutils.view`,它们分别用于复制和修改现有 Excel 文件、过滤数据以及检察 Excel 文件的内容。
 安装

要利用 `xlutils`,起首必要安装它。可以通过 pip 来安装最新版本:
  1. ```bash
  2. pip3 install xlutils
  3. ```
复制代码
由于 `xlutils` 依赖于 `xlrd` 和 `xlwt`,确保你也安装了这两个库(留意,对于 `.xls` 文件的支持,`xlrd` 版本应低于2.0.0,因为从2.0.0开始,`xlrd` 不再支持 `.xls` 文件):
  1. ```bash
  2. pip install xlrd<2.0.0 xlwt
  3. ```
复制代码
基本用法

  1. #### 使用 `xlutils.copy` 修改现有文件
  2. `xlutils.copy` 允许你读取一个现有的 `.xls` 文件,并创建一个可编辑的副本。然后你可以对这个副本进行修改,最后保存为新的文件或覆盖原文件。
  3. ```python
  4. import xlrd
  5. from xlutils.copy import copy
  6. # 打开现有的工作簿
  7. rb = xlrd.open_workbook('example.xls', formatting_info=True)
  8. # 创建副本
  9. wb = copy(rb)
  10. # 获取第一个工作表
  11. sheet = wb.get_sheet(0)
  12. # 修改单元格内容
  13. sheet.write(0, 0, 'Updated Value')
  14. # 保存更改到新文件
  15. wb.save('updated_example.xls')
  16. ```
  17. #### 使用 `xlutils.filter` 过滤数据
  18. `xlutils.filter` 提供了一种机制,可以让你通过定义过滤器来自定义处理 Excel 文件的方式。例如,你可以编写一个过滤器来移除空白行或应用特定的格式化规则。
  19. ```python
  20. from xlutils.filter import process, XLRDReader, XLWTWriter
  21. from xlrd import open_workbook
  22. from xlwt import Workbook
  23. def remove_blank_rows(record):
  24.     if record.name == 'row':
  25.         if not any(cell.value for cell in record.cells):
  26.             return False
  27.     return True
  28. # 打开现有的工作簿
  29. book = open_workbook('example.xls')
  30. # 设置输入输出处理器
  31. process(
  32.     XLRDReader(book, 'example.xls'),
  33.     XLWTWriter(),
  34.     sheet_records=[remove_blank_rows]  # 应用过滤器
  35. )
  36. # 保存结果到新文件
  37. writer.save('filtered_example.xls')
  38. ```
  39. #### 使用 `xlutils.view` 查看文件内容
  40. `xlutils.view` 提供了一些简单的工具来查看 Excel 文件的内容,主要用于调试目的。例如,它可以将 Excel 表格转换为 HTML 格式以便在浏览器中查看。
  41. ```python
  42. from xlutils.view import view
  43. # 打开现有的工作簿并查看其内容
  44. view('example.xls')
  45. ```
  46. ### 注意事项
  47. - `xlutils` 只适用于 `.xls` 文件格式。如果你需要处理 `.xlsx` 文件,请考虑使用其他库如 `openpyxl` 或 `XlsxWriter`。
  48. - 由于 `xlutils` 依赖于 `xlrd` 和 `xlwt`,而这些库已经不再积极维护,因此对于现代项目来说,可能更推荐使用更新的库来进行 Excel 文件的操作。
  49. - 在处理较大文件时,`xlutils` 可能会遇到性能问题,因为它需要将整个文件加载到内存中进行处理。
  50. ### 示例:完整代码示例
  51. 以下是一个完整的例子,演示了如何使用 `xlutils` 修改现有的 `.xls` 文件并在其中添加新的数据:
  52. ```python
  53. import xlrd
  54. from xlutils.copy import copy
  55. def update_excel_file(input_file, output_file):
  56.     # 打开现有的工作簿
  57.     rb = xlrd.open_workbook(input_file, formatting_info=True)
  58.     # 创建副本
  59.     wb = copy(rb)
  60.     # 获取第一个工作表
  61.     sheet = wb.get_sheet(0)
  62.     # 添加新数据
  63.     new_data = [
  64.         ['New Data 1', 'Value 1'],
  65.         ['New Data 2', 'Value 2']
  66.     ]
  67.     start_row = sheet.nrows  # 获取当前行数以确定插入位置
  68.     for row_index, row_data in enumerate(new_data, start=start_row):
  69.         for col_index, value in enumerate(row_data):
  70.             sheet.write(row_index, col_index, value)
  71.     # 保存更改到新文件
  72.     wb.save(output_file)
  73. if __name__ == "__main__":
  74.     input_file = 'example.xls'
  75.     output_file = 'updated_example.xls'
  76.     update_excel_file(input_file, output_file)
  77. ```
复制代码
总结
`xlutils` 是一个有用的工具集,特别适合那些必要频繁读取和修改 `.xls` 文件的项目。然而,考虑到 `xlrd` 和 `xlwt` 的范围性及其缺乏活泼维护的状态,在选择工具时应该权衡项目的长期需求和技能栈的选择。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

tsx81429

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表