java做了个excel导入功能,如何提高导入效率

java做了个excel导入功能,如何提高导入效率,第1张

在导入前先去数据库一次性的取出所有的数据放入集合A(这个的所有根据情况来,不一定是必须要全部数据),然后将excel内的所有的序号和A中的主键去比较,A中有的就表示已经存在不插入,而A中没有的则表示数据库中不存在则需要导入

参考下面方法:

import javaioFileInputStream;­

import javaioFileNotFoundException;­

import javaioIOException;­

import orgapachecommonsloggingLog;­

import orgapachecommonsloggingLogFactory;­

import orgapachepoihssfusermodelHSSFCell;­

import orgapachepoihssfusermodelHSSFRow;­

import orgapachepoihssfusermodelHSSFSheet;­

import orgapachepoihssfusermodelHSSFWorkbook;­

public class TestExcel {­

//记录类的输出信息­

static Log log = LogFactorygetLog(TestExcelclass); ­

//获取Excel文档的路径­

public static String filePath = "D://excelxls";­

public static void main(String[] args) {­

try {­

// 创建对Excel工作簿文件的引用­

HSSFWorkbook wookbook = new HSSFWorkbook(new FileInputStream(filePath));­

// 在Excel文档中,第一张工作表的缺省索引是0

// 其语句为:HSSFSheet sheet = workbookgetSheetAt(0);­

HSSFSheet sheet = wookbookgetSheet("Sheet1");­

//获取到Excel文件中的所有行数­

int rows = sheetgetPhysicalNumberOfRows();

//遍历行­

for (int i = 0; i < rows; i++) {­

// 读取左上端单元格­

HSSFRow row = sheetgetRow(i);­

// 行不为空­

if (row != null) {­

//获取到Excel文件中的所有的列­

int cells = rowgetPhysicalNumberOfCells();­

String value = ""; ­

//遍历列­

for (int j = 0; j < cells; j++) {­

//获取到列的值­

HSSFCell cell = rowgetCell(j);­

if (cell != null) {­

switch (cellgetCellType()) {­

case HSSFCellCELL_TYPE_FORMULA:­

break;­

case HSSFCellCELL_TYPE_NUMERIC:­

value += cellgetNumericCellValue() + ","; ­

break; ­

case HSSFCellCELL_TYPE_STRING:­

value += cellgetStringCellValue() + ",";­

break;­

default:­

value += "0";­

break;­

}

// 将数据插入到mysql数据库中­

String[] val = valuesplit(",");­

TestEntity entity = new TestEntity();­

entitysetNum1(val[0]);­

entitysetNum2(val[1]);­

entitysetNum3(val[2]);­

entitysetNum4(val[3]);­

entitysetNum5(val[4]);­

entitysetNum6(val[5]);­

TestMethod method = new TestMethod();­

methodAdd(entity);­

} catch (FileNotFoundException e) {­

eprintStackTrace();­

} catch (IOException e) {­

eprintStackTrace();­

package bisexcel;

import javaioFile;

import javaioFileInputStream;

import javaioInputStream;

import javautilArrayList;

import javautilList;

import javautilMap;

import javautilTreeMap;

import jxlSheet;

import jxlWorkbook;

public class Excel {

@SuppressWarnings("unchecked")

public List addCust(File file){

List list=new ArrayList();

List list2=new ArrayList();

Workbook rwb=null;

try {

List list1=new ArrayList();

InputStream is=new FileInputStream(file);//读取文件(所要导入excel的保存目录,如:f:\\axls)

rwb=WorkbookgetWorkbook(is);//创建工作薄

Sheet rs=rwbgetSheet(0);//读取excel中的第一个工作表(默认新建excel下面有sheet1,sheet2,sheet3)

int cellCount=rsgetColumns();//获取Sheet表中所包含的总列数

int rowCount=rsgetRows();//获取Sheet表中所包含的总行数

for(int m=0;m<cellCount;m++){//将表的第一行数据保存到list1中(列名),即id,name ,age

String cell=rsgetCell(m,0)getContents();

list1add(cell);

}

for(int i=1;i<rowCount;i++){//获取值

Map map=new TreeMap();

for(int j=0;j<cellCount;j++){

mapput(list1get(j),rsgetCell(j,i)getContents());//将值以键/值对方式保存到map对象中即(id:1,name:zhangsan,age:18)

}

listadd(map);//将值保存到list中

//Systemoutprintln(listget(i-1));

}

list2add(list1);//将表头(id,name,age)保存到list2中

list2add(list);//将值保存到list2中

} catch (Exception e) {

// TODO Auto-generated catch block

eprintStackTrace();

}finally{

rwbclose();

}

return list2;

}

public void tosql(){

List list=addCust(file);//file:所要导入excel的保存目录,如:f:\\axls

Map map=new HashMap();

String[] values=new String[ls2size()];//保存id,name,age 值

for (int i =0; i < ls2size(); i++) {

map=(Map)ls2get(i);

String value="";

id=(String)mapget("id");

name=(String)mapget("name");

age=(String)mapget("age");

value=id+";"+name+";"+age;

values[i]=value;

}

}

}

这是段读取excel表数据的代码,在tosql方法中调用addCust方法读取excel表,最后把所有行的id,name,age值保存到了values数组中,也可以保存到类中,如果你会对数据库 *** 作的话,

后面的你自己弄下就行了,不会的话留言,我晚上在告诉你,我现在上班呢,时间有限,只能写这么多了

以上就是关于java做了个excel导入功能,如何提高导入效率全部的内容,包括:java做了个excel导入功能,如何提高导入效率、用java怎么将excel表格数据导入到mysql数据库中、用poi怎样把excel文件里面的数据导入数据库三张关联的表中等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9769106.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-01
下一篇 2023-05-01

发表评论

登录后才能评论

评论列表(0条)

保存