java poi读取跨行_POI读取excel表格,首列出现跨行表格时,读取表格数据不全解决办法...

01844a99e3e39b10e13f2c80cc7bd368.png

在POI读取表格时候。如上图表格。在一般读取时,因为A4-A8被合并,导致在读取时,只能读取到下图数据:

e9ca7db7aa70fe24b1ae79b17c04d4da.png

而很多条记录很忽略。

下面贴出groovy下处理代码:

(0..

def st = wb.getSheetAt(sheetIndex)

/*

* 遍历每一行

*/

(0..st.lastRowNum).each { rowIndex->

def row = st.getRow(rowIndex)

//储存每一行数据

def values = new String[row.lastCellNum]

/*

* 遍历每一列

*/

(0..

def cell = row.getCell(columnIndex)

if (cell != null){

values[columnIndex] = Tools.getValue(cell)

}

}

//如果该行有值,则保留

if (values.find {it != null}){

result.add(values)

}

}

原因:

因为第一列“通 识 必 修 课”出现了跨行,所以导致了A5、A6、A7、A8为null。

导致无法读取5-8行数据。

解决办法:

只要让第一行不为null 或空即可。

贴出改进后代码,请注意加粗部分。

/*

* 遍历每一个工作表

*/

(0..

def st = wb.getSheetAt(sheetIndex)

/*

* 遍历每一行

*/

(0..st.lastRowNum).each { rowIndex->

def row = st.getRow(rowIndex)

//储存每一行数据

def values = new String[row.lastCellNum]

/*

* 遍历每一列

*/

(0..

def cell = row.getCell(columnIndex)

if (cell != null){

values[columnIndex] = Tools.MARK + Tools.getValue(cell)

}

}

//如果该行有值,则保留

if (values.find {it != Tools.MARK}){

result.add(values)

}

}

Tools.MARK 是一个特殊符号,在处理时去除就ok。

修改后运行结果如下:

2fbec74ae4562ce3920275b3cbba00f2.png

可以成功读取首列出现换行的表格!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要将从txt文件读取数据表格格式输出,你可以使用Java的第三方Apache POI来实现。以下是实现的步骤: 1. 导入Apache POI 在pom.xml文件添加以下依赖: ```xml <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>4.1.2</version> </dependency> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml</artifactId> <version>4.1.2</version> </dependency> ``` 2. 读取txt文件数据 使用Java的FileReader和BufferedReader类来读取txt文件数据,并将其存储在一个二维数组。 ```java File file = new File("data.txt"); FileReader fr = new FileReader(file); BufferedReader br = new BufferedReader(fr); List<String[]> data = new ArrayList<>(); String line; while ((line = br.readLine()) != null) { String[] row = line.split(","); data.add(row); } br.close(); fr.close(); ``` 3. 创建Excel文件并写入数据 使用Apache POI的Workbook、Sheet和Row类来创建Excel文件,并将从txt文件读取数据写入到Excel文件。 ```java Workbook workbook = new XSSFWorkbook(); Sheet sheet = workbook.createSheet(); int rowNum = 0; for (String[] rowData : data) { Row row = sheet.createRow(rowNum++); int cellNum = 0; for (String cellData : rowData) { row.createCell(cellNum++).setCellValue(cellData); } } FileOutputStream outputStream = new FileOutputStream("data.xlsx"); workbook.write(outputStream); workbook.close(); outputStream.close(); ``` 4. 输出表格格式的数据 使用Apache POI的CellStyle和Font类来设置单元格的样式和字体,从而输出表格格式的数据。 ```java Sheet sheet = workbook.getSheetAt(0); CellStyle style = workbook.createCellStyle(); Font font = workbook.createFont(); font.setBold(true); style.setFont(font); for (Row row : sheet) { for (Cell cell : row) { cell.setCellStyle(style); } } FileOutputStream outputStream = new FileOutputStream("data.xlsx"); workbook.write(outputStream); workbook.close(); outputStream.close(); ``` 这样,你就可以将从txt文件读取数据表格格式输出到Excel文件了。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值