我有一个以字符串形式存储在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等效项
我有一个JTable被调用的transactionList,每一行代表一个Transaction,其中第一列保存实际Transaction对象,随后的每个列显示有关 的一些数据Transaction。
我不希望该Transaction对象向用户显示,因此我将其从以下位置中删除ColumnModel:
TableColumnModel cm = transactionList.getColumnModel();
cm.removeColumn(cm.getColumn(0));
transactionList.setColumnModel(cm);
Run Code Online (Sandbox Code Playgroud)
这非常有效,然后我可以Transaction使用以下方法检索所选内容:
(Transaction) transactionList.getModel().getValueAt(transactionList.getSelectedRow(), 0))
Run Code Online (Sandbox Code Playgroud)
当用户对表中的列进行排序时,问题就出现了,然后所选的行无法正确匹配。我通过更改上面的行来解决这个问题,以便我们直接从表中而不是从模型中获取所选行:
(Transaction) transactionList.getValueAt(transactionList.getSelectedRow(), 0));
Run Code Online (Sandbox Code Playgroud)
但现在 0 列不是我的隐藏Transaction对象,而只是它的第一个字段。
我也会尝试用另一种方式来解释。
在不允许对 JTable 列进行排序的情况下,这两个示例都有效:
1) 在第一列中显示 Transaction 对象(不要从 ColumnModel 中删除)
可以通过以下方式检索 Transaction 对象:
transactionList.getValueAt(transactionList.getSelectedRow(), 0));
Run Code Online (Sandbox Code Playgroud)
2) 在第一列中显示 Transaction 对象(从 ColumnModel 中删除)
可以通过以下方式检索 Transaction 对象:
transactionList.getModel().getValueAt(transactionList.getSelectedRow(), 0))
Run Code Online (Sandbox Code Playgroud)
如果我现在允许对列进行排序,#1 仍然有效。然而,方法 #2 现在将 JTable.getSelectedRow() 传递给 TableModel.getValueAt()。但这些索引不再相等,问题是 JTable 和 ColumnModel 不包含 Transaction 对象(只有 TableModel 包含)。
transactionList.getColumnCount(); …Run Code Online (Sandbox Code Playgroud) java ×2
apache-poi ×1
excel ×1
excel-vba ×1
jtable ×1
model ×1
openxml ×1
swing ×1
tablemodel ×1
vba ×1