怎么用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数据库的主要内容,如果未能解决你的问题,请参考以下文章
用javascript怎么实现把excel中的数据批量导入到数据库表中