JAVA使用POI读取EXCEL文件的简单model

 

  1. package poi;  
  2. import java.io.FileInputStream;  
  3. import java.io.IOException;  
  4. import java.io.InputStream;  
  5. import java.util.Iterator;  
  6. import org.apache.poi.hssf.usermodel.HSSFCell;  
  7. import org.apache.poi.hssf.usermodel.HSSFWorkbook;  
  8. import org.apache.poi.ss.usermodel.Cell;  
  9. import org.apache.poi.ss.usermodel.Row;  
  10. import org.apache.poi.ss.usermodel.Sheet;  
  11. import org.apache.poi.ss.usermodel.Workbook;  
  12. import org.apache.poi.xssf.usermodel.XSSFWorkbook;  
  13.    
  14. public class ReadExcel001 {  
  15.     public static void main(String[] args) {  
  16.         readXml(“D:/test.xlsx”);  
  17.         System.out.println("-------------");  
  18.         readXml(“d:/test2.xls”);  
  19.     }  
  20.     public static void readXml(String fileName){  
  21.         boolean isE2007 = false;    //判断是否是excel2007格式  
  22.         if(fileName.endsWith(“xlsx”))  
  23.             isE2007 = true;  
  24.         try {  
  25.             InputStream input = new FileInputStream(fileName);  //建立输入流  
  26.             Workbook wb  = null;  
  27.             //根据文件格式(2003或者2007)来初始化  
  28.             if(isE2007)  
  29.                 wb = new XSSFWorkbook(input);  
  30.             else  
  31.                 wb = new HSSFWorkbook(input);  
  32.             Sheet sheet = wb.getSheetAt(0);     //获得第一个表单  
  33.             Iterator<Row> rows = sheet.rowIterator(); //获得第一个表单的迭代器  
  34.             while (rows.hasNext()) {  
  35.                 Row row = rows.next();  //获得行数据  
  36.                 System.out.println(“Row #” + row.getRowNum());  //获得行号从0开始  
  37.                 Iterator<Cell> cells = row.cellIterator();    //获得第一行的迭代器  
  38.                 while (cells.hasNext()) {  
  39.                     Cell cell = cells.next();  
  40.                     System.out.println(“Cell #” + cell.getColumnIndex());  
  41.                     switch (cell.getCellType()) {   //根据cell中的类型来输出数据  
  42.                     case HSSFCell.CELL_TYPE_NUMERIC:  
  43.                         System.out.println(cell.getNumericCellValue());  
  44.                         break;  
  45.                     case HSSFCell.CELL_TYPE_STRING:  
  46.                         System.out.println(cell.getStringCellValue());  
  47.                         break;  
  48.                     case HSSFCell.CELL_TYPE_BOOLEAN:  
  49.                         System.out.println(cell.getBooleanCellValue());  
  50.                         break;  
  51.                     case HSSFCell.CELL_TYPE_FORMULA:  
  52.                         System.out.println(cell.getCellFormula());  
  53.                         break;  
  54.                     default:  
  55.                         System.out.println(“unsuported sell type”);  
  56.                     break;  
  57.                     }  
  58.                 }  
  59.             }  
  60.         } catch (IOException ex) {  
  61.             ex.printStackTrace();  
  62.         }  
  63.     }  
  64. }  
package poi;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Iterator;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

public class ReadExcel001 {
public static void main(String[] args) {
readXml(“D:/test.xlsx”);
System.out.println("-------------");
readXml(“d:/test2.xls”);
}
public static void readXml(String fileName){
boolean isE2007 = false; //判断是否是excel2007格式
if(fileName.endsWith(“xlsx”))
isE2007 = true;
try {
InputStream input = new FileInputStream(fileName); //建立输入流
Workbook wb = null;
//根据文件格式(2003或者2007)来初始化
if(isE2007)
wb = new XSSFWorkbook(input);
else
wb = new HSSFWorkbook(input);
Sheet sheet = wb.getSheetAt(0); //获得第一个表单
Iterator<Row> rows = sheet.rowIterator(); //获得第一个表单的迭代器
while (rows.hasNext()) {
Row row = rows.next(); //获得行数据
System.out.println(“Row #” + row.getRowNum()); //获得行号从0开始
Iterator<Cell> cells = row.cellIterator(); //获得第一行的迭代器
while (cells.hasNext()) {
Cell cell = cells.next();
System.out.println(“Cell #” + cell.getColumnIndex());
switch (cell.getCellType()) { //根据cell中的类型来输出数据
case HSSFCell.CELL_TYPE_NUMERIC:
System.out.println(cell.getNumericCellValue());
break;
case HSSFCell.CELL_TYPE_STRING:
System.out.println(cell.getStringCellValue());
break;
case HSSFCell.CELL_TYPE_BOOLEAN:
System.out.println(cell.getBooleanCellValue());
break;
case HSSFCell.CELL_TYPE_FORMULA:
System.out.println(cell.getCellFormula());
break;
default:
System.out.println(“unsuported sell type”);
break;
}
}
}
} catch (IOException ex) {
ex.printStackTrace();
}
}
}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,这是一个相对较复杂的问题,需要分几个步骤来实现。 1. 使用Java读取Excel文件 可以使用Apache POI这个库来读取Excel文件,具体实现如下: ```java FileInputStream inputStream = new FileInputStream(new File("path/to/excel/file.xlsx")); Workbook workbook = new XSSFWorkbook(inputStream); Sheet sheet = workbook.getSheetAt(0); //获取第一个工作表 for (Row row : sheet) { //遍历每一行 for (Cell cell : row) { //遍历每一个单元格 String cellValue = cell.getStringCellValue(); //将cellValue添加到对应的数据结构中 } } workbook.close(); inputStream.close(); ``` 2. 异步导入数据库 可以使用Java中的ExecutorService来实现异步操作,具体实现如下: ```java ExecutorService executorService = Executors.newFixedThreadPool(10); //创建一个线程池,最多有10个线程同时执行任务 for (Object data : dataList) { executorService.submit(() -> { //将数据异步导入数据库中 }); } executorService.shutdown(); //关闭线程池 ``` 3. 自动生成代码 可以使用MyBatis Generator这个工具来自动生成代码,具体实现如下: 1. 编写一个XML文件,描述数据库中的表结构和生成的Java类的属性、方法等信息。 2. 编写一个Java类,调用MyBatis Generator提供的API来生成代码。 这里给出一个简单的XML文件示例: ```xml <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE generatorConfiguration PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN" "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd"> <generatorConfiguration> <context id="mysql" targetRuntime="MyBatis3"> <jdbcConnection driverClass="com.mysql.jdbc.Driver" connectionURL="jdbc:mysql://localhost:3306/test" userId="root" password=""> </jdbcConnection> <javaModelGenerator targetPackage="com.example.model" targetProject="src/main/java"> <property name="enableSubPackages" value="true"/> <property name="trimStrings" value="true"/> </javaModelGenerator> <sqlMapGenerator targetPackage="com.example.mapper" targetProject="src/main/resources"> <property name="enableSubPackages" value="true"/> </sqlMapGenerator> <javaClientGenerator type="XMLMAPPER" targetPackage="com.example.mapper" targetProject="src/main/java"> <property name="enableSubPackages" value="true"/> </javaClientGenerator> <table tableName="student" domainObjectName="Student"/> </context> </generatorConfiguration> ``` 然后编写一个Java类,调用MyBatis Generator提供的API来生成代码: ```java List<String> warnings = new ArrayList<>(); ConfigurationParser cp = new ConfigurationParser(warnings); Configuration config = cp.parseConfiguration(new File("path/to/mybatis/generator.xml")); DefaultShellCallback callback = new DefaultShellCallback(true); MyBatisGenerator myBatisGenerator = new MyBatisGenerator(config, callback, warnings); myBatisGenerator.generate(null); ``` 以上就是实现Java读取Excel文件并异步导入数据库生成代码的大致流程。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值