文章目录pyexcel-xlsx让你关注数据本身而非 xlsx 格式核心用法内存读写分页读取作为 pyexcel 插件已知限制小结pyexcel-xlsx让你关注数据本身而非 xlsx 格式pyexcel-xlsx 是一个轻量级的 xlsx/xlsm 读写封装库在 GitHub 上获得了 121 个 Star如果你用 Python 处理过 Excel 文件大概率接触过 openpyxl。openpyxl 功能全面但 API 偏底层每次读写都要关心工作簿、工作表、单元格这些概念。pyexcel-xlsx 在 openpyxl 之上做了一层封装利用 openpyxl 的 read_only 和 write_only 模式把 xlsx 文件的读写简化成了字典操作。pyexcel-xlsx 属于 pyexcel 生态的一个组件。pyexcel 为多种表格格式提供统一 APIpyexcel-xlsx 负责其中 xlsx 和 xlsm 格式的读写。安装 pyexcel 0.2.2 以上版本后pyexcel-xlsx 会自动注册不需要显式 import。核心用法pyexcel-xlsx 的 API 围绕两个函数展开get_data 用于读取save_data 用于写入。数据在两者之间以 Python 字典流转字典的键是工作表名称值是二维列表。写入一个 xlsx 文件from pyexcel_xlsx import save_data from collections import OrderedDict data OrderedDict() data.update({Sheet 1: [[1, 2, 3], [4, 5, 6]]}) data.update({Sheet 2: [[row 1, row 2, row 3]]}) save_data(your_file.xlsx, data)读取同样简洁from pyexcel_xlsx import get_data data get_data(your_file.xlsx)返回的 data 结构与写入时一致一个 dict 对应整个工作簿每个 key 对应一张工作表value 是行列组成的二维数组。内存读写pyexcel-xlsx 支持从 BytesIO 对象读写这对 Web 场景很实用。文件上传时可以从 request.FILES 直接读取文件下载时把数据写入 BytesIO 再返回给客户端from io import BytesIO from pyexcel_xlsx import save_data io BytesIO() save_data(io, data) # 将 io 传给 HTTP response 触发下载读取上传文件data get_data(uploaded_file_io)整个过程不需要落地到磁盘纯内存操作。分页读取处理大文件时pyexcel-xlsx 提供了按行列分页读取的能力。四个参数控制读取范围start_row、row_limit、start_column、column_limitpartial_data get_data(huge_file.xlsx, start_row2, row_limit3)限定列范围partial_data get_data(huge_file.xlsx, start_column1, column_limit2)行列可以组合使用按需加载数据片段避免一次性把大文件全部读入内存。作为 pyexcel 插件如果项目用了 pyexcel 统一接口集成更简单。安装 pyexcel-xlsx 后无需显式 importimport pyexcel as pe sheet pe.get_book(file_nameyour_file.xlsx) sheet.save_as(another_file.xlsx)文件上传场景中用 file_type 和 file_content 参数处理二进制内容with open(file.xlsx, rb) as f: content f.read() r pe.get_book(file_typexlsx, file_contentcontent)已知限制pyexcel-xlsx 定位是数据读写不支持字体、颜色和图表。auto_detect_int 参数在 Python 3 下无效因为 openpyxl 默认将整数检测为 int 类型。skip_hidden_row_and_column 参数启用后无法使用 read_only 模式会有性能损失。小结pyexcel-xlsx 的定位很明确它是 openpyxl 之上的薄封装层把 xlsx 读写简化为对 Python 字典的操作。如果你只需要提取或写入数据而不需要格式控制它的 API 体积和上手成本都会低于直接使用 openpyxl。作为 pyexcel 生态的组成部分它也能与 pyexcel 无缝配合用统一接口处理多种表格格式。或写入数据而不需要格式控制它的 API 体积和上手成本都会低于直接使用 openpyxl。作为 pyexcel 生态的组成部分它也能与 pyexcel 无缝配合用统一接口处理多种表格格式。
pyexcel-xlsx:让你关注数据本身,而非 xlsx 格式
文章目录pyexcel-xlsx让你关注数据本身而非 xlsx 格式核心用法内存读写分页读取作为 pyexcel 插件已知限制小结pyexcel-xlsx让你关注数据本身而非 xlsx 格式pyexcel-xlsx 是一个轻量级的 xlsx/xlsm 读写封装库在 GitHub 上获得了 121 个 Star如果你用 Python 处理过 Excel 文件大概率接触过 openpyxl。openpyxl 功能全面但 API 偏底层每次读写都要关心工作簿、工作表、单元格这些概念。pyexcel-xlsx 在 openpyxl 之上做了一层封装利用 openpyxl 的 read_only 和 write_only 模式把 xlsx 文件的读写简化成了字典操作。pyexcel-xlsx 属于 pyexcel 生态的一个组件。pyexcel 为多种表格格式提供统一 APIpyexcel-xlsx 负责其中 xlsx 和 xlsm 格式的读写。安装 pyexcel 0.2.2 以上版本后pyexcel-xlsx 会自动注册不需要显式 import。核心用法pyexcel-xlsx 的 API 围绕两个函数展开get_data 用于读取save_data 用于写入。数据在两者之间以 Python 字典流转字典的键是工作表名称值是二维列表。写入一个 xlsx 文件from pyexcel_xlsx import save_data from collections import OrderedDict data OrderedDict() data.update({Sheet 1: [[1, 2, 3], [4, 5, 6]]}) data.update({Sheet 2: [[row 1, row 2, row 3]]}) save_data(your_file.xlsx, data)读取同样简洁from pyexcel_xlsx import get_data data get_data(your_file.xlsx)返回的 data 结构与写入时一致一个 dict 对应整个工作簿每个 key 对应一张工作表value 是行列组成的二维数组。内存读写pyexcel-xlsx 支持从 BytesIO 对象读写这对 Web 场景很实用。文件上传时可以从 request.FILES 直接读取文件下载时把数据写入 BytesIO 再返回给客户端from io import BytesIO from pyexcel_xlsx import save_data io BytesIO() save_data(io, data) # 将 io 传给 HTTP response 触发下载读取上传文件data get_data(uploaded_file_io)整个过程不需要落地到磁盘纯内存操作。分页读取处理大文件时pyexcel-xlsx 提供了按行列分页读取的能力。四个参数控制读取范围start_row、row_limit、start_column、column_limitpartial_data get_data(huge_file.xlsx, start_row2, row_limit3)限定列范围partial_data get_data(huge_file.xlsx, start_column1, column_limit2)行列可以组合使用按需加载数据片段避免一次性把大文件全部读入内存。作为 pyexcel 插件如果项目用了 pyexcel 统一接口集成更简单。安装 pyexcel-xlsx 后无需显式 importimport pyexcel as pe sheet pe.get_book(file_nameyour_file.xlsx) sheet.save_as(another_file.xlsx)文件上传场景中用 file_type 和 file_content 参数处理二进制内容with open(file.xlsx, rb) as f: content f.read() r pe.get_book(file_typexlsx, file_contentcontent)已知限制pyexcel-xlsx 定位是数据读写不支持字体、颜色和图表。auto_detect_int 参数在 Python 3 下无效因为 openpyxl 默认将整数检测为 int 类型。skip_hidden_row_and_column 参数启用后无法使用 read_only 模式会有性能损失。小结pyexcel-xlsx 的定位很明确它是 openpyxl 之上的薄封装层把 xlsx 读写简化为对 Python 字典的操作。如果你只需要提取或写入数据而不需要格式控制它的 API 体积和上手成本都会低于直接使用 openpyxl。作为 pyexcel 生态的组成部分它也能与 pyexcel 无缝配合用统一接口处理多种表格格式。或写入数据而不需要格式控制它的 API 体积和上手成本都会低于直接使用 openpyxl。作为 pyexcel 生态的组成部分它也能与 pyexcel 无缝配合用统一接口处理多种表格格式。