Java使用Apache POI读取Excel数据并导入数据库教程
版权申诉
201 浏览量
更新于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则能实现数据导入数据库的功能。在实际项目中,你可能还需要处理更复杂的情况,如错误处理、数据验证和优化性能等。
2021-10-11 上传
2021-11-11 上传
2022-11-19 上传
138 浏览量
2024-10-26 上传
2024-11-07 上传
2024-10-24 上传
165 浏览量
147 浏览量
yyc13139216118
- 粉丝: 2
- 资源: 6万+
最新资源
- WINCVS从入门到精通
- 高质量C++&C编程
- MOTO A78飞越T6第三版刷机教程
- WINCVS从入门到精通
- Windows 2003 IIS下FTP设置方法
- LoadRunner操作入门
- LoadRunnerManual.pdf
- c++ language edition
- More Effecitve C++
- Linux 高级教程
- gcc 中文手册--linux c编程必备
- uml参考手册(由G.Booch,J.Rumbaugh,I.Jacobson撰写)
- 计算机等级考试二级公共基础知识120题详解篇
- jsp java 面试宝典
- glassfish developer guide
- linux必学的60个命令