如何防止`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文件?的主要内容,如果未能解决你的问题,请参考以下文章