【发布时间】:2018-02-15 15:34:34
【问题描述】:
我正在处理一个很大的 excel 文件,我必须使用 apache 事件库来解析它。所以现在我能够以某种方式获取每个单元格的每个单元格的值和内容,并将它们存储在一个Struingbuilder.所以现在我的目标是以这样的方式生成文本文件,以便每一行和每一列都看起来像源 excel 文件。我给出了excel文件结构的图片。
XXXXXX XXXXXXXXXXXX XXXXXXXX XXXXXXXXXXX XXXXXXXXX
1 DDD FFFFFF KKKK LLLL
2 KKK FFFFF KKK LLLL
.............................
9 KKK HHH LL JJJ
所以我得到的文件内容为
public void endElement(String uri, String localName, String name)
throws SAXException {
StringBuilder row = new StringBuilder();
// Process the last contents as required.
// Do now, as characters() may be called more than once
if(nextIsString) {
int idx = Integer.parseInt(lastContents);
lastContents = new XSSFRichTextString(sst.getEntryAt(idx)).toString();
nextIsString = false;
}
// v => contents of a cell
// Output after we've seen the string contents
if(name.equals("v")) {
//System.out.println(lastContents);
if(!lastContents.isEmpty() )
row.append(lastContents);
/*if(lastContents == null) {
row.append("");
}else {
row.append(SEPARATOR);
}*/
aMethodToParseRow(row);
try {
FileUtils.write(new File("D:\\BM_Amortization_.txt"), formatListToString(pickUpExcelValues));
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
private void aMethodToParseRow(StringBuilder row) {
StringBuilder sb = new StringBuilder();
StringBuilder sb1 = new StringBuilder();int count =0;
if(!(row.toString().equals("Loan details") || row.toString().equals("Fixed") || row.toString().equals("3m")|| row.toString().equals("ACT/364")||row.toString().equals("Amounts * EUR 1")||row.toString().equals("Floating") ||row.toString().equals("ACT/365")||row.toString().equals("43100")||row.toString().toString().equals("6m")||row.toString().toString().equals("ACT/ACT")||row.toString().equals("General information")||row.toString().equals("FA - Reporting")||row.toString().equals("Solvency II Reporting")||row.toString().equals("1y")||row.toString().equals("30/360") )) {
count++;
if(count>0 && count<24)
sb.append(row.toString());
System.out.println(sb.toString());
}
count=0;
}
所以该文件包含 24 列,所以我可以有一个代码,将每个单元格内容放在Stringbuilder 中的 24 索引之后的新行吗?
就像 Stringbuilder 包含所有 hedaers 和数据一样,从一开始,当它到达 Stringbuilder 中的第 24 个数字时,它将用分隔符将值分成一个新行。
【问题讨论】:
-
任何人的想法??
标签: java excel string stringbuilder