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>

时间: 2024-09-29 19:51:59

2007版本excel多个sheet页数据通过ibatis批量导入数据库的相关文章

项目笔记:导出Excel功能分sheet页插入数据

导出Excel功能分sheet页处理数据: /*导出EXCEL*/ public void createExcel() { log.info("导出Excel功能已经启动-BEGIN"); JxlUtil jsl = new JxlUtil(); List<Device> dataList =new ArrayList<Device>(); List<DeviceExport> list = new ArrayList<DeviceExport

JAVA用POI读取和创建2003和2007版本Excel完美示例

import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.text.DecimalFormat; import java.text.SimpleDateFormat; import java.util.Date; import j

c#NPOI导出2007版本excel

2003和2007版本区别: HSSFWorkbook(2003) IWorkbook(2007版本) 写完之后会有个问题,导出会报错[流已关闭]. NPOI生产.xlsx文件件时,在使用book.Write(ms);后,会关闭流,这样导致再次使用Respons输出流的时候就出错了. 我看到一些网友提供的解决办法是: public class NPOIMemoryStream:MemoryStream { /// <summary> /// 获取流是否关闭 /// </summary&g

将Excel中的数据批量导入数据库表

private boolean import_to_database(String excel_path) throws BiffException, IOException, HsException{ File file = new File(excel_path);//根据文件名创建一个文件对象 Workbook wb = Workbook.getWorkbook(file);//从文件流中取得Excel工作区对象 Sheet sheet = wb.getSheet(0);//从工作区中取得

用java实现excel数据批量导入数据库

不管是做软件还是做网站,相信很多人在做的时候都要用到数据库,而数据库的数据从何而来呢,可以使手动添加的,但是大多数情况下我们使用的是已有的数据,我们想借助开发的工具管理目前已有的数据,如果是小量的数据,手动录入也无妨,但是对于大量数据呢,手动录入显然已经不显示,而且,更多的时候,我们呢想在软件上增加一个数据的批量导入,这样不管是谁在用这款软件,都可以方便的管理已有数据,那么我们最常用的数据管理器是什么呢,毫无疑问Excel,但是我们做软件是几乎没有人会使用Excel作为DB,所以我们遇到的问题就

使用SqlBulkCopy实现Excel批量导入数据库

引言: 导入Excel数据时候,因为数据量大,使用 linq 操作插入的时候,很慢.考虑使用ado.net操作数据库方式导入数据.由于数据量比较大使用SqlBulkCopy来实现批量导入. 一.代码解释: 1.将要导入的excel上传保存到服务器. 2.使用OleDbDataAdapter获取excel中的数据插入tab中. 3.在内存中创建一个表newDT,将tab表做修改后更新到newDT中. 4.使用SqlBulkCopy批量将newDT内存表数据插入到数据库表Sys_StuUser中.

使用python,将excel数据批量导入数据库

这是上一篇文章的优化版本,相较于一条一条的执行sql语句,本文中,将excel中所有的数据先写到list列表中 在通过函数 cursor.executemany(sql, list) 一次性写入到数据库中 import pymysql import xlrd ''' 连接数据库 args:db_name(数据库名称) returns:db ''' def mysql_link(de_name): try: db = pymysql.connect(host="127.0.0.1", u

C# NPOI的数据批量导入数据库

public ActionResult Upload(HttpPostedFileBase Namefile)        {            //判断文件是否存在            if (Namefile == null)            {                return Content("没有文件");            }            //获取上传文件的名称,位置            var fileName = DateTime

EBS 多sheet页Excel动态报表开发过程

http://zhangzhongjie.iteye.com/blog/1779891 .前言本文讲述的多Sheet页EXCEL报表开发方式和开发HTML,PDF这类报表的方法大致是一致的,唯一不同的是该报表输出是一个XML文件,但是这种XML文件支持EXCEL直接打开.这种方式有如下两点点非常明显的优点:(1) 灵活性.如果客户对报表显示样式要求非常严格的话,那用这种方式就非常方便了,就比如我这次项目的客户是个德国人,对报表的显示样式要求极为苛刻,甚至严格到每个列的颜色,边框线,列宽,字体等.