当前位置:首页 » 操作系统 » java实现excel导入数据库

java实现excel导入数据库

发布时间: 2022-03-08 17:50:58

A. java批量Excel数据导入数据库表在线等

你知道poi和jdbc吗?用这两个就可以了。再建立一个Bean用作数据传输。

List<ListpageBean>beanList=newArrayList<ListpageBean>();

Filefile=newFile("d:/test/test.xls");
InputStreamis=newFileInputStream(file);
HSSFWorkbookworkbook=newHSSFWorkbook(is);
HSSFSheetsheet=workbook.getSheetAt(0);
for(introwNum=0;rowNum<=sheet.getLastRowNum();rowNum++){
ListpageBeanbean=newListpageBean();
HSSFRowrow=sheet.getRow(rowNum);
siteId=(int)row.getCell(1).getNumericCellValue();
name=row.getCell(3).getStringCellValue();
url=row.getCell(4).getStringCellValue();
charset=row.getCell(5).getStringCellValue();

bean.setSiteId(siteId);
bean.setName(name);
bean.setUrl(url);
bean.setCharset(charset);
beanList.add(bean);
}
listpageService.addListpageBatch(beanList,ConfigUtil.getDataSourceArray()[0]);

这是我之前写的一部分代码,当然不全面,因为有些部分是别人写的我只是调用了一些方法,仅供参考。

B. java实现excel表导入,有的字段数据库中没有,需要关联表,怎么导入

excel 的导出,通常的做法是把查询的数据准备好才开始导出的
如果是sql问题的话,那么就是3表关联就好了
例如 :
网站中 存放 模块 和 功能的 2张表,多对多
create table mod (
id number ,
name varchar2(20) -- 模块名
);
create table func (
id number ,
name varchar2(20) --功能名
) ;
中间表
create table modfunc(
modID number references mod(id),
funcId number references func(id),
primary key (modid , funcid)
) ;

要求 导出 模块 =系统管理的所有功能,
导出的 excel格式如下
模块名 功能名
SQL语句
select m.name modname , f.name funcname from mod m
inner join modfunc mc on m.id = mc.modid
inner join func f on f.id = mc.funcid
where m.name = '系统管理'

这样查询出来的是个 list
然后再导出excel吧

希望对你有帮助

C. java将excel文件中的数据导入到mySql数据库中 完整代码

//根据excel文件,生成输入流
FileInputStream fis = new FileInputStream(new File("D:\\aa.xlsx"));
//用输入流生成poi 对象,以读取excel内容
//excel2007以上用XSSFWorkbook,2003用HSSFWorkbook
Workbook workbook = new XSSFWorkbook(fis);
Sheet sheet = workbook.getSheetAt(0);//取第一个sheet
String str1 = sheet.getRow(0).getCell(0).getStringCellValue();//取第一行第一列字符值
//getDateCellValue();日期类型 getNumericCellValue()数字类型;getHyperlink()超链接 等等()
//接下来 选择性插入数据库吧,明白?

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

可以利用jxl.jar这个包(封装了对execl的操作)
我写过一个,不知道你能看懂多少:

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.Arrays;
import jxl.Sheet;
import jxl.Workbook;
import jxl.read.biff.BiffException;

public class ExcelDemo {
public static void main(String[] args) throws BiffException, IOException {
executeQues("D:/corejava.xls");

}
public static void executeQues(String filename){
String sql ="insert into questionstest values(myseq_qusetion.nextval,?,?,?,?,?,?,?,?)";
Connection conn=MyDBCon.getConnection();
PreparedStatement state =null;
Sheet [] rsArray=getExcel(filename);
Sheet rs =rsArray[0];
try {
conn.setAutoCommit(false);
state = conn.prepareStatement(sql);
for(int i=0;i<rs.getRows();i++){
state.setString(1, (rs.getCell(0, i).getContents()));
state.setInt(2, Integer.parseInt(rs.getCell(1, i).getContents()));
state.setInt(3, Integer.parseInt(rs.getCell(2, i).getContents()));
state.setString(4, (rs.getCell(3, i).getContents()));
state.setString(5, (rs.getCell(4, i).getContents()));
state.setString(6, (rs.getCell(5, i).getContents()));
state.setString(7, (rs.getCell(6, i).getContents()));
state.setString(8, (rs.getCell(7, i).getContents()));
state.addBatch();
if(i%10==0){
int []ary=state.executeBatch();
state.clearBatch();
System.out.println(Arrays.toString(ary));
}
}
state.executeBatch();
conn.setAutoCommit(true);
} catch (Exception e) {
try {
conn.rollback();
} catch (SQLException e1) {
e1.printStackTrace();
}
e.printStackTrace();
}finally{
MyDBCon.close(state);
MyDBCon.close(conn);
}
}

private static Sheet[] getExcel(String filename){
jxl.Workbook rwb = null;
Sheet [] rsArray = null ;
Sheet rs = null ;
try {
InputStream is = new FileInputStream(filename);
rwb = Workbook.getWorkbook(is);
rsArray =rwb.getSheets();
rs =rsArray[0];
for(int i=0;i<rs.getRows();i++){
for(int j=0;j<rs.getColumns();j++){
System.out.print(rs.getCell(j, i).getContents()+"\t");
}
System.out.println();
}
} catch (BiffException e) {
e.printStackTrace();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}finally{
rwb.close();
}
return rsArray;
}
}

E. 用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();­


F. 怎样将Excel文件导入数据库(在JSP环境下Java代码)

我只给你说下第二步怎么样吧,其他的你自己应该可以解决的。
通过使用第三方包jxl.jar,我以前导过数据,也是解析Excel,将Excel中的数据导入数据库中,这个包很好下,如果找不到可以留下邮箱
//程序说明: 要导入jxl.jar到Classpath中。
import jxl.*;
import java.io.*;
import jxl.write.*;
/**
* <p>java读取Excel表格,拷贴心、更新Excel工作薄 </p>
*/
public class Test1 {
public static void main(String[] args) {
jxl.Workbook rwb = null;
try{
//构建Workbook对象 只读Workbook对象
//直接从本地文件创建Workbook
//从输入流创建Workbook
InputStream is = new FileInputStream("D://Book1.xls");
rwb = Workbook.getWorkbook(is);
//Sheet(术语:工作表)就是Excel表格左下角的Sheet1,Sheet2,Sheet3但在程序中
//Sheet的下标是从0开始的
//获取第一张Sheet表
Sheet rs = rwb.getSheet(0);
//获取Sheet表中所包含的总列数
int rsColumns = rs.getColumns();
//获取Sheet表中所包含的总行数
int rsRows = rs.getRows();
//获取指这下单元格的对象引用
for(int i=0;i<rsRows;i++){
for(int j=0;j<rsColumns;j++){
Cell cell = rs.getCell(j,i);
System.out.print(cell.getContents()+" ");
}
System.out.println();
}
//利用已经创建的Excel工作薄创建新的可写入的Excel工作薄
jxl.write.WritableWorkbook wwb = Workbook.createWorkbook(new File("D://Book2.xls"),rwb);
//读取第一张工作表
jxl.write.WritableSheet ws = wwb.getSheet(0);
//获取第一个单元格对象
jxl.write.WritableCell wc = ws.getWritableCell(0, 0);
//决断单元格的类型,做出相应的转化
if (wc.getType() == CellType.LABEL) {
Label l = (Label) wc;
l.setString("The value has been modified.");
}
//写入Excel对象
wwb.write();
wwb.close();
}catch(Exception e){
e.printStackTrace();
}
finally{
//操作完成时,关闭对象,翻译占用的内存空间
rwb.close();
}
}
}

G. 如何用java实现把excel表中的数据导入到mysql数据库已有的表中

packagecom.cn.util;

importjava.io.FileNotFoundException;
importjava.io.IOException;
importjava.io.InputStream;
importjava.util.ArrayList;
importjava.util.List;

importorg.apache.log4j.Logger;
importorg.apache.poi.hssf.usermodel.HSSFWorkbook;
importorg.apache.poi.ss.usermodel.Cell;
importorg.apache.poi.ss.usermodel.Row;
importorg.apache.poi.ss.usermodel.Sheet;
importorg.apache.poi.ss.usermodel.Workbook;
importorg.apache.poi.xssf.usermodel.XSSFWorkbook;
importorg.springframework.web.multipart.MultipartFile;
/**
*excel读写工具类
*@authorsun.kai
*/
publicclassPOIUtil{
privatestaticLoggerlogger=Logger.getLogger(POIUtil.class);
privatefinalstaticStringxls="xls";
privatefinalstaticStringxlsx="xlsx";

/**
*读入excel文件,解析后返回
*@paramfile
*@throwsIOException
*/
publicstaticList<String[]>readExcel(MultipartFilefile)throwsIOException{
//检查文件
checkFile(file);
//获得Workbook工作薄对象
Workbookworkbook=getWorkBook(file);
//创建返回对象,把每行中的值作为一个数组,所有行作为一个集合返回
List<String[]>list=newArrayList<String[]>();
if(workbook!=null){
for(intsheetNum=0;sheetNum<workbook.getNumberOfSheets();sheetNum++){
//获得当前sheet工作表
Sheetsheet=workbook.getSheetAt(sheetNum);
if(sheet==null){
continue;
}
//获得当前sheet的开始行
intfirstRowNum=sheet.getFirstRowNum();
//获得当前sheet的结束行
intlastRowNum=sheet.getLastRowNum();
//循环除了第一行的所有行
for(introwNum=firstRowNum+1;rowNum<=lastRowNum;rowNum++){
//获得当前行
Rowrow=sheet.getRow(rowNum);
if(row==null){
continue;
}
//获得当前行的开始列
intfirstCellNum=row.getFirstCellNum();
//获得当前行的列数
intlastCellNum=row.getPhysicalNumberOfCells();
String[]cells=newString[row.getPhysicalNumberOfCells()];
//循环当前行
for(intcellNum=firstCellNum;cellNum<lastCellNum;cellNum++){
Cellcell=row.getCell(cellNum);
cells[cellNum]=getCellValue(cell);
}
list.add(cells);
}
}
workbook.close();
}
returnlist;
}
publicstaticvoidcheckFile(MultipartFilefile)throwsIOException{
//判断文件是否存在
if(null==file){
logger.error("文件不存在!");
thrownewFileNotFoundException("文件不存在!");
}
//获得文件名
StringfileName=file.getOriginalFilename();
//判断文件是否是excel文件
if(!fileName.endsWith(xls)&&!fileName.endsWith(xlsx)){
logger.error(fileName+"不是excel文件");
thrownewIOException(fileName+"不是excel文件");
}
}
(MultipartFilefile){
//获得文件名
StringfileName=file.getOriginalFilename();
//创建Workbook工作薄对象,表示整个excel
Workbookworkbook=null;
try{
//获取excel文件的io流
InputStreamis=file.getInputStream();
//根据文件后缀名不同(xls和xlsx)获得不同的Workbook实现类对象
if(fileName.endsWith(xls)){
//2003
workbook=newHSSFWorkbook(is);
}elseif(fileName.endsWith(xlsx)){
//2007
workbook=newXSSFWorkbook(is);
}
}catch(IOExceptione){
logger.info(e.getMessage());
}
returnworkbook;
}
(Cellcell){
StringcellValue="";
if(cell==null){
returncellValue;
}
//把数字当成String来读,避免出现1读成1.0的情况
if(cell.getCellType()==Cell.CELL_TYPE_NUMERIC){
cell.setCellType(Cell.CELL_TYPE_STRING);
}
//判断数据的类型
switch(cell.getCellType()){
caseCell.CELL_TYPE_NUMERIC://数字
cellValue=String.valueOf(cell.getNumericCellValue());
break;
caseCell.CELL_TYPE_STRING://字符串
cellValue=String.valueOf(cell.getStringCellValue());
break;
caseCell.CELL_TYPE_BOOLEAN://Boolean
cellValue=String.valueOf(cell.getBooleanCellValue());
break;
caseCell.CELL_TYPE_FORMULA://公式
cellValue=String.valueOf(cell.getCellFormula());
break;
caseCell.CELL_TYPE_BLANK://空值
cellValue="";
break;
caseCell.CELL_TYPE_ERROR://故障
cellValue="非法字符";
break;
default:
cellValue="未知类型";
break;
}
returncellValue;
}
}

H. java,用POI实现将excel导入到数据库

用到的类 是 :
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;

try {
// List<String[]> 中的元素 行数组String[]为excel中的每一行
List<String[]> list = new ArrayList<String[]>();
InputStream is = new FileInputStream("test.xls");
HSSFWorkbook hwk = new HSSFWorkbook(is);// 将is流实例到 一个excel流里
HSSFSheet sh = hwk.getSheetAt(0);// 得到book第一个工作薄sheet
int rows = sh.getLastRowNum()+1 - sh.getFirstRowNum(); // 总行数
for(int i=0; i<rows; i++){
HSSFRow row = sh.getRow(i);
int cols = row.getLastCellNum()+1 - row.getFirstCellNum(); // 该行的总列数
String[] str = new String[cols]; // 用来存放该行每一列的值
for (int j = 0; j < cols; j++) {
Object col = row.getCell((short)j);
str[j] = col.toString();
}
}
......
......
循环变量 i 和 j 可以自己设定从第几行开始读,第几列开始读,下标从0开始。
然后你想做什么判断想做什么数据匹配都可以自己加了。
poi.hssf.usermodel.* jar包要是网上找不到,就给我发邮件,我邮给你:[email protected]

I. 使用java将excel里的数据怎么导入到数据库里了

使用JXL库读取EXECL,然后再INSERT到数据库了
使用POI库也可以

J. java中怎么把excel导入数据库

1、利用Excel第三方工具,将Excel文件读取到内存中。使用最简单,方便的工具是apache的poi工具包,自己网上下载http://poi.apache.org/,使用方法网上一搜一大片。

2、如果是对于特别大的excel(大于20M的话),简单的读取方法就容易内存溢出了,需要采用流式读取的方式,参考http://poi.apache.org/spreadsheet/how-to.html#xssf_sax_api

3、将已读入内存的Excel数据,整理成写数据库的数据结构,然后插入数据库。这部分工作应该不用介绍了,就是基本的数据库操作方法,与excel无关了

热点内容
centos给文件夹权限 发布:2024-09-24 15:14:15 浏览:289
shell脚本指定用户 发布:2024-09-24 15:00:03 浏览:257
如何给文件夹写保护 发布:2024-09-24 14:54:00 浏览:43
mysql查看数据库表结构 发布:2024-09-24 14:27:39 浏览:236
linuxvnc启动 发布:2024-09-24 14:10:50 浏览:219
pythondjango网站 发布:2024-09-24 14:01:09 浏览:96
ug编程入门 发布:2024-09-24 13:56:56 浏览:709
c语言合并字符串函数 发布:2024-09-24 13:55:36 浏览:112
运维过滤服务器的ip地址 发布:2024-09-24 13:52:26 浏览:92
苹果5忘记限制密码怎么办 发布:2024-09-24 13:13:55 浏览:268