怎么用java程序把excel导入到mysql数据库

如题所述

读取Excel的第三方工具一般可以用jxl或者poi。jxl比较轻量,poi功能更强大一点。如果数据量较小,推荐jxl,百万级的推荐poi。
从我代码中取出来的一部分,你自己参考下吧。
流程就是:
1、创建workbook对象
2、读取sheet
3、读取行,循环行读取列值
4、将列值拼装成insert语句
5、执行sql
其中要注意的几个问题是:列值合法验证,sql语句过长问题(mysql支持的一条sql不能超过1M好像,这个可以配置的)。列值验证好说,sql语句过长可以循环固定行数分批次执行。整个东西不难,你可以在网上搜索到相关资料。

public void scanXlsx(String path) throws IOException {
log.info("进入Xlsx扫描方法,扫描路径为:{}", path);
// 初始化文件输入流
InputStream is = new FileInputStream(path);
// 初始化workbook对象
XSSFWorkbook xssfWorkbook = new XSSFWorkbook(is);

// 定义XLSX行对象
XSSFRow xssfRow;
// 定义XLSX sheet对象
XSSFSheet xssfSheet;
// 获得sheet数目
int sheet_sum = xssfWorkbook.getNumberOfSheets();
log.info("该excel共有<" + sheet_sum + ">个工作簿!");

// 初始化读取记录行数,跳过表头,默认开始就读取一行
rows_index = 1;
/*
* 循环遍历每个工作簿
*/
for (int numSheet = 0; numSheet < sheet_sum; numSheet++) {
log.debug("进入循环读页,当前页为Sheet{}", numSheet + 1);
// 初始化sheet对象
xssfSheet = xssfWorkbook.getSheetAt(numSheet);
// 判断sheet所在页内容是否为空
if (xssfSheet == null) {
continue;
}
// 获得第numSheet个工作表的总行数

rows_sum = xssfSheet.getPhysicalNumberOfRows() - 1;

/*
* 如果工作簿的总行数为0或1,那么就跳出本次循环,继续下一个工作簿
*/
if (rows_sum <= 1) {
log.debug("该sheet无有效数据");
continue;
}
// 一次批量插入100条,计算循环次数
int loops = 1;
if (rows_sum % 100 == 0) {
loops = rows_sum / 100;
} else {
loops = rows_sum / 100 + 1;
}
log.debug("循环次数:{}", loops);
// 初始化每个numSheet的成功行数
rows_success = 0;
log.info("第<" + numSheet + ">个工作簿共<" + rows_sum + ">行!");
int m = 0;// 结束条数
int j = 0;// 起始条数
int s = 0;// 起始条数
for (int h = 0; h < loops; h++) {
j = h * 100 + 1;// 开始条数
s = j;
m = (h + 1) * 100 + 1;// 计算结束条数
if (m > rows_sum) {
m = rows_sum;
}
log.info("文件第<" + h + ">次从<" + j + ">行开始读取,读取到<" + m + ">行结束");
// 循环遍历每个sheet的行
out: for (; j < m; j++) {
// 获得行对象
xssfRow = xssfSheet.getRow(j);
/*
* 遍历每列的值
*/
for (int i = 0; i < 13; i++) {
// 获得列值
value = ScanUtils.getValue(xssfRow.getCell(i));
switch (i) {
/*
* 第一列:
*/
case 0:
break;
/*
* 第二列:
*/
case 1:
break;
。。。
default:
break;
}
}
// 增加一条读取记录
++rows_index;
}
}
}
is.close();
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-09-20
要是您的excel是按照一定格式的话,您可以使用POI来读取excel,然后将excel里面的内容存放进MySQL数据库里面本回答被提问者和网友采纳
第2个回答  2017-09-03
使用 POI 读excel,,,,,使用 jdbc写入mysql

~
~
~
相似回答