Ron*_*Ron 5 java excel vba openxml excel-vba apache-poi
我有一个以字符串形式存储在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等效项
我已经弄清楚如何实现 #2) 利用内置的 Excel 单元格格式“特殊 > 电话号码”
Excel 中的电话号码存储为CELL_TYPE_NUMERIC,而不是CELL_TYPE_STRING
try {
row.createCell(0).setCellValue(Long.parseLong(aNumericOnlyPhoneNumberString));
} catch (NumberFormatException e) {
row.createCell(0);
}
CellStyle phoneNumberStyle = wb.createCellStyle();
phoneNumberStyle.setDataFormat(wb.createDataFormat().getFormat("(000) 000-0000"));
row.getCell(0).setCellStyle(phoneNumberStyle);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3579 次 |
| 最近记录: |