读取Excel表格以JSON形式数据输出
【摘要】 第一步先导入以下包
<dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.7</version> </dependency> <dependency> <groupId>org.apache.poi</groupId> <artifactI...
第一步先导入以下包
-
<dependency>
-
<groupId>com.alibaba</groupId>
-
<artifactId>fastjson</artifactId>
-
<version>1.2.7</version>
-
</dependency>
-
<dependency>
-
<groupId>org.apache.poi</groupId>
-
<artifactId>poi-ooxml</artifactId>
-
<version>3.13</version>
-
</dependency>
-
<dependency>
-
<groupId>org.apache.poi</groupId>
-
<artifactId>poi</artifactId>
-
<version>3.17</version>
-
</dependency>
第二步编写逻辑代码
-
import com.alibaba.fastjson.JSONArray;
-
import com.alibaba.fastjson.JSONObject;
-
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
-
import org.apache.poi.ss.usermodel.Row;
-
import org.apache.poi.ss.usermodel.Workbook;
-
import org.apache.poi.ss.usermodel.Sheet;
-
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
-
-
import java.io.FileInputStream;
-
import java.util.HashMap;
-
import java.util.Map;
-
-
-
/**
-
* @Author: 轻狂书生FS
-
* @Description: 读取Excel表格
-
* @CreateDate: 2019/3/27 18:04
-
* @Version: 1.0
-
*/
-
public class ExcelToJsonUtil {
-
-
public static void main(String[] args) {
-
ExcelToJsonUtil excelToJsonUtil = new ExcelToJsonUtil();
-
Object object = excelToJsonUtil.ExcelToJson("D:\\表格导入\\1222.xls",null,7);
-
System.out.println(object);
-
}
-
-
public JSONArray ExcelToJson(String filePath){
-
return this.ExcelToJson(filePath,null,null);
-
}
-
-
/**
-
* @Author: 轻狂书生FS
-
* @Description: 读取Excel表格以json形式返回
-
* @params filePath:文件路径,startSheet:读取第几个sheet,startRow:从第几行开始读
-
* @return
-
* @CreateDate: 2019/3/27 18:06
-
* @Version: 1.0
-
*/
-
public JSONArray ExcelToJson(String filePath,Integer startSheet,Integer startRow) {
-
// 设置默认值0
-
if (startSheet == null) {
-
startSheet = 0;
-
}
-
if (startRow == null) {
-
startRow = 0;
-
}
-
Workbook workbook = null;
-
JSONArray jsons = new JSONArray();
-
try {
-
//适配xls格式和xlsx格式
-
if (filePath.endsWith(".xls")) {
-
workbook = new HSSFWorkbook(new FileInputStream(filePath));
-
} else if (filePath.endsWith(".xlsx")) {
-
workbook = new XSSFWorkbook(new FileInputStream(filePath));
-
}
-
} catch (Exception e) {
-
e.printStackTrace();
-
}
-
Sheet sheet = workbook.getSheetAt(startSheet);
-
// 第startRow行,是表头部分
-
Row row0 = sheet.getRow(startRow);
-
Map<Integer, String> map = new HashMap<>();
-
// 将表头的值放进map里面
-
for (int i = 0; i < row0.getLastCellNum(); i++) {
-
map.put(i, row0.getCell(i).toString());
-
}
-
for (int i = startRow + 1; i < sheet.getLastRowNum(); i++) {
-
Row row = sheet.getRow(i);
-
JSONObject object = new JSONObject();
-
// 读取的行不能为空且读取的列数等于表头的列数
-
if ( row != null && map.size() == row.getLastCellNum() ) {
-
for (int j = 0; j < row.getLastCellNum(); j++) {
-
object.put(map.get(j),row.getCell(j).toString());
-
}
-
jsons.add(object);
-
}
-
}
-
return jsons;
-
}
-
}
第一次写工具类,不足之处请多多指教。谢谢阅读,欢迎转发。求关注
修改版:
如果之前的version是3.17,报错信息为:java.lang.NoSuchFieldError: RETURN_NULL_AND_BLANK
将version3.17替换为3.11即可解决问题。
文章来源: blog.csdn.net,作者:轻狂书生FS,版权归原作者所有,如需转载,请联系作者。
原文链接:blog.csdn.net/LookForDream_/article/details/88851989
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)