用java怎么将excel表格数据导入到mysql数据库中

用java怎么将excel表格数据导入到mysql数据库中,第1张

参考下面方法:

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 = 0i <rowsi++) {­

// 读取左上端单元格­

HSSFRow row = sheet.getRow(i)­

// 行不为空­

if (row != null) {­

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

int cells = row.getPhysicalNumberOfCells()­

String value = ""­

//遍历列­

for (int j = 0j <cellsj++) {­

//获取到列的值­

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()­

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 = 0i <rowsi++) {-

// 读取左上端单元格-

HSSFRow row = sheet.getRow(i)-

// 行不为空-

if (row != null) {-

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

int cells = row.getPhysicalNumberOfCells()-

String value = ""-

//遍历列-

for (int j = 0j <cellsj++) {-

//获取到列的值-

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()-

}-

}-

}-

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 List<String[]> readExcel(MultipartFile file) throws IOException{  

        //检查文件  

        checkFile(file)  

        //获得Workbook工作薄对象  

        Workbook workbook = getWorkBook(file)  

        //创建返回对象,把每行中的值作为一个数组,所有行作为一个集合返回  

        List<String[]> list = new ArrayList<String[]>()  

        if(workbook != null){  

            for(int sheetNum = 0sheetNum < 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+1rowNum <= lastRowNumrowNum++){  

                    //获得当前行  

                    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 < lastCellNumcellNum++){  

                        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  

    }  

}


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/sjk/10821618.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-11
下一篇 2023-05-11

发表评论

登录后才能评论

评论列表(0条)

保存