Java使用Apache POI读取Excel数据并导入数据库教程

版权申诉
0 下载量 117 浏览量 更新于2024-08-06 收藏 68KB PDF 举报
"该资源是关于使用Java处理Excel数据并将其导入到数据库的教程,主要依赖Apache POI库。" 在Java开发中,有时我们需要处理Excel文件,例如从Excel文件中读取数据并将其导入到数据库。Apache POI是一个流行的Java API,用于读写Microsoft Office格式的文件,包括Excel(.xls)文件。在本教程中,开发者可以学习如何利用Apache POI库来实现这一功能。 首先,你需要在项目中添加Apache POI的jar文件。由于上传限制,这里不能直接提供.jar文件,但你可以自行从Apache POI的官方网站下载,并将其添加到你的应用程序类路径中。确保将文件名改为poi.jar。 以下是一个简单的Java程序示例,演示了如何使用Apache POI读取Excel文件的内容: ```java import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import org.apache.poi.hssf.usermodel.HSSFCell; import org.apache.poi.hssf.usermodel.HSSFDateUtil; import org.apache.poi.hssf.usermodel.HSSFRow; import org.apache.poi.hssf.usermodel.HSSFSheet; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.poifs.filesystem.POIFSFileSystem; public class ExcelOperate { public static void main(String[] args) throws Exception { File file = new File("ExcelDemo.xls"); String[][] result = getData(file, 1); int rowLength = result.length; for (int i = 0; i < rowLength; i++) { for (int j = 0; j < result[i].length; j++) { // 打印读取的数据 System.out.println(result[i][j]); } } } // 读取Excel文件的方法 private static String[][] getData(File file, int sheetIndex) throws IOException { // 读取Excel文件 FileInputStream fis = new FileInputStream(file); POIFSFileSystem fs = new POIFSFileSystem(fis); HSSFWorkbook wb = new HSSFWorkbook(fs); HSSFSheet sheet = wb.getSheetAt(sheetIndex); // 获取行数和列数 int rowSize = sheet.getLastRowNum() + 1; int colSize = sheet.getRow(0).getLastCellNum(); String[][] data = new String[rowSize][colSize]; for (int i = 0; i < rowSize; i++) { HSSFRow row = sheet.getRow(i); for (int j = 0; j < colSize; j++) { HSSFCell cell = row.getCell(j); if (cell != null) { // 根据单元格类型处理数据 switch (cell.getCellType()) { case STRING: data[i][j] = cell.getStringCellValue(); break; case NUMERIC: if (HSSFDateUtil.isCellDateFormatted(cell)) { Date date = cell.getDateCellValue(); data[i][j] = new SimpleDateFormat("yyyy-MM-dd").format(date); } else { data[i][j] = Double.toString(cell.getNumericCellValue()); } break; default: data[i][j] = ""; } } else { data[i][j] = ""; } } } return data; } } ``` 在这个例子中,`ExcelOperate`类有一个主方法`main`,它首先创建一个`File`对象来表示Excel文件,然后调用`getData`方法读取指定工作表(由`sheetIndex`参数决定)的数据。`getData`方法遍历每一行和每一列,根据单元格的类型(字符串、数字或日期)提取并处理数据,最后将数据存储在一个二维字符串数组中。 在实际应用中,你可能需要将这些数据插入到数据库中。这通常涉及到使用JDBC(Java Database Connectivity)连接到数据库,执行SQL插入语句。首先,你需要加载数据库驱动,建立数据库连接,创建Statement或PreparedStatement对象,然后将读取到的Excel数据转化为合适的SQL语句进行执行。 为了将数据导入数据库,你可能需要创建一个`insertIntoDatabase`方法,它接收数据数组作为参数,然后通过JDBC操作数据库。例如: ```java private static void insertIntoDatabase(String[][] data, Connection conn) throws SQLException { String sql = "INSERT INTO your_table(column1, column2, ...) VALUES (?, ?, ...)"; PreparedStatement pstmt = conn.prepareStatement(sql); for (int i = 0; i < data.length; i++) { for (int j = 0; j < data[i].length; j++) { pstmt.setString(j + 1, data[i][j]); } pstmt.addBatch(); } pstmt.executeBatch(); } ``` 请替换`your_table`、`column1`、`column2`等为你的实际表名和列名。这个方法使用了PreparedStatement以防止SQL注入,并使用批处理提高效率。 Java结合Apache POI库能方便地处理Excel数据,结合JDBC则能实现数据导入数据库的功能。在实际项目中,你可能还需要处理更复杂的情况,如错误处理、数据验证和优化性能等。