java中xlsx導入mysql的簡單介紹

本文目錄一覽:

java如何把excel內容導入到mysql資料庫,資料庫的列名就是excel的列名

1、添加POI jar包到項目的lib目錄下-

2、Excel文件目錄:d://excel.xls-

3、資料庫欄位為:num1 num2 num3 num4 num5 num6-

4、資料庫名:blog-

5、表名:test-

6、編寫類:連接mysql的字元串方法、插入的方法、實體類–

import java.io.FileInputStream;-

import java.io.FileNotFoundException;-

import java.io.IOException;-

import org.apache.commons.logging.Log;-

import org.apache.commons.logging.LogFactory;-

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;-

public class TestExcel {-

//記錄類的輸出信息-

static Log log = LogFactory.getLog(TestExcel.class); –

//獲取Excel文檔的路徑-

public static String filePath = “D://excel.xls”;-

public static void main(String[] args) {-

try {-

// 創建對Excel工作簿文件的引用-

HSSFWorkbook wookbook = new HSSFWorkbook(new FileInputStream(filePath));-

// 在Excel文檔中,第一張工作表的預設索引是0,-

// 其語句為:HSSFSheet sheet = workbook.getSheetAt(0);-

HSSFSheet sheet = wookbook.getSheet(“Sheet1”);-

//獲取到Excel文件中的所有行數-

int rows = sheet.getPhysicalNumberOfRows();-

//遍歷行-

for (int i = 0; i rows; i++) {-

// 讀取左上端單元格-

HSSFRow row = sheet.getRow(i);-

// 行不為空-

if (row != null) {-

//獲取到Excel文件中的所有的列-

int cells = row.getPhysicalNumberOfCells();-

String value = “”; –

//遍歷列-

for (int j = 0; j cells; j++) {-

//獲取到列的值-

HSSFCell cell = row.getCell(j);-

if (cell != null) {-

switch (cell.getCellType()) {-

case HSSFCell.CELL_TYPE_FORMULA:-

break;-

case HSSFCell.CELL_TYPE_NUMERIC:-

value += cell.getNumericCellValue() + “,”; –

break; –

case HSSFCell.CELL_TYPE_STRING:-

value += cell.getStringCellValue() + “,”;-

break;-

default:-

value += “0”;-

break;-

}-

} –

}-

// 將數據插入到mysql資料庫中-

String[] val = value.split(“,”);-

TestEntity entity = new TestEntity();-

entity.setNum1(val[0]);-

entity.setNum2(val[1]);-

entity.setNum3(val[2]);-

entity.setNum4(val[3]);-

entity.setNum5(val[4]);-

entity.setNum6(val[5]);-

TestMethod method = new TestMethod();-

method.Add(entity);-

}-

}-

} catch (FileNotFoundException e) {-

e.printStackTrace();-

} catch (IOException e) {-

e.printStackTrace();-

}-

}-

}-

如何用java實現把excel表中的數據導入到mysql資料庫已有的表中

package com.cn.util;  

  

import java.io.FileNotFoundException;  

import java.io.IOException;  

import java.io.InputStream;  

import java.util.ArrayList;  

import java.util.List;  

  

import org.apache.log4j.Logger;  

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

import org.apache.poi.ss.usermodel.Cell;  

import org.apache.poi.ss.usermodel.Row;  

import org.apache.poi.ss.usermodel.Sheet;  

import org.apache.poi.ss.usermodel.Workbook;  

import org.apache.poi.xssf.usermodel.XSSFWorkbook;  

import org.springframework.web.multipart.MultipartFile;  

/** 

 * excel讀寫工具類 

 * @author sun.kai 

 */  

public class POIUtil {  

    private static Logger logger  = Logger.getLogger(POIUtil.class);  

    private final static String xls = “xls”;  

    private final static String xlsx = “xlsx”;  

      

    /** 

     * 讀入excel文件,解析後返回 

     * @param file 

     * @throws IOException  

     */  

    public static ListString[] readExcel(MultipartFile file) throws IOException{  

        //檢查文件  

        checkFile(file);  

        //獲得Workbook工作薄對象  

        Workbook workbook = getWorkBook(file);  

        //創建返回對象,把每行中的值作為一個數組,所有行作為一個集合返回  

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

        if(workbook != null){  

            for(int sheetNum = 0;sheetNum  workbook.getNumberOfSheets();sheetNum++){  

                //獲得當前sheet工作表  

                Sheet sheet = workbook.getSheetAt(sheetNum);  

                if(sheet == null){  

                    continue;  

                }  

                //獲得當前sheet的開始行  

                int firstRowNum  = sheet.getFirstRowNum();  

                //獲得當前sheet的結束行  

                int lastRowNum = sheet.getLastRowNum();  

                //循環除了第一行的所有行  

                for(int rowNum = firstRowNum+1;rowNum = lastRowNum;rowNum++){  

                    //獲得當前行  

                    Row row = sheet.getRow(rowNum);  

                    if(row == null){  

                        continue;  

                    }  

                    //獲得當前行的開始列  

                    int firstCellNum = row.getFirstCellNum();  

                    //獲得當前行的列數  

                    int lastCellNum = row.getPhysicalNumberOfCells();  

                    String[] cells = new String[row.getPhysicalNumberOfCells()];  

                    //循環當前行  

                    for(int cellNum = firstCellNum; cellNum  lastCellNum;cellNum++){  

                        Cell cell = row.getCell(cellNum);  

                        cells[cellNum] = getCellValue(cell);  

                    }  

                    list.add(cells);  

                }  

            }  

            workbook.close();  

        }  

        return list;  

    }  

    public static void checkFile(MultipartFile file) throws IOException{  

        //判斷文件是否存在  

        if(null == file){  

            logger.error(“文件不存在!”);  

            throw new FileNotFoundException(“文件不存在!”);  

        }  

        //獲得文件名  

        String fileName = file.getOriginalFilename();  

        //判斷文件是否是excel文件  

        if(!fileName.endsWith(xls)  !fileName.endsWith(xlsx)){  

            logger.error(fileName + “不是excel文件”);  

            throw new IOException(fileName + “不是excel文件”);  

        }  

    }  

    public static Workbook getWorkBook(MultipartFile file) {  

        //獲得文件名  

        String fileName = file.getOriginalFilename();  

        //創建Workbook工作薄對象,表示整個excel  

        Workbook workbook = null;  

        try {  

            //獲取excel文件的io流  

            InputStream is = file.getInputStream();  

            //根據文件後綴名不同(xls和xlsx)獲得不同的Workbook實現類對象  

            if(fileName.endsWith(xls)){  

                //2003  

                workbook = new HSSFWorkbook(is);  

            }else if(fileName.endsWith(xlsx)){  

                //2007  

                workbook = new XSSFWorkbook(is);  

            }  

        } catch (IOException e) {  

            logger.info(e.getMessage());  

        }  

        return workbook;  

    }  

    public static String getCellValue(Cell cell){  

        String cellValue = “”;  

        if(cell == null){  

            return cellValue;  

        }  

        //把數字當成String來讀,避免出現1讀成1.0的情況  

        if(cell.getCellType() == Cell.CELL_TYPE_NUMERIC){  

            cell.setCellType(Cell.CELL_TYPE_STRING);  

        }  

        //判斷數據的類型  

        switch (cell.getCellType()){  

            case Cell.CELL_TYPE_NUMERIC: //數字  

                cellValue = String.valueOf(cell.getNumericCellValue());  

                break;  

            case Cell.CELL_TYPE_STRING: //字元串  

                cellValue = String.valueOf(cell.getStringCellValue());  

                break;  

            case Cell.CELL_TYPE_BOOLEAN: //Boolean  

                cellValue = String.valueOf(cell.getBooleanCellValue());  

                break;  

            case Cell.CELL_TYPE_FORMULA: //公式  

                cellValue = String.valueOf(cell.getCellFormula());  

                break;  

            case Cell.CELL_TYPE_BLANK: //空值   

                cellValue = “”;  

                break;  

            case Cell.CELL_TYPE_ERROR: //故障  

                cellValue = “非法字元”;  

                break;  

            default:  

                cellValue = “未知類型”;  

                break;  

        }  

        return cellValue;  

    }  

}

用java怎麼將excel表格數據導入到mysql資料庫中

參考下面方法:

import java.io.FileInputStream;­

import java.io.FileNotFoundException;­

import java.io.IOException;­

import org.apache.commons.logging.Log;­

import org.apache.commons.logging.LogFactory;­

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;­

public class TestExcel {­

//記錄類的輸出信息­

static Log log = LogFactory.getLog(TestExcel.class); ­

//獲取Excel文檔的路徑­

public static String filePath = “D://excel.xls”;­

public static void main(String[] args) {­

try {­

// 創建對Excel工作簿文件的引用­

HSSFWorkbook wookbook = new HSSFWorkbook(new FileInputStream(filePath));­

// 在Excel文檔中,第一張工作表的預設索引是0

// 其語句為:HSSFSheet sheet = workbook.getSheetAt(0);­

HSSFSheet sheet = wookbook.getSheet(“Sheet1”);­

//獲取到Excel文件中的所有行數­

int rows = sheet.getPhysicalNumberOfRows();

//遍歷行­

for (int i = 0; i rows; i++) {­

// 讀取左上端單元格­

HSSFRow row = sheet.getRow(i);­

// 行不為空­

if (row != null) {­

//獲取到Excel文件中的所有的列­

int cells = row.getPhysicalNumberOfCells();­

String value = “”; ­

//遍歷列­

for (int j = 0; j cells; j++) {­

//獲取到列的值­

HSSFCell cell = row.getCell(j);­

if (cell != null) {­

switch (cell.getCellType()) {­

case HSSFCell.CELL_TYPE_FORMULA:­

break;­

case HSSFCell.CELL_TYPE_NUMERIC:­

value += cell.getNumericCellValue() + “,”; ­

break; ­

case HSSFCell.CELL_TYPE_STRING:­

value += cell.getStringCellValue() + “,”;­

break;­

default:­

value += “0”;­

break;­

}

// 將數據插入到mysql資料庫中­

String[] val = value.split(“,”);­

TestEntity entity = new TestEntity();­

entity.setNum1(val[0]);­

entity.setNum2(val[1]);­

entity.setNum3(val[2]);­

entity.setNum4(val[3]);­

entity.setNum5(val[4]);­

entity.setNum6(val[5]);­

TestMethod method = new TestMethod();­

method.Add(entity);­

} catch (FileNotFoundException e) {­

e.printStackTrace();­

} catch (IOException e) {­

e.printStackTrace();­

java中如何講Excel中的數據導入到Mysql

你可以用JXL做。讀到資料庫,可以通過jxl來實現,可以把EXCEL文檔上傳到系統的上傳目錄下後,然後再取得這個文件,或者直接取得這個文件,對這個文件進行操作。

例子:

public void addCustomerAssign(File file,SysExpo expo,SysUser user1)//添加客服中心數據

{

jxl.Workbook rwb = null;

try{

//構建Workbook對象, 只讀Workbook對象

//直接從本地文件創建Workbook

//從輸入流創建Workbook

InputStream is = new FileInputStream(file);

rwb = Workbook.getWorkbook(is);

String createTime = DateUtil.getDateTime( “yyyy-MM-dd HH:mm “,new Date()).toString();

//Sheet(術語:工作表)就是Excel表格左下角的Sheet1,Sheet2,Sheet3但在程序中

//Sheet的下標是從0開始

//獲取第一張Sheet表

Sheet rs = rwb.getSheet(0);

//獲取Sheet表中所包含的總列數

// int rsColumns = rs.getColumns();

//獲取Sheet表中所包含的總行數

int rsRows = rs.getRows();

//獲取指定單元格的對象引用

// rs.getCell(列,行);

for(int i=1;i rsRows;i++){//如第一行為屬性項則從第二行開始取數據(int i=0 ;i rsRows;i++)

//for(int j=0;j rsColumns;j++){

//Cell cell = rs.getCell(j,i);

// System.out.print(cell.getContents()+ ” “);

// }

//Cell cell = rs.getCell(0,i).getContents()+ ” “;

String cell1= rs.getCell(0,i).getContents()+ ” “;//序號

String cell7 = rs.getCell(6,i).getContents()+ ” “;//公司名稱

if(cell1!=null!cell1.equals( ” “)cell7!=null!cell7.equals( ” “))//判斷當前行是否為有效行 是插入否找下行

{

Company company = new Company();

company.setName(rs.getCell(0,i).getContents()+ ” “);//1名稱

company.setManager(rs.getCell(1,i).getContents()+ ” “);//2法人

}

}

}catch(Exception e){

e.printStackTrace();

}

finally{

//操作完成時,關閉對象,釋放佔用的內存空間

rwb.close();

}

}

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/188976.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-11-29 07:59
下一篇 2024-11-29 07:59

相關推薦

  • Java JsonPath 效率優化指南

    本篇文章將深入探討Java JsonPath的效率問題,並提供一些優化方案。 一、JsonPath 簡介 JsonPath是一個可用於從JSON數據中獲取信息的庫。它提供了一種DS…

    編程 2025-04-29
  • 如何修改mysql的埠號

    本文將介紹如何修改mysql的埠號,方便開發者根據實際需求配置對應埠號。 一、為什麼需要修改mysql埠號 默認情況下,mysql使用的埠號是3306。在某些情況下,我們需…

    編程 2025-04-29
  • java client.getacsresponse 編譯報錯解決方法

    java client.getacsresponse 編譯報錯是Java編程過程中常見的錯誤,常見的原因是代碼的語法錯誤、類庫依賴問題和編譯環境的配置問題。下面將從多個方面進行分析…

    編程 2025-04-29
  • Java Bean載入過程

    Java Bean載入過程涉及到類載入器、反射機制和Java虛擬機的執行過程。在本文中,將從這三個方面詳細闡述Java Bean載入的過程。 一、類載入器 類載入器是Java虛擬機…

    編程 2025-04-29
  • Java騰訊雲音視頻對接

    本文旨在從多個方面詳細闡述Java騰訊雲音視頻對接,提供完整的代碼示例。 一、騰訊雲音視頻介紹 騰訊雲音視頻服務(Cloud Tencent Real-Time Communica…

    編程 2025-04-29
  • Java Milvus SearchParam withoutFields用法介紹

    本文將詳細介紹Java Milvus SearchParam withoutFields的相關知識和用法。 一、什麼是Java Milvus SearchParam without…

    編程 2025-04-29
  • Java 8中某一周的周一

    Java 8是Java語言中的一個版本,於2014年3月18日發布。本文將從多個方面對Java 8中某一周的周一進行詳細的闡述。 一、數組處理 Java 8新特性之一是Stream…

    編程 2025-04-29
  • Java判斷字元串是否存在多個

    本文將從以下幾個方面詳細闡述如何使用Java判斷一個字元串中是否存在多個指定字元: 一、字元串遍歷 字元串是Java編程中非常重要的一種數據類型。要判斷字元串中是否存在多個指定字元…

    編程 2025-04-29
  • Python簡單數學計算

    本文將從多個方面介紹Python的簡單數學計算,包括基礎運算符、函數、庫以及實際應用場景。 一、基礎運算符 Python提供了基礎的算術運算符,包括加(+)、減(-)、乘(*)、除…

    編程 2025-04-29
  • VSCode為什麼無法運行Java

    解答:VSCode無法運行Java是因為默認情況下,VSCode並沒有集成Java運行環境,需要手動添加Java運行環境或安裝相關插件才能實現Java代碼的編寫、調試和運行。 一、…

    編程 2025-04-29

發表回復

登錄後才能評論