使用GitHub管理Excel文件

8
作为这个问题的后续,我想就二进制文件(如Excel文件)和版本控制提问。
假设我想使用GitHub存储一个编程项目。由于大多数文件都是文本文件(无论语言如何),所以没有问题。
但是我也有文档。如果我将其放入GitHub项目的文件夹中怎么办?(我见过这样的项目)
我了解到git不适合此类操作,那么我该如何对Excel文件进行版本控制呢?
3个回答

7
您可以将Excel另存为.fods,这是一个常规的.ods文件,保存为扁平XML格式。由于MS Office可能不支持此格式,因此您可能需要安装Libre Office(它是免费的)。

由于.fods是常规XML,因此它可以被版本化为常规文本文件,并具有差异和(有些运气的话)甚至支持分支之间的合并。

您还可以将其他Open Document格式保存为扁平XML:

  • .fodt用于文字处理(文本)文档
  • .fods用于电子表格
  • .fodp用于演示文稿
  • .fodg用于图形

因此,如果迁移到Libre Office不成问题,那么这可能是最佳解决方案。


如果这不是一个选项,您可以考虑使用Git LFS来存储二进制文件。但是,如果文件很小并且您不经常更改它们,您可以忽略整个问题——少量小的二进制文件不会损害您的存储库。您只需要估计一下:如果您开始对1 MB二进制文件进行版本控制,并保存100个版本,则这将使您的存储库大小增加约100 MB(如果文件可以压缩,则可能更小)。您需要一个真正大的代码库才能在仅具有文本源文件的存储库中达到100 MB,因此在这种情况下,您的存储库主要由二进制文件填充。

顺便说一句:GitHub发布了一个用于测量git存储库大小的工具:git-sizer。它可能会给您一些关于存储库潜在问题的提示。


1

//FIRST RUN THIS COMMAND
//npm install xlsx jsonfile

//CHANGE INPUT FILE NAME TO sample.xlsx and OUTPUT file is data.json

var XLSX = require('xlsx'),
request = require('request');
var fs = require('fs');
var jsonfile = require('jsonfile')

var file = 'data.json'

var buf = fs.readFileSync("sample.xlsx");
var wb = XLSX.read(buf, {type:'buffer'});

console.log(wb.Sheets);

jsonfile.writeFile(file, wb.Sheets, function (err) {
  console.error(err)
})

有趣的问题。简单的回答是,“编写一些代码将您的Excel文件(.xls或.xlsx)转换为JSON文件,并将内容上传到Git。”
这个想法只适用于简单的Excel表格,而不适用于涉及大量数学和图表的复杂表格。

0
你可以使用CSV格式,它受到Microsoft办公室的支持,并且不难解析。这是一个例子:
A1,B1
C1,D1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接