为什么 Spreadsheet::XLSX::Utility2007 的 xls2csv 四舍五入到小数点后两位?

发布于 2024-07-17 22:54:54 字数 275 浏览 8 评论 0原文

我正在编写一个 Perl/Tk 脚本,它使用 Spreadsheet::Read 模块中的 ss2tk 示例脚本来显示 Excel 工作表。 它不会四舍五入两位小数,而是来自 Spreadsheet::XLSX::Utility2007 四舍五入到小数点后两位。 为什么? 我正在尝试使用第二个函数作为我的程序的一项功能,以将显示的工作表转换为 CSV 文件。

I am writing a Perl/Tk script which displays Excel worksheets using the ss2tk example script from the Spreadsheet::Read module. It does not round off two decimal places but the function from Spreadsheet::XLSX::Utility2007 does round off to two decimal places. Why? I'm trying to use that second function as a feature of my program to offer conversion of the displayed worksheets to CSV files.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

浅笑轻吟梦一曲 2024-07-24 22:54:54

我看到您能够在 得到答案在 PerlMonks 的帮助下="http://www.perlmonks.org/?node_id=734666" rel="nofollow noreferrer">frieduck (与 friedo?),所以我为了大家的利益将其链接起来。

总而言之,基本上事实证明 Spreadsheet::XLSX::Utility2007 在检索单元格值时自动应用小数点后两位格式。 提出的两种解决方法是:

  1. 更改模块生成单元类型的方式(使其处理它们全部默认)通过修改 XLSX 内部结构。
  2. 更改模块处理从电子表格加载的单元格的方式(将它们视为具有未格式化的单元格)原始电子表格中的值),也可以通过修改内部结构来实现。

无论哪种方式,还提到您可能最好定义一个 local 子程序来执行修改后的行为,这样就不会因更改模块而导致任何令人讨厌的意外。

I see you were able to get an answer over at PerlMonks with the help of frieduck (any relation to friedo?), so I'm linking it up for the benefit of SO folks.

To summarize, basically it turned out that the internals of Spreadsheet::XLSX::Utility2007 were automatically applying a 2-decimal place format when retrieving the cell values. The two workarounds proposed were:

  1. Changing the way the module generates cell types (make it treat them all as defaults) by modifying XLSX internals.
  2. Changing the way the module treats the cells loaded from the spreadsheet (treating them as having the unformatted value from the original spreadsheet), also by modifying internals.

Either way, it was also mentioned that you'd probably be best off defining a local sub to do perform the modified behavior, so that there aren't any nasty surprises resulting from changing the module in place.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文