【发布时间】:2014-11-06 20:32:04
【问题描述】:
我有一个电话号码作为字符串存储在 Excel 中,Excel 文件已成功创建并且数据没有错误,但每个电话号码旁边都有一个“数字存储为文本”错误。
我在网上看到我应该使用 excel 中包含的特殊电话号码格式或自定义 000-000-0000 格式。我可以使用 excel 程序设置这些,但不能从我的 Java 代码中设置。
我四处寻找有关 setCellType 和 DataFormat 的信息,但我认为 CellType 必须是 String,而且我看不出如何将 DataFormat 用于除日期之外的任何内容。
我也看过 DataFormatter,但我不明白如何使用它来存储数据。看起来它只是为了帮助读取数据。 http://poi.apache.org/apidocs/org/apache/poi/ss/usermodel/DataFormatter.html
我该如何执行以下任一操作?
1) 将单元格标记为“忽略错误”,以忽略“数字存储为文本”错误
2) 利用内置的 Excel 单元格格式“特殊> 电话号码”
对于 1) 似乎有一个标志通过保存和关闭文件持续存在,我不知道如何使用 POI 编辑或查看它。有一篇关于它的帖子:
excel 文档的第 669 页和第 670 页涵盖了 FeatFormulaErr2,它是举行 在 FeatRecord 共享功能中,理论上允许您存储 事实上,单元格区域应该忽略“数字作为文本”
我们还有两个测试文件,一个带有警告,一个带有警告 关闭 - 46136-NoWarnings.xls 和 46136-WithWarnings.xls 。我没有创造 但是他们!
尼克 http://mail-archives.apache.org/mod_mbox/poi-user/201003.mbox/%3C27823222.post@talk.nabble.com%3E
看来这可以在 VBA 中使用cell.Errors.Item(xlNumberAsText).Ignore = True 完成,但似乎没有 POI 的等价物
【问题讨论】:
-
你想要数字还是000-000-0000这种格式?
-
理想的标准 excel 电话号码格式:“(###) ###-####”。数字似乎不是去这里的方式,因为电话号码实际上是一个字符串(从不进行代数操作)
-
同意。但将其设为数字可确保您只在电话字段中输入数字而不是字母
-
我可以在我的 Java 代码中测试这一点,我宁愿一个字母出现在输入错误的数字中,也不愿通过将字符串单元格更改为数字单元格来破坏整个数字
-
写你的 1) 选项:这似乎是定期从 Apache POI 请求的,但还不支持,afaict。请参阅this answer 了解更多信息。
标签: java excel apache-poi openxml vba