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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了怎么用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();
参考技术A 要是您的excel是按照一定格式的话,您可以使用POI来读取excel,然后将excel里面的内容存放进MySQL数据库里面本回答被提问者和网友采纳 参考技术B 使用 POI 读excel,,,,,使用 jdbc写入mysql

~
~
~

用java怎么将excel表格数据导入到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 = 0; i < rows; i++) ­
// 读取左上端单元格­
HSSFRow row = sheet.getRow(i);­
// 行不为空­
if (row != null) ­
//获取到Excel文件中的所有的列­
int cells = row.getPhysicalNumberOfCells();­
String value = ""; ­
//遍历列­
for (int j = 0; j < cells; j++) ­
//获取到列的值­
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();­
­
­
­
参考技术A 现有poi读取到java里,然后通过java操作数据库把读取的内容插入到数据库里。 参考技术B 不用java,直接复制excel到sql就可以

以上是关于怎么用java程序把excel导入到mysql数据库的主要内容,如果未能解决你的问题,请参考以下文章

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

用javascript怎么实现把excel中的数据批量导入到数据库表中

如何用Java实现把excel表中的数据导入到mysql数据库已有的表中?

怎么把excel中的数据批量导入到mysql数据中

laravel 怎么把excel数据导入到数据库中

java怎么把excel文件导入到web网页上显示