本文目录一览:

Java利用POI导入excel表格并将数据存到数据库的问题

当有合并表格的情况下,认为是左上角单元格的数据,意思就是 标题 认为是a1,但是当你循环遍历这样的合并表格的话,数据是会重复的,即把合并的单元格拆分后每个单元格的数据都是一样的,这样就需要你判断过滤了。至于你这种单元格拼接的话就没有什么办法了,读取出单元格数据循环判断,然后存入数据库就行了

java利用poi技术导入批量excel数据,并且分段存入数据库怎么解决

注意引入的都是poi的包,使用Cell,excel2003的.xls对应是HSSFCell,而之后的xlsx对应的则是XSSFCell,但是他们都继承于Cell,所以使用Cell就可以使用两种格式的excel导入了,下面解决excel中数据的各种格式

[java] view plaincopy

//读取excel

try {

request.setCharacterEncoding("gbk");

response.setContentType("text/html;charset=gbk");

// 1. 创建工厂类

DiskFileItemFactory factory = new DiskFileItemFactory();

// 2. 创建FileUpload对象

ServletFileUpload upload = new ServletFileUpload(factory);

// 3. 判断是否是上传表单

// boolean b = upload.isMultipartContent(request);

// 设置上传文件最大值

upload.setSizeMax(25 * 1024 * 1024);

// 是文件上传表单

// 4. 解析request,获得FileItem项

ListFileItem fileitems = upload.parseRequest(request);

// 5. 遍历集合

for (FileItem item : fileitems) {

// 判断是不是普通字段

if (!item.isFormField()) {

// 获得流,读取数据写入文件

InputStream in = item.getInputStream();

Workbook book = createWorkBook(in,item.getName());

// 获得第一个工作表对象

Sheet sheet = book.getSheetAt(0);

if(0==sheet.getLastRowNum()){

//如果没有数据

request.setAttribute("message", "excel的sheet0中不存在数据");

request.getRequestDispatcher("/cc/util/excelToData.jsp").forward(request, response);

}

// 第一行为标题,从第二行开始录入

for (int i = 1; i = sheet.getLastRowNum(); i++) {

//标题行,用来对比方便得到数据

Row titleRow = sheet.getRow(0);

//数据行

Row row = sheet.getRow(i);

//获得值

String value_temp= this.getValue((Cell) row.getCell(2));

}

}

}

} catch (Exception e) {

e.printStackTrace();

message="导入失败br/"+message;

request.setAttribute("message",message);

request.getRequestDispatcher("/cc/util/excelToData.jsp").forward(request, response);

}

java,用POI实现将excel导入到数据库

用到的类 是 :

import org.apache.poi.hssf.usermodel.HSSFRow;

import org.apache.poi.hssf.usermodel.HSSFSheet;

import org.apache.poi.hssf.usermodel.HSSFWorkbook;

try {

// ListString[] 中的元素 行数组String[]为excel中的每一行

ListString[] list = new ArrayListString[]();

InputStream is = new FileInputStream("test.xls");

HSSFWorkbook hwk = new HSSFWorkbook(is);// 将is流实例到 一个excel流里

HSSFSheet sh = hwk.getSheetAt(0);// 得到book第一个工作薄sheet

int rows = sh.getLastRowNum()+1 - sh.getFirstRowNum(); // 总行数

for(int i=0; irows; i++){

HSSFRow row = sh.getRow(i);

int cols = row.getLastCellNum()+1 - row.getFirstCellNum(); // 该行的总列数

String[] str = new String[cols]; // 用来存放该行每一列的值

for (int j = 0; j cols; j++) {

Object col = row.getCell((short)j);

str[j] = col.toString();

}

}

......

......

循环变量 i 和 j 可以自己设定从第几行开始读,第几列开始读,下标从0开始。

然后你想做什么判断想做什么数据匹配都可以自己加了。

poi.hssf.usermodel.* jar包要是网上找不到,就给我发邮件,我邮给你:273686381@qq.com

用POI将EXCEL表的数据导入到数据库时的setCellType()问题。

你需要先判断value的类型,然后再经过相应的处理后,再获取和使用它。

具体 value 的类型:

Cell.CELL_TYPE_STRING

Cell.CELL_TYPE_NUMERIC

Cell.CELL_TYPE_FORMULA

Cell.CELL_TYPE_BOOLEAN

Cell.CELL_TYPE_BLANK

Cell.CELL_TYPE_ERROR

希望对你有帮助。

用poi怎样把excel文件里面的数据导入数据库三张关联的表中

package bis.excel;

import java.io.File;

import java.io.FileInputStream;

import java.io.InputStream;

import java.util.ArrayList;

import java.util.List;

import java.util.Map;

import java.util.TreeMap;

import jxl.Sheet;

import jxl.Workbook;

public class Excel {

@SuppressWarnings("unchecked")

public List addCust(File file){

List list=new ArrayList();

List list2=new ArrayList();

Workbook rwb=null;

try {

List list1=new ArrayList();

InputStream is=new FileInputStream(file);//读取文件(所要导入excel的保存目录,如:f://a.xls)

rwb=Workbook.getWorkbook(is);//创建工作薄

Sheet rs=rwb.getSheet(0);//读取excel中的第一个工作表(默认新建excel下面有sheet1,sheet2,sheet3)

int cellCount=rs.getColumns();//获取Sheet表中所包含的总列数

int rowCount=rs.getRows();//获取Sheet表中所包含的总行数

for(int m=0;mcellCount;m++){//将表的第一行数据保存到list1中(列名),即id,name ,age

String cell=rs.getCell(m,0).getContents();

list1.add(cell);

}

for(int i=1;irowCount;i++){//获取值

Map map=new TreeMap();

for(int j=0;jcellCount;j++){

map.put(list1.get(j),rs.getCell(j,i).getContents());//将值以键/值对方式保存到map对象中即(id:1,name:zhangsan,age:18)

}

list.add(map);//将值保存到list中

//System.out.println(list.get(i-1));

}

list2.add(list1);//将表头(id,name,age)保存到list2中

list2.add(list);//将值保存到list2中

} catch (Exception e) {

// TODO Auto-generated catch block

e.printStackTrace();

}finally{

rwb.close();

}

return list2;

}

public void tosql(){

List list=addCust(file);//file:所要导入excel的保存目录,如:f://a.xls

Map map=new HashMap();

String[] values=new String[ls2.size()];//保存id,name,age 值

for (int i =0; i ls2.size(); i++) {

map=(Map)ls2.get(i);

String value="";

id=(String)map.get("id");

name=(String)map.get("name");

age=(String)map.get("age");

value=id+";"+name+";"+age;

values[i]=value;

}

}

}

这是段读取excel表数据的代码,在tosql方法中调用addCust方法读取excel表,最后把所有行的id,name,age值保存到了values数组中,也可以保存到类中,如果你会对数据库操作的话,

后面的你自己弄下就行了,不会的话留言,我晚上在告诉你,我现在上班呢,时间有限,只能写这么多了

java通过poi把excel文件导入mysql数据库报错

java通过poi把excel文件导入mysql数据库报错是因为excel中的数据类型要跟mysql中的数据类型和长度对应,否则类型转换异常是最常见的。所以插入到mysql数据库的时候需要做类型检查。

1、Excel中的测试数据:

2、数据库表结构:

CREATE TABLE `student_info` (

`id` int(11) NOT NULL AUTO_INCREMENT,

`no` varchar(20) DEFAULT NULL,

`name` varchar(20) DEFAULT NULL,

`age` varchar(10) DEFAULT NULL,

`score` float DEFAULT '0',

PRIMARY KEY (`id`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8;

3、java源码部分ReadExcel.java:

/**

* 读取excel中的数据并插入db

*/

import java.io.FileInputStream;

import java.io.IOException;

import java.io.InputStream;

import java.util.ArrayList;

import java.util.List;

import org.apache.poi.hssf.usermodel.HSSFCell;

import org.apache.poi.hssf.usermodel.HSSFRow;

import org.apache.poi.hssf.usermodel.HSSFSheet;

import org.apache.poi.hssf.usermodel.HSSFWorkbook;

import com.b510.common.Common;

import com.b510.excel.vo.Student;

/**

* @author pieryon

* @created 2016-5-18

*/

public class ReadExcel {

  public ListStudent readXls() throws IOException {

      InputStream is = new FileInputStream(Common.EXCEL_PATH);

      HSSFWorkbook hssfWorkbook = new HSSFWorkbook(is);

      Student student = null;

      ListStudent list = new ArrayListStudent();

      // 循环工作表Sheet

      for (int numSheet = 0; numSheet hssfWorkbook.getNumberOfSheets(); numSheet++) {

          HSSFSheet hssfSheet = hssfWorkbook.getSheetAt(numSheet);

          if (hssfSheet == null) {

              continue;

          }

          // 循环行Row

          for (int rowNum = 1; rowNum = hssfSheet.getLastRowNum(); rowNum++) {

              HSSFRow hssfRow = hssfSheet.getRow(rowNum);

              if (hssfRow != null) {

                  student = new Student();

                  HSSFCell no = hssfRow.getCell(0);

                  HSSFCell name = hssfRow.getCell(1);

                  HSSFCell age = hssfRow.getCell(2);

                  HSSFCell score = hssfRow.getCell(3);

                  student.setNo(getValue(no));

                  student.setName(getValue(name));

                  student.setAge(getValue(age));

                  student.setScore(Float.valueOf(getValue(score)));

                  list.add(student);

              }

          }

      }

      return list;

  }

   @SuppressWarnings("static-access")

  private String getValue(HSSFCell hssfCell) {

          if (hssfCell.getCellType() == hssfCell.CELL_TYPE_BOOLEAN) {

              // 返回布尔类型的值

              return String.valueOf(hssfCell.getBooleanCellValue());

          } else if (hssfCell.getCellType() == hssfCell.CELL_TYPE_NUMERIC) {

              // 返回数值类型的值

              return String.valueOf(hssfCell.getNumericCellValue());

          } else {

              // 返回字符串类型的值

              return String.valueOf(hssfCell.getStringCellValue());

          }

      }

}

2、SaveData2DB.java

/**

* 插入数据到db

*/

import java.io.IOException;

import java.sql.SQLException;

import java.util.List;

import com.b510.common.Common;

import com.b510.excel.util.DbUtil;

import com.b510.excel.vo.Student;

/**

* @author pieryon

* @created 2016-5-18

*/

public class SaveData2DB {

  @SuppressWarnings({ "rawtypes" })

  public void save() throws IOException, SQLException {

      ReadExcel xlsMain = new ReadExcel();

      Student student = null;

      ListStudent list = xlsMain.readXls();

      for (int i = 0; i list.size(); i++) {

          student = list.get(i);

          List l = DbUtil.selectOne(Common.SELECT_STUDENT_SQL + "'%" + student.getName() + "%'", student);

          if (!l.contains(1)) {

              DbUtil.insert(Common.INSERT_STUDENT_SQL, student);

          } else {

              System.out.println("The Record was Exist : No. = " + student.getNo() + " , Name = " + student.getName() + ", Age = " + student.getAge() + ", and has been throw away!");

          }

      }

  }

}

保存结果: