如何防止`ssconvert`在转换前重新计算Excel文件?

Posted

技术标签:

【中文标题】如何防止`ssconvert`在转换前重新计算Excel文件?【英文标题】:How to prevent `ssconvert` recalculating Excel file before conversion? 【发布时间】:2014-04-16 04:44:50 【问题描述】:

我正在尝试将 .xlsx 文件 http://www.eia.gov/forecasts/steo/archives/mar14_base.xlsx 转换为 .csv,但似乎 .xlsx 包含链接到我没有的本地文件的公式(文件的创建者一定忘记了粘贴为值而不是公式) 所以每次我使用ssconvert 时,它都会尝试重新计算公式,但它会失败,因此我无法获取数据:

ssconvert --export-type=Gnumeric_stf:stf_assistant  -O "locale=C
format=automatic separator=, eol=unix sheet='3atab'" "STEO_m.xlsx"
"text.csv"

触发以下消息:(并且 .csv 中的值丢失)

(/usr/bin/ssconvert:14771): GLib-GObject-WARNING **: g_object_set_valist:对象类“SheetObjectImage”没有名为“样式”“7etab”的属性!BM7: 'VLOOKUP($A7,[1]oracle_allbbb!$2:$89130,Dates!BM$12+1,FALSE)' 表达式无效

我已经看到您的 ssconvert 函数中还有一个 --recalc 参数,但实际上我想做相反的事情!

ssconvert --recalc=FALSE --export-type=Gnumeric_stf:stf_assistant -O "locale=C 格式=自动分隔符=, eol=unix sheet='3atab'" "STEO_m.xlsx" "text.csv"

您有什么建议可以让我在这里找到解决方案吗?

【问题讨论】:

我无法在 Open Office 中打开文件。您确定此特定文件在级别上吗?您是否尝试过其他文件?我已经使用xlsx 包成功处理了其他文件。 看来它确实适用于任何其他 xlsx 文件。在我这边,我设法用 Libroffice Cal 打开了这个 xlsx。但是在调用 gnumeric 命令行时它不能正确读取。显然他们这次忘记正确格式化文件,并且他们在每个单元格中留下了一个公式,该公式链接到一个不可用的文档。 (这个其他文件是在他们的本地环境中)。我认为我们需要在这里告诉 gnumeric 在转换为 csv 之前不要重新计算公式。我还在努力寻找是否有这样的论点...... ssconvert(由 gnumeric 调用)有一个参数 --recalc 但我们想要反过来... 我想知道是否可以通过命令行调用OO并要求它将文件保存为csv? R 包 'gnumeric' 正是这样做的,但使用 gnumeric 而不是 OO:它使用 gnumeric 命令 'ssconvert' 将 xlsx 转换为 csv,然后使用 read.csv。见man.cx/ssconvert(1) 上次我检查时,gnumeric 有最先进的命令行功能,但实际上理论上我们可以用 OO 或 LibreOffice 做同样的事情,只要它们有正确的命令行工具。 【参考方案1】:

显然这是一个错误。它是固定的here。

【讨论】:

以上是关于如何防止`ssconvert`在转换前重新计算Excel文件?的主要内容,如果未能解决你的问题,请参考以下文章

防止在关闭屏幕时重新创建 Android 活动

即使在我重新加载页面后,如何防止已经在 J​​avascript 中启动的“onclick”功能?

Vue:编辑内容时防止在计算机列表中排序

当实际值没有改变时,防止计算与其他计算为依赖项重新计算

在 Excel 中应用自动筛选时防止重新计算函数

React - 防止 HOC 基于 props 重新计算