java语言读取Excel文件信息

简介: 最近项目中有一个表信息过大,需要手动删除,因为信息量比较大手动删除较为麻烦,所以采用使用excel读取数据的方式,然后操作数据库删除数据,其实只要是想要从Excel中获取信息都可以使用这种方式进行操作Excel,代码很简单。

背景:最近项目中有一个表信息过大,需要手动删除,因为信息量比较大手动删除较为麻烦,所以采用使用excel读取数据的方式,然后操作数据库删除数据,其实只要是想要从Excel中获取信息都可以使用这种方式进行操作Excel,代码很简单。


1.第一步:导入需要的jar包


这里使用的是net.sourceforge.jexcelapi:jxl-2.6.12.jar,需要特殊注意的是这里不支持2003版本以上的Excel,因为这个jar包在2011年以后就没有新版本更新了,只支持到了Excel2003,所以想操作最新版本的Excel是不行的,2003版的Excel文件后缀是xls。虽然只支持到了Excel2003,但是功能实现的很好,操作简单,使用方便。


下面是pom文件中引入的pom包


<dependency>
    <groupId>net.sourceforge.jexcelapi</groupId>
    <artifactId>jxl</artifactId>
    <version>2.6.12</version>
</dependency>


2.第二步:选择依赖库(如果已经配置了,就不用改了)


<mirror>
    <id>alimaven</id>
    <mirrorOf>central</mirrorOf>
    <name>aliyun maven</name>
    <url>http://maven.aliyun.com/nexus/content/repositories/central/</url>
</mirror>


3.第三步:实现代码


public ResultDTO dealExcelToDb(File file) {
      Workbook workbook = null;
      try {
          //转化文件对象
          workbook = Workbook.getWorkbook(file);
          //获取第一个sheet
          Sheet sheet = workbook.getSheet(0);
          //获取行数
          log.info("该Excel存在" + (sheet.getRows() - 1) + "行 ");
          //获取列数
          log.info("该Excel存在" + sheet.getColumns() + "列 ");
          log.info("每次处理500条,共需处理" + (sheet.getRows() / 500 + (sheet.getRows() % 500 > 0 ? 1 : 0)) + "次 ");
          int num = 0;//处理批次
          int allRows = 0;//处理的总条数
          int batchRows = 0;//每次处理的次数
          StringBuilder stringBuilder  = new StringBuilder();
          for (int i = 0; i < sheet.getRows(); i++) {
              if (i > 0) {
                  allRows++;
              }
                for (int j = 0; j < sheet.getColumns(); j++) {
                  //第一行为字段名,oid,不处理
                  if (i > 0 && i< sheet.getRows()) {
                      batchRows++;
                      //获取第i行,第j列的单元格的值
                      stringBuilder.append(sheet.getCell(j, i).getContents());
                      stringBuilder.append(",");
                  } else {
                      break;
                  }
              }
              //数据达到500条处理一次或者到达文件末尾
              if (batchRows == 500 || allRows == sheet.getRows() - 1) {
                  log.info("第" + (++num) + "批次数据开始处理");
                  //开始调用批处理程序
                  Map<String,String> map = new HashMap();
                  map.put("jsonParams",stringBuilder.toString().substring(0,stringBuilder.lastIndexOf(",")));
                  map.put("tableName","supplier_settled_synchronization_data_log ");
                  String result = HttpClientUtil.sendPostDataByMap("http://www.baidu.com", map, CommonConstant.ENCODING);
                  log.info("调用中台处理结果:" + result.toString());
                  batchRows = 0;//清空处理条数,下次循环重新计数
                  log.info("第" + num + "批次数据结束处理");
              }
          }
      } catch (IOException e) {
          e.printStackTrace();
      } catch (BiffException e) {
          log.info("文件解析出错,请使用1997-2003版本Excel文件");
          e.printStackTrace();
      } finally {
          if (workbook != null) {
              workbook.close();
          }
      }
      return new ResultDTO(ExceptionEnum.COMMON_SUCCESS_30.getResultCode(), null, "数据导入成功!");
  }


从上方代码可以看出操作十分的简便(大部分都是我自己的处理代码),先将文件转化为workbook,然后获取sheet页,然后就可以获取行,获取列,也可以获取单元格数据了,这样就拿到了Excel中的数据,唯一遗憾的是这个jar没有人更新了,只支持到了Excel2003.

相关文章
|
8天前
|
Java API Apache
Java编程如何读取Word文档里的Excel表格,并在保存文本内容时保留表格的样式?
【10月更文挑战第29天】Java编程如何读取Word文档里的Excel表格,并在保存文本内容时保留表格的样式?
49 5
|
1天前
|
人工智能 监控 数据可视化
Java智慧工地信息管理平台源码 智慧工地信息化解决方案SaaS源码 支持二次开发
智慧工地系统是依托物联网、互联网、AI、可视化建立的大数据管理平台,是一种全新的管理模式,能够实现劳务管理、安全施工、绿色施工的智能化和互联网化。围绕施工现场管理的人、机、料、法、环五大维度,以及施工过程管理的进度、质量、安全三大体系为基础应用,实现全面高效的工程管理需求,满足工地多角色、多视角的有效监管,实现工程建设管理的降本增效,为监管平台提供数据支撑。
11 3
|
3天前
|
SQL 安全 Java
安全问题已经成为软件开发中不可忽视的重要议题。对于使用Java语言开发的应用程序来说,安全性更是至关重要
在当今网络环境下,Java应用的安全性至关重要。本文深入探讨了Java安全编程的最佳实践,包括代码审查、输入验证、输出编码、访问控制和加密技术等,帮助开发者构建安全可靠的应用。通过掌握相关技术和工具,开发者可以有效防范安全威胁,确保应用的安全性。
12 4
|
5天前
|
Java 编译器 开发者
Java异常处理的最佳实践,涵盖理解异常类体系、选择合适的异常类型、提供详细异常信息、合理使用try-catch和finally语句、使用try-with-resources、记录异常信息等方面
本文探讨了Java异常处理的最佳实践,涵盖理解异常类体系、选择合适的异常类型、提供详细异常信息、合理使用try-catch和finally语句、使用try-with-resources、记录异常信息等方面,帮助开发者提高代码质量和程序的健壮性。
13 2
|
8天前
|
Java API Apache
|
9天前
|
存储 安全 Java
如何保证 Java 类文件的安全性?
Java类文件的安全性可以通过多种方式保障,如使用数字签名验证类文件的完整性和来源,利用安全管理器和安全策略限制类文件的权限,以及通过加密技术保护类文件在传输过程中的安全。
|
11天前
|
存储 Java API
Java实现导出多个excel表打包到zip文件中,供客户端另存为窗口下载
Java实现导出多个excel表打包到zip文件中,供客户端另存为窗口下载
23 4
|
13天前
|
Java 数据格式 索引
使用 Java 字节码工具检查类文件完整性的原理是什么
Java字节码工具通过解析和分析类文件的字节码,检查其结构和内容是否符合Java虚拟机规范,确保类文件的完整性和合法性,防止恶意代码或损坏的类文件影响程序运行。
|
13天前
|
Java API Maven
如何使用 Java 字节码工具检查类文件的完整性
本文介绍如何利用Java字节码工具来检测类文件的完整性和有效性,确保类文件未被篡改或损坏,适用于开发和维护阶段的代码质量控制。
|
15天前
|
JavaScript 前端开发 数据处理
Vue导出el-table表格为Excel文件的两种方式
Vue导出el-table表格为Excel文件的两种方式
下一篇
无影云桌面