|
楼主 |
发表于 2014-9-26 08:29:12
|
显示全部楼层
FileInputStream in = new FileInputStream("...");//载入文档
POIFSFileSystem pfs = new POIFSFileSystem(in);
HWPFDocument hwpf = new HWPFDocument(pfs);
Range range = hwpf.getRange();//得到文档的读取范围
TableIterator it = new TableIterator(range);
// int k1=1;
//System.out.println("迭代表格开始");
//迭代文档中的表格
while (it.hasNext())
{
List<Record> recordlist = new ArrayList<Record>();
Table tb = (Table) it.next();
//迭代行,默认从1开始
for (int i = 1; i < tb.numRows(); i++)
{
TableRow tr = tb.getRow(i);
//迭代列,默认从0开始
Record re = new Record();
for (int j = 0; j < tr.numCells(); j++)
{
TableCell td = tr.getCell(j);//取得单元格
String st="";
//取得单元格的内容
for(int k=0;k<td.numParagraphs();k++)
{
Paragraph para =td.getParagraph(k);
// String s = para.text();
// st +=s+" ";
st = para.text();
} //end for
if (st!=null&&st.compareTo("")!=0) {
if(j==0)
{
re.setValue(st.trim());
}
else
if(j==1)
{
re.setDefinition(st.trim());
}
else
re.setExplanation(st.trim());
} else {
System.out.println("记录为空");
}
} //end for
recordlist.add(re);
} //end for
// System.out.println(k1);
// System.out.println(recordlist);//一行结束
// k1++;
tablelist.add(recordlist);
} //end while
} catch (Exception e) {
e.printStackTrace();
}
System.out.println(tablelist);
return tablelist;
上面是代码,直接把s一个一个打印出来发现的问题是
1
—
2
±
3
+
4
++
5
+++
125都是正常的,3和4中间少了一行隔开,另外一个出问题的地方也是一样
把记录打印出来,会发现出问题的表多了明显多了一条记录
[bean.Record@83bbd2, bean.Record@9fe17d, bean.Record@8cd8f0, bean.Record@f6ab36, bean.Record@628999, bean.Record@137ab64, bean.Record@1d55ef8]
本该只有6个,估计第三个刚好是个空,因为入库的时候的时候我有 not null 的设置,所以会有提醒,等我把not null 限制去掉,不报错了,但是也只有前几条能入库,后面正常的几条如不了库 |
|