POI解析Excel

 package com.hw.importdata;

 

import java.io.FileInputStream;

import java.util.ArrayList;

import java.util.List;

 

import org.apache.poi.hssf.usermodel.HSSFCell;

import org.apache.poi.hssf.usermodel.HSSFCellStyle;

import org.apache.poi.hssf.usermodel.HSSFDateUtil;

import org.apache.poi.hssf.usermodel.HSSFFont;

import org.apache.poi.hssf.usermodel.HSSFRow;

import org.apache.poi.hssf.usermodel.HSSFSheet;

import org.apache.poi.hssf.usermodel.HSSFWorkbook;

import org.apache.poi.poifs.filesystem.POIFSFileSystem;

 

 

public class ReadExcel {

private List<ElData> list=new ArrayList<ElData>();

public void readExcel(String filePath){ 

try {

POIFSFileSystem fs = new POIFSFileSystem(new FileInputStream(

filePath)); 

// 创建工作簿

HSSFWorkbook workBook = new HSSFWorkbook(fs);

/**

* 获得Excel中工作表个数

*/

System.out.println("工作表个数 :" + workBook.getNumberOfSheets() );

for (int i = 0; i < workBook.getNumberOfSheets(); i++) {

// 创建工作表

HSSFSheet sheet = workBook.getSheetAt(i);

int rows = sheet.getPhysicalNumberOfRows(); // 获得行数

if (rows > 0) {

sheet.getMargin(HSSFSheet.TopMargin);

for (int r = 0; r < rows; r++) { // 行循环

HSSFRow row = sheet.getRow(r);

if (row != null) {

int cells = row.getLastCellNum();// 获得列数

for (short c = 0; c < cells; c++) { // 列循环

HSSFCell cell = row.getCell(c);

if (cell != null) {

String value=getValue(cell);

System.out.println("第"+r+"行 "+"第"+c+"列:"+value); 

}

}

}

}

}

//查询合并的单元格

for (i = 0; i < sheet.getNumMergedRegions(); i++){

    System.out.println("第"+i+"个合并单元格");

       Region region = sheet.getMergedRegionAt(i);

       int row=region.getRowTo()-region.getRowFrom()+1;

int col=region.getColumnTo()-region.getColumnFrom()+1;

System.out.println("起始行:"+region.getRowFrom());

System.out.println("起始列:"+region.getRowTo());

System.out.println("所占行:"+row);

System.out.println("所占列:"+col);

   } 

}

} catch (Exception ex) {

ex.printStackTrace();

}

}

public String getValue(HSSFCell cell){

String value = "";

switch (cell.getCellType()) {

case HSSFCell.CELL_TYPE_NUMERIC: // 数值型

if (HSSFDateUtil

.isCellDateFormatted(cell)) {

// 如果是date类型则 ,获取该cell的date值

value = HSSFDateUtil.getJavaDate(

cell.getNumericCellValue())

.toString();

} else {// 纯数字

 

value = String.valueOf(cell

.getNumericCellValue());

}

break;

/* 此行表示单元格的内容为string类型 */

case HSSFCell.CELL_TYPE_STRING: // 字符串型

value = cell.getRichStringCellValue()

.toString();

break;

case HSSFCell.CELL_TYPE_FORMULA:// 公式型

// 读公式计算值

value = String.valueOf(cell

.getNumericCellValue());

if (value.equals("NaN")) {// 如果获取的数据值为非法值,则转换为获取字符串

 

value = cell

.getRichStringCellValue()

.toString();

}

// cell.getCellFormula();读公式

break;

case HSSFCell.CELL_TYPE_BOOLEAN:// 布尔

value = " "

+ cell.getBooleanCellValue();

break;

/* 此行表示该单元格值为空 */

case HSSFCell.CELL_TYPE_BLANK: // 空值

value = "";

break;

case HSSFCell.CELL_TYPE_ERROR: // 故障

value = "";

break;

default:

value = cell.getRichStringCellValue()

.toString();

}

return value;

}

public static void main(String args[]){

ReadExcel im=new ReadExcel();

im.readExcel("D:/平顶山谐波数据2008.12.xls");

}

}

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
这是一个简单的Spring Boot整合POI解析Excel的示例代码: 首先,需要在pom.xml文件中添加POI的依赖: ```xml <dependencies> <!-- Spring Boot Starter --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> </dependency> <!-- Apache POI --> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>4.1.2</version> </dependency> </dependencies> ``` 接下来,创建一个Controller类来处理Excel文件的上传和解析: ```java import org.apache.poi.ss.usermodel.*; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.multipart.MultipartFile; import java.io.IOException; import java.util.ArrayList; import java.util.List; @Controller public class ExcelController { @PostMapping("/upload") public ResponseEntity<List<String>> uploadExcel(@RequestParam("file") MultipartFile file) { List<String> data = new ArrayList<>(); try { Workbook workbook = WorkbookFactory.create(file.getInputStream()); Sheet sheet = workbook.getSheetAt(0); for (Row row : sheet) { for (Cell cell : row) { data.add(cell.toString()); } } workbook.close(); } catch (IOException e) { e.printStackTrace(); return new ResponseEntity<>(HttpStatus.INTERNAL_SERVER_ERROR); } return new ResponseEntity<>(data, HttpStatus.OK); } } ``` 在这个示例中,我们使用`WorkbookFactory`来创建Workbook对象,然后获取第一个Sheet,并遍历所有的行和单元格来获取数据。最后,将解析的数据返回给客户端。 注意:这里只是一个简单的示例,实际项目中可能需要根据Excel的具体格式进行更复杂的解析逻辑。 希望以上示例能够帮助你理解如何在Spring Boot中整合POI进行Excel解析
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值