poi写入excel求助
我有三个网页table的数据要写入到excel里面,排成两列,第一列两个table,第二列一个table。写入的思路是,每读取一个<tr>的数据就create一个row,知道第一列的两个table全写入完毕,然后再写入第三个table,此时把原来的rowNum从新赋予4,目的是从第二列的开头写入,然后再给row从第8个cell开始写入,目的是为了排成两列。
预期的结果是这样的
但是运行之后的结果却是如图这样的
我把被写入数据cell的位置和内容都打印出来,结果是和预期的布局一样,但是实际上却没有达到那种效果
于是我单独打印第一列和第二列的内容,各列数据位置都正常
所以我觉得是“此时把原来的rowNum从新赋予4,目的是从第二列的开头写入,然后再给row从第8个cell开始写入,目的是为了排成两列。”这里出现了问题。但是为什么自己没有检查出来,希望给我帮忙看看
下面是我贴出的代码
try {
File input = new File("C:/Users/Administrator/Desktop/finance.html");
Document doc = Jsoup.parse(input, "UTF-8");
// 提取出所有的编号
Elements panels = doc.getElementsByClass("panel-default");
int rowNum = 4; //表格开头预留四行,为了填写标题
int tableNum = 1;
for (Element panel : panels) {
Elements table = panel.getElementsByTag("table");
if(table.html().length() != 0){
int offSet = 0;
if(tableNum == 1){
}else if(tableNum == 3){
offSet = 8;
rowNum =4;
}else if(tableNum == 4){
offSet = 16;
}
Elements panelHeader = panel.getElementsByClass("panel-heading");
panelHeader.text();
Elements thead = table.select("thead");
Elements tbody = table.select("tbody");
Elements ths = thead.select("th");
//创建填写表格头信息行
if(sheet.getRow(rowNum) == null){
row = sheet.createRow(rowNum);
}
//填写表格头信息
int i=0;
for (Element th : ths){
Cell cell = null;
if(row.getCell(i + offSet) == null){
cell = row.createCell(i + offSet);
}else{
cell = row.getCell(i + offSet);
}
cell.setCellValue(th.text());
i++;
}
//开辟表格标题行,并填写标题
CellRangeAddress region = new CellRangeAddress(rowNum-2, rowNum-1, 0 + offSet, i-1 + offSet);
sheet.addMergedRegion(region);
row = sheet.createRow(rowNum-2);
Cell cell1 = null;
cell1 = row.createCell(0 + offSet);
cell1.setCellValue(panelHeader.text());
//创建表格内容行,并填写内容
Elements trs = tbody.select("tr");
for (Element tr : trs) {
//先创建内容行
if(sheet.getRow(++rowNum) == null){
row = sheet.createRow(rowNum);
}
//填写内容
Elements tds = tr.select("td");
int j = 0;
for (Element td : tds){
Cell cell = null;
if(row.getCell(j + offSet) == null){
System.out.println("body cell 不存在");
cell = row.createCell(j + offSet);
}else{
System.out.println("body cell 存在");
cell = row.getCell(j + offSet);
}
if(isNumeric(td.text()) || isDouble(td.text())){
cell.setCellValue(Double.valueOf(td.text()));
}else{
cell.setCellValue(td.text());
}
j++;
}
}
//给表格与表格预留上下四个间隔
rowNum = rowNum + 5;
++tableNum;
}
}
}
补充:Java , Java相关