2007版本excel多个sheet页数据通过ibatis批量导入数据库

Posted 爱丹1219

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2007版本excel多个sheet页数据通过ibatis批量导入数据库相关的知识,希望对你有一定的参考价值。

页面部分

<form method="post" name ="test" enctype="multipart/form-data">

<input type="file" name="file"/>

</form>

实体类部分

public Class Test{

   private String id;

   private String name;

   private String address;

 //以下为get、set方法(省略)

}

Action部分

按照strusts2获取file

private File file;
 private String fileName;
 private String fileContentType;

添加get、set方法

//获取workBook对象

XSSFWorkbook workBook = new XSSFWorkbook(file.getInputStream());

//定义workSheet

XSSFSheet workSheet = null;

//定义从excel获取的数据拼接成一个List对象

List<Test> listTest=new ArrayList<Test>();

//获取sheet页数量

int sheetCount = workBook.getNumberOfSheets();

for(int i=0;i<sheetCount;i++){

//获取第i个sheet

 workSheet = workBook.getSheetAt(i);

//获取该sheet页的行数

  for(int j=0;j<workSheet.getPhysicalNumberOfRows(); j++){

       //获取第j行

        XSSFRow row = workSheet.getRow(j);

       Test test=new Test();

        //row.getCell(0)获取第j行第1个单元格的数据

        test.setId(row.getCell(0)==null ? "":row.getCell(0).toString().trim());

//判断 如果第2行为数字格式   转成字符串

        if(row.getCell(1) !=null && row.getCell(1).getCellType() == XSSFCell.CELL_TYPE_NUMERIC){
      row.getCell(1).setCellType(Cell.CELL_TYPE_STRING);
     }

   test.setName(row.getCell(1)==null ? "":row.getCell(1).toString().trim());

  test.setAddress(row.getCell(2)==null ? "":row.getCell(2).toString().trim());

listTest.add(test);

}

}

ibatis部分

<insert id="export" parameterClass="java.util.List">

<![CDATA[

insert all

]]>

<iterate conjunction=" ">

<![CDATA[

into test(id,name,address)

values

(#listTest[].id#,#listTest[].name#,#listTest[].address#)

]]>

</iterate>

<![CDATA[

select 1 from dual

]]>

</insert>

 

以上是关于2007版本excel多个sheet页数据通过ibatis批量导入数据库的主要内容,如果未能解决你的问题,请参考以下文章

求问 java poi 导出多个sheet页

java导出大批量(百万以上)数据的excel文件

Java读Exlcel表格数据

Java报表工具FineReport导出EXCEL的四种API

Java报表工具FineReport导出EXCEL的四种API

Java报表工具FineReport导出EXCEL的四种方式