# excel数据导入到MySQL

# 案例

package com.carease.util;

import java.io.FileInputStream;
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.Iterator;

import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

public class ExcelToMySQL {

    public static void importExcelToMySQL(String excelFilePath,int seller_id) throws IOException, SQLException {
        try (Connection connection = ConnectionSql.getConnection()) {
            FileInputStream file = new FileInputStream(excelFilePath);
            XSSFWorkbook workbook = new XSSFWorkbook(file);
            XSSFSheet sheet = workbook.getSheetAt(0);

            Iterator<Row> rowIterator = sheet.iterator();
            rowIterator.next(); // Skip header row

            String sql = "insert into tb_car values(0,?,?,?,?,?,"+seller_id+")"; // Adjust column count as needed
            try (PreparedStatement preparedStatement = connection.prepareStatement(sql)) {
                while (rowIterator.hasNext()) {
                    Row row = rowIterator.next();
                    Iterator<Cell> cellIterator = row.cellIterator();

                    int columnIndex = 1;
                    while (cellIterator.hasNext()) {
                        Cell cell = cellIterator.next();
                        switch (cell.getCellType()) {
                            case STRING:
                                preparedStatement.setString(columnIndex, cell.getStringCellValue());
                                break;
                            case NUMERIC:
                                preparedStatement.setDouble(columnIndex, cell.getNumericCellValue());
                                break;
                            // Add more cases as needed for other data types
                        }
                        columnIndex++;
                    }

                    preparedStatement.addBatch();
                }

                preparedStatement.executeBatch();
            }

            workbook.close();
        }
    }
}

如果想自由选择文件,可以参考下面:

	private void importFromExcel() {
		JFileChooser fileChooser = new JFileChooser();
		fileChooser.setDialogTitle("请选择要导入的 Excel 文件");
		fileChooser.setFileFilter(new javax.swing.filechooser.FileNameExtensionFilter("Excel 文件 (*.xlsx)", "xlsx"));

		int result = fileChooser.showOpenDialog(IndexWin.this);
		if (result == JFileChooser.APPROVE_OPTION) {
			File selectedFile = fileChooser.getSelectedFile();
			try {
				ExcelImporter.importPersonFromExcel(selectedFile.getAbsolutePath());
				JOptionPane.showMessageDialog(IndexWin.this, "导入成功!", "提示", JOptionPane.INFORMATION_MESSAGE);
				init();                     // 刷新表格
			} catch (Exception ex) {
				ex.printStackTrace();
				JOptionPane.showMessageDialog(IndexWin.this,
						"导入失败:\n" + ex.getMessage(),
						"错误", JOptionPane.ERROR_MESSAGE);
			}
		}
	}
Last Updated: 12/13/2025, 8:19:07 AM