为什么 Spreadsheet::XLSX::Utility2007 的 xls2csv 四舍五入到小数点后两位?
我正在编写一个 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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我看到您能够在 得到答案在 PerlMonks 的帮助下="http://www.perlmonks.org/?node_id=734666" rel="nofollow noreferrer">frieduck (与 friedo?),所以我为了大家的利益将其链接起来。
总而言之,基本上事实证明 Spreadsheet::XLSX::Utility2007 在检索单元格值时自动应用小数点后两位格式。 提出的两种解决方法是:
无论哪种方式,还提到您可能最好定义一个
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:
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.