poimysql数据库导入(poi导入excel到数据库)

本文目录一览:

java poi实现excel中的数据导入到mysql数据库中,例如excel中有id,name,age。将其导入到数据库中。

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!”);

          }

      }

  }

}

保存结果:

如何将excel表数据导入MySql数据库

一般有两种方式来处理

1、使用js来读取本地excel文件,读出一行后,使用ajax传入后台进行持久化操作(存入数据库),这种方式仅限于windows和ie,要使用

var oXL = new ActiveXObject(“Excel.application”);

var oWB = oXL.Workbooks.open(filePath);

oWB.worksheets(1).select();

var oSheet = oWB.ActiveSheet;

2、使用poi插件来处理,前台使用input type=”file” value=””来加载本地excel文件,提交到后台后,使用流保存到服务器,在使用poi处理,保存进入数据库

从安全性和规范性、通用性考虑,第二种方法更为合适

原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/271980.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
小蓝小蓝
上一篇 2024-12-17 00:07
下一篇 2024-12-17 00:07

相关推荐

  • Python 常用数据库有哪些?

    在Python编程中,数据库是不可或缺的一部分。随着互联网应用的不断扩大,处理海量数据已成为一种趋势。Python有许多成熟的数据库管理系统,接下来我们将从多个方面介绍Python…

    编程 2025-04-29
  • openeuler安装数据库方案

    本文将介绍在openeuler操作系统中安装数据库的方案,并提供代码示例。 一、安装MariaDB 下面介绍如何在openeuler中安装MariaDB。 1、更新软件源 sudo…

    编程 2025-04-29
  • 数据库第三范式会有删除插入异常

    如果没有正确设计数据库,第三范式可能导致删除和插入异常。以下是详细解释: 一、什么是第三范式和范式理论? 范式理论是关系数据库中的一个规范化过程。第三范式是范式理论中的一种常见形式…

    编程 2025-04-29
  • 为什么不能用Microsoft Excel进行Python编程?

    Microsoft Excel是一个广泛使用的数据分析工具,但是它不能直接用于Python编程。这是因为Microsoft Excel并不是一个编程工具,它的主要功能是进行数据处理…

    编程 2025-04-29
  • leveldb和unqlite:两个高性能的数据库存储引擎

    本文将介绍两款高性能的数据库存储引擎:leveldb和unqlite,并从多个方面对它们进行详细的阐述。 一、leveldb:轻量级的键值存储引擎 1、leveldb概述: lev…

    编程 2025-04-28
  • Python怎么导入数据库

    Python是一种高级编程语言。它具有简单、易读的语法和广泛的库,让它成为一个灵活和强大的工具。Python的数据库连接类型可以多种多样,其中包括MySQL、Oracle、Post…

    编程 2025-04-28
  • 基尼系数Excel计算模板

    这篇文章将介绍基尼系数Excel计算模板,为大家详细阐述如何使用Excel进行基尼系数的计算。 一、模板下载及导入 首先需要下载基尼系数的Excel计算模板,可以在Excel中通过…

    编程 2025-04-28
  • Think-ORM数据模型及数据库核心操作

    本文主要介绍Think-ORM数据模型建立和数据库核心操作。 一、模型定义 Think-ORM是一个开源的ORM框架,用于简化在PHP应用中(特别是ThinkPHP)与关系数据库之…

    编程 2025-04-27
  • 如何使用Python将CSV文件导入到数据库

    CSV(Comma Separated Values)是一种可读性高、易于编辑与导入导出的文件格式,常用于存储表格数据。在数据处理过程中,我们有时需要将CSV文件导入到数据库中进行…

    编程 2025-04-27
  • Python批量导入数据库

    本文将介绍Python中如何批量导入数据库。首先,对于数据分析和挖掘领域,数据库中批量导入数据是一个必不可少的过程。这种高效的导入方式可以极大地提高数据挖掘、机器学习等任务的效率。…

    编程 2025-04-27

发表回复

登录后才能评论