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/zh-hant/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

發表回復

登錄後才能評論