#ods #csv #xls #command-line-tool #command-line-utilities #xls2csv

bin+lib xls2txt

命令行工具,用于将样式表(ODS 或 excel)转换为文本

6 个稳定版本

1.2.1 2023年6月5日
1.2.0 2023年3月20日
1.1.0 2022年10月29日
1.0.1 2019年12月12日
1.0.0 2019年11月11日

#688编码

每月43 次下载

Apache-2.0

18KB
169

包含 (压缩文件,7KB) tests/input.xlsx

xls2txt: 将电子表格转换为文本

目的

xls2txtxsl2csv 允许将电子表格文件转换为文本,以便与终端和命令行工具兼容(例如 diff 或 less)。尽管名称如此,它们应该可以与 excel(xls、xlsx 或 xlsb)和 OpenDocument(ods)文件一起工作。

此包提供的两个可执行文件大致以相同的方式工作,每行返回一行,用 Unix 新行符(\n)分隔,并在必要时引用字段值,它们的不同之处仅在于其 默认 字段(单元格)分隔符

  • xls2txt 使用制表符分隔单元格
  • xls2csv 使用逗号(,

制表符分隔符似乎是一个更好的默认选项,因为它更易于阅读且与各种 Unix 工具兼容。

界面

这两个工具具有相同的参数和选项,只是在默认值上有所不同

  • PATH 是要转换的电子表格文件的必填路径。

  • --sheet-s)是要转换的表。默认情况下,转换第一个表。

    sheet 可以是表的 名称,或它在工作簿中的位置(从 1 开始,尽管 0 被视为 1)。

  • --record-separator-r)是在表行之间使用的分隔符,对于两个工具默认都是 Unix 新行符。

  • --field-separatorf)是在表单元格之间使用的分隔符,对于 xsl2txt 默认是制表符,对于 xls2csv 默认是逗号。

  • --formula 指定 公式显示模式

    • 默认情况下(cached-value),公式不会显示,如果公式单元格有一个缓存的值则显示该值,否则单元格为空
    • if-empty 如果有缓存值则显示缓存值,如果没有则显示公式
    • always 总是显示公式单元格的公式,从不显示缓存的值
  • 转换后的数据写入 stdout

  • 错误信息可以写入stdout,包括在成功的情况下,例如在解析公式时发生错误且公式模式不是默认模式时,将发出错误信号,然后公式模式将被重置为默认模式

  • 如果整个转换成功,则返回0,否则返回1

    • 没有提供输入文件
    • 找不到输入文件或无法识别为有效的电子表格文件
    • 提供的记录或字段分隔符无效(它必须是一个ASCII字符)
    • 找不到指定的工作表
    • 工作表中的一个单元格出现了错误
    • 在将数据写入stdout时出现了问题

食谱

git文本转换

这允许使用git loggit diff查看电子表格文件的文本差异,而不是得到一个无用的“二进制文件不同”的消息

  1. 创建一个$HOME/.gitattributes文件,或者设置任意文件作为属性文件(git config --global core.attributesFile <filename>

  2. 在该文件中,将相关的电子表格扩展名与适当的类别(块标题)相关联

     *.ods diff=spreadsheet
     *.xls diff=spreadsheet
     *.xlsx diff=spreadsheet
     *.xlsb diff=spreadsheet
    
  3. xls2txt(或xls2csv),可能按照您的需求配置,作为差异文本转换器

     git config --global diff.spreadsheet.textconv xls2txt
    

变更日志

1.1.0

  • 添加显示公式的支持

    • 如果公式单元格没有缓存的值
    • 或者代替缓存的值

1.0.2

  • 更新依赖到最新版本,增加版本号

1.0.1

  • 切换回calamine作为0.16.1保证工作表是有序的

谢谢

  • calamine使得从电子表格文件中获取数据变得容易
  • rust-csv不是必需的,因为生成值分隔的数据相当容易(与消耗它相比),但它提供了在必要时输出将被正确引用/转义的信心

依赖项

~9MB
~215K SLoC