PHP-Xlswriter
  • Why use xlswriter
  • English
    • Install
      • Env requirements
      • PECL (recommend)
      • Mac
      • Alpine
      • Ubuntu
      • Windows
    • Quick start
      • Create file
      • Read file
    • Read file
      • Worksheet list
      • Read file (full amount)
      • Read file (cursor)
      • Ignore blank cells
      • Ignore blank lines
      • Global row read type
      • Cell callback mode read
      • Read file by data type
      • Data type constant
    • Chart
      • Chart type constant
      • Data input
      • Doughnut chart
      • Area chart
      • Histogram chart
      • Bar chart
    • Cell
      • Insert text
      • Insert link
      • Insert formula
      • Insert date
      • Insert local image
      • Automatic filtering
      • Freeze Panes
      • Merge Cells
      • Row cell style
      • Column cell style
    • Memory model
      • Export - Fixed memory mode
    • Worksheet
      • Create worksheet
      • Switch worksheet
      • Gridlines
      • Zoom
      • Hide the current worksheet
      • Set the current worksheet as the first worksheet
    • Style
      • Combination style
      • Gloabl default style
    • Download
    • Style list
      • Italic
      • Align
      • Text deletion (text middle line)
      • Underline
      • Text wrap
      • Text color
      • Text size
      • Bold
      • Cell border
      • Border style constant
      • Background color
      • Color constant
      • Font
      • Number format
    • CSV
      • XLSX to CSV - Normal mode
      • XLSX to CSV - Callback function mode
    • Printed
      • Set print orientation-landscape
      • Set print orientation-portrait
    • Assistant functions
      • Column index transform
      • Get version
      • Get author
  • Project recommendation
  • 中文简体
    • 安装
      • 环境要求
      • PECL(推荐)
      • Mac
      • Ubuntu
      • Alpine
      • Windows
      • Docker多阶构建
    • 快速上手
      • 导出文件
      • 读取文件
      • 手动销毁资源
    • 读取文件
      • 工作表列表
      • 全量读取
      • 游标读取
      • 跳过指定行
      • 忽略空白单元格
      • 忽略空白行
      • 忽略跳过动作常量
      • 设置全局读取类型
      • 单元格回调模式读取
      • 数据类型读取
      • 数据类型常量
    • 图表
      • 图表类型常量
      • 填充数据
      • 圆环图
      • 面积图
      • 直方图
      • 条形图
    • 数据验证
      • 下拉列表
      • 范围约束
      • 大于约束
    • 单元格
      • 插入文字
      • 插入链接
      • 插入公式
      • 插入日期
      • 插入本地图片
      • 自动过滤
      • 冻结单元格
      • 合并单元格
      • 行单元格样式
      • 列单元格样式
    • 内存模式
      • 导出 - 固定内存模式
    • 工作表
      • 创建工作表
      • 切换工作表
      • 检查工作表是否存在
      • 网格线
      • 缩放
      • 隐藏当前工作表
      • 设置当前工作表为第一个工作表
    • 样式
      • 组合样式
      • 全局默认样式
    • 锁定保护
      • 密码保护
      • 解除保护
    • 打印
      • 纸张大小
      • 纸张方向
      • 纸张边距
      • 缩放比例
      • 设置打印方向 - 横向
      • 设置打印方向 - 纵向
    • 下载
    • 样式列表
      • 斜体
      • 对齐
      • 文本删除(文本中间划线)
      • 下划线
      • 文本换行
      • 文本颜色
      • 文本字号
      • 多样式文本
      • 粗体
      • 单元格边框
      • 边框样式常量
      • 背景颜色
      • 颜色常量
      • 字体
      • 数字格式化
    • CSV
      • XLSX转为CSV - 常规模式
      • XLSX转为CSV - 回调模式
    • 辅助函数
      • 列标字符转化
      • 设置当前写入行号
      • 获取当前写入行号
      • 获取扩展版本
      • 查看作者信息
    • 异常列表
      • 异常码列表
    • 常见问题
      • xls文件通过excel转成xlsx格式后无法读取
  • 项目推荐
Powered by GitBook
On this page
  • 为什么内存优化模式内存占用少?
  • 为什么我本地导出比评测慢?

Was this helpful?

中文简体

为什么内存优化模式内存占用少?

当开启内存优化模式时,单元格将根据行落地磁盘,内存中只保留最新一行数据,所以内存优化模式最大内存占用等于数据最多一行的内存用量。

源码解析:

if (!self->optimize) {
    // 未开启内存优化模式......
} else {
    if (row_num < self->optimize_row->row_num) {
        // 当请求行号小于内存行号,无法获取行数据,故无法进行折返写入。
        return NULL;
    } else if (row_num == self->optimize_row->row_num) {
        // 获取当前行信息,提供进行单元格写入。
        return self->optimize_row;
    } else {
        // 当请求行号大于内存行号,则将内存中的行数据刷入磁盘。
        // 重置内存中行数据,并赋予最新行号。
        lxw_worksheet_write_single_row(self);
        row = self->optimize_row;
        row->row_num = row_num;
        return row;
    }
}

为什么我本地导出比评测慢?

写入流程:创建临时文件 -> 写入XML文件 -> 结束写入 -> 分段读取临时文件并写入压缩文件;

从写入流程看,可将 xlsx 文件写入大致分为两大块,XML写入 和 打包压缩文件。虽然写入XML文件这里可以利用操作系统缓冲区, 减少磁盘IO次数,但最后读取临时文件并写入压缩文件时存在将磁盘中的数据分段重新载入内存,并再次写入压缩文件,在这个过程中对主机的硬盘读取性能以及CPU 处理压缩算法性能密切相关。

PreviousProject recommendationNext安装

Last updated 4 years ago

Was this helpful?