读取Excel表格以JSON形式数据输出

举报
轻狂书生FS 发表于 2020/12/02 22:36:54 2020/12/02
【摘要】  第一步先导入以下包 <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.7</version> </dependency> <dependency> <groupId>org.apache.poi</groupId> <artifactI...

 第一步先导入以下包


  
  1. <dependency>
  2. <groupId>com.alibaba</groupId>
  3. <artifactId>fastjson</artifactId>
  4. <version>1.2.7</version>
  5. </dependency>
  6. <dependency>
  7. <groupId>org.apache.poi</groupId>
  8. <artifactId>poi-ooxml</artifactId>
  9. <version>3.13</version>
  10. </dependency>
  11. <dependency>
  12. <groupId>org.apache.poi</groupId>
  13. <artifactId>poi</artifactId>
  14. <version>3.17</version>
  15. </dependency>

第二步编写逻辑代码


  
  1. import com.alibaba.fastjson.JSONArray;
  2. import com.alibaba.fastjson.JSONObject;
  3. import org.apache.poi.hssf.usermodel.HSSFWorkbook;
  4. import org.apache.poi.ss.usermodel.Row;
  5. import org.apache.poi.ss.usermodel.Workbook;
  6. import org.apache.poi.ss.usermodel.Sheet;
  7. import org.apache.poi.xssf.usermodel.XSSFWorkbook;
  8. import java.io.FileInputStream;
  9. import java.util.HashMap;
  10. import java.util.Map;
  11. /**
  12. * @Author: 轻狂书生FS
  13. * @Description: 读取Excel表格
  14. * @CreateDate: 2019/3/27 18:04
  15. * @Version: 1.0
  16. */
  17. public class ExcelToJsonUtil {
  18. public static void main(String[] args) {
  19. ExcelToJsonUtil excelToJsonUtil = new ExcelToJsonUtil();
  20. Object object = excelToJsonUtil.ExcelToJson("D:\\表格导入\\1222.xls",null,7);
  21. System.out.println(object);
  22. }
  23. public JSONArray ExcelToJson(String filePath){
  24. return this.ExcelToJson(filePath,null,null);
  25. }
  26. /**
  27. * @Author: 轻狂书生FS
  28. * @Description: 读取Excel表格以json形式返回
  29. * @params filePath:文件路径,startSheet:读取第几个sheet,startRow:从第几行开始读
  30. * @return
  31. * @CreateDate: 2019/3/27 18:06
  32. * @Version: 1.0
  33. */
  34. public JSONArray ExcelToJson(String filePath,Integer startSheet,Integer startRow) {
  35. // 设置默认值0
  36. if (startSheet == null) {
  37. startSheet = 0;
  38. }
  39. if (startRow == null) {
  40. startRow = 0;
  41. }
  42. Workbook workbook = null;
  43. JSONArray jsons = new JSONArray();
  44. try {
  45. //适配xls格式和xlsx格式
  46. if (filePath.endsWith(".xls")) {
  47. workbook = new HSSFWorkbook(new FileInputStream(filePath));
  48. } else if (filePath.endsWith(".xlsx")) {
  49. workbook = new XSSFWorkbook(new FileInputStream(filePath));
  50. }
  51. } catch (Exception e) {
  52. e.printStackTrace();
  53. }
  54. Sheet sheet = workbook.getSheetAt(startSheet);
  55. // 第startRow行,是表头部分
  56. Row row0 = sheet.getRow(startRow);
  57. Map<Integer, String> map = new HashMap<>();
  58. // 将表头的值放进map里面
  59. for (int i = 0; i < row0.getLastCellNum(); i++) {
  60. map.put(i, row0.getCell(i).toString());
  61. }
  62. for (int i = startRow + 1; i < sheet.getLastRowNum(); i++) {
  63. Row row = sheet.getRow(i);
  64. JSONObject object = new JSONObject();
  65. // 读取的行不能为空且读取的列数等于表头的列数
  66. if ( row != null && map.size() == row.getLastCellNum() ) {
  67. for (int j = 0; j < row.getLastCellNum(); j++) {
  68. object.put(map.get(j),row.getCell(j).toString());
  69. }
  70. jsons.add(object);
  71. }
  72. }
  73. return jsons;
  74. }
  75. }

第一次写工具类,不足之处请多多指教。谢谢阅读,欢迎转发。求关注

 

修改版:

如果之前的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

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。