⑴ 如何用java完成Excel快速的导入导出
导出现在我们定义好对象了,如何导出Excel –ExcelExportUtil 这个导出工具类public void testExportExcel_1() throws Exception {ExportParams params = new ExportParams("0328课程表", "日期:2016-03-28", "六年一班");Workbook workbook = ExcelExportUtil.exportExcel(params, CourseEntity.class,courseList);FileOutputStream fos = new FileOutputStream("D:/excel/0328课程表.xls");workbook.write(fos);fos.close();}我们只要把我们定义好的对象的class传进去,以及对象的集合,Easypoi就可以返回一个Excel的workbook了,同时Easypoi是兼容03版本office和07版本office,你要穿个参数指定下类型及可以了,是不是不是比我们自己写代码简单多了,最少只需要2行代码就可以完成我们的office操作了导入我们把导出写完了,导入是不是很复杂呢,也不是,导入也是同样简单,定时实体和上面定义的方式一样导入是用导入工具类ImportParams params = new ImportParams();params.setHeadRows(2);List<CourseEntity> list = ExcelImportUtil.importExcel(inputStream, CourseEntity.class, params);定义下表头的参数,然后把流传入进去就可以得到我们的对象列表是不是so easy.赶快来使用吧
⑵ java excel导入上千条数据需要多久
java excel导入上千条数据需要3-5个线程。
支持流处理,在生成大数据量的电子表格且堆空间有限时使用。SXSSF通过限制内存中可访问的记录行数来实现其低内存利用,当达到限定值时,新一行数据的加入会引起老一行的数据刷新到硬盘。
rowAccessWindowSize代表指定的内存中缓存记录数,默认为100,此值可以通过new SXSSFWorkbook(int rowAccessWindowSize)SXSSFSheet.setRandomAccessWindowSize(int windowSize)来设置。
java excel分布式计算:
这个研究领域,主要研究分布式系统(Distributed system)如何进行计算。分布式系统是一组计算机,透过网络相互连接传递消息与通信后并协调它们的行为而形成的系统。组件之间彼此进行交互以实现一个共同的目标。
把需要进行大量计算的工程数据分区成小块,由多台计算机分别计算,再上传运算结果后,将结果统一合并得出数据结论的科学。分布式系统的例子来自有所不同的面向服务的架构,大型多人线上游戏,对等网络应用。分布式计算是一种新的计算方式。
⑶ Java如何导入大数据量excel,现在导入单个excel有几十万的数据,会出现内
用一些好的框架工具 spring batch
⑷ 如何用java导入excel数据到数据库
public static void main(String args[]) throws BiffException, IOException, WriteException{ //1 从Excel文件读取数据表 //Java Excel API既可以从本地文件系统的一个文件(.xls),也可以从输入流中读取Excel数据表。 //读取Excel数据表的第一步是创建Workbook(术语:工作薄),下面的代码片段举例说明了应该如何操作: //(完整代码见ExcelReading.java) try { //构建Workbook对象, 只读Workbook对象 //直接从本地文件创建Workbook //从输入流创建Workbook InputStream is = new FileInputStream("D:/user.xls"); jxl.Workbook rwb = Workbook.getWorkbook(is); //一旦创建了Workbook,我们就可以通过它来访问Excel Sheet(术语:工作表)。参考下面的代码片段: //获取第一张Sheet表 Sheet rs = (Sheet) rwb.getSheet(0); //我们既可能通过Sheet的名称来访问它,也可以通过下标来访问它。如果通过下标来访问的话, //要注意的一点是下标从0开始,就像数组一样。 //一旦得到了Sheet,我们就可以通过它来访问Excel Cell(术语:单元格)。参考下面的代码片段: //获取第一行,第一列的值 Cell c00 = ((jxl.Sheet) rs).getCell(0, 0); String strc00 = c00.getContents(); //获取第一行,第二列的值 Cell c10 = ((jxl.Sheet) rs).getCell(1, 0); String strc10 = c10.getContents(); //获取第二行,第二列的值 Cell c11 = ((jxl.Sheet) rs).getCell(1, 1); String strc11 = c11.getContents(); System.out.println("Cell(0, 0)" + " value : " + strc00 + "; type : " + c00.getType()); System.out.println("Cell(1, 0)" + " value : " + strc10 + "; type : " + c10.getType()); System.out.println("Cell(1, 1)" + " value : " + strc11 + "; type : " + c11.getType()); //如果仅仅是取得Cell的值,我们可以方便地通过getContents()方法, //它可以将任何类型的Cell值都作为一个字符串返回。示例代码中Cell(0, 0)是文本型, //Cell(1, 0)是数字型,Cell(1,1)是日期型,通过getContents(),三种类型的返回值都是字符型。 //如果有需要知道Cell内容的确切类型,API也提供了一系列的方法。参考下面的代码片段: String strcc00 = null; double strcc10 = 0.00; Date strcc11 = null; Cell cc00 = ((jxl.Sheet) rs).getCell(0, 0); Cell cc10 = ((jxl.Sheet) rs).getCell(1, 0); Cell cc11 = ((jxl.Sheet) rs).getCell(1, 1); if(c00.getType() == CellType.LABEL) { LabelCell labelc00 = (LabelCell)cc00; strcc00 = labelc00.getString(); } if(c10.getType() == CellType.NUMBER) { NumberCell numc10 = (NumberCell)cc10; strcc10 = numc10.getValue(); } if(c11.getType() == CellType.DATE) { DateCell datec11 = (DateCell)cc11; strcc11 = datec11.getDate(); } System.out.println("Cell(0, 0)" + " value : " + strcc00 + "; type : " + cc00.getType()); System.out.println("Cell(1, 0)" + " value : " + strcc10 + "; type : " + cc10.getType()); System.out.println("Cell(1, 1)" + " value : " + strcc11 + "; type : " + cc11.getType()); //在得到Cell对象后,通过getType()方法可以获得该单元格的类型,然后与API提供的基本类型相匹配, //强制转换成相应的类型,最后调用相应的取值方法getXXX(),就可以得到确定类型的值。 //API提供了以下基本类型,与Excel的数据格式相对应,如下图所示: //每种类型的具体意义,请参见Java Excel API Document。 //当你完成对Excel电子表格数据的处理后,一定要使用close()方法来关闭先前创建的对象, //以释放读取数据表的过程中所占用的内存空间,在读取大量数据时显得尤为重要。参考如下代码片段: //操作完成时,关闭对象,释放占用的内存空间 rwb.close(); } catch (Exception e) { e.printStackTrace(); } //Java Excel API提供了许多访问Excel数据表的方法,在这里我只简要地介绍几个常用的方法, //其它的方法请参考附录中的Java Excel API Document。 //Workbook类提供的方法 //1. int getNumberOfSheets(); //获得工作薄(Workbook)中工作表(Sheet)的个数,示例: jxl.Workbook rwb = jxl.Workbook.getWorkbook(new File("D:/user.xls")); int sheets = rwb.getNumberOfSheets(); //2. Sheet[] getSheets(); //返回工作薄(Workbook)中工作表(Sheet)对象数组,示例: jxl.Workbook rwb2 = jxl.Workbook.getWorkbook(new File("D:/user.xls")); Sheet[] sheets2 = (Sheet[]) rwb2.getSheets(); //3. String getVersion(); //返回正在使用的API的版本号,好像是没什么太大的作用。 jxl.Workbook rwb3 = jxl.Workbook.getWorkbook(new File("D:/user.xls")); String apiVersion = rwb3.getVersion(); //Sheet接口提供的方法 //1) String getName(); //获取Sheet的名称,示例: jxl.Workbook rwb4 = jxl.Workbook.getWorkbook(new File("D:/user.xls")); jxl.Sheet rs = rwb4.getSheet(0); String sheetName = rs.getName(); //2) int getColumns() //获取Sheet表中所包含的总列数,示例: jxl.Workbook rwb5 = jxl.Workbook.getWorkbook(new File("D:/user.xls")); jxl.Sheet rs2 = rwb5.getSheet(0); int rsColumns = rs2.getColumns(); //3) Cell[] getColumn(int column) //获取某一列的所有单元格,返回的是单元格对象数组,示例: jxl.Workbook rwb6 = jxl.Workbook.getWorkbook(new File("D:/user.xls")); jxl.Sheet rs3 = rwb6.getSheet(0); Cell[] cell = rs3.getColumn(0); //4) int getRows() //获取Sheet表中所包含的总行数,示例: jxl.Workbook rwb7 = jxl.Workbook.getWorkbook(new File("D:/user.xls")); jxl.Sheet rs4 = rwb7.getSheet(0); int rsRows = rs4.getRows(); //5) Cell[] getRow(int row) //获取某一行的所有单元格,返回的是单元格对象数组,示例子: jxl.Workbook rwb8 = jxl.Workbook.getWorkbook(new File("D:/user.xls")); jxl.Sheet rs5 = rwb8.getSheet(0); Cell[] cell5 = rs5.getRow(0); //6) Cell getCell(int column, int row) //获取指定单元格的对象引用,需要注意的是它的两个参数,第一个是列数,第二个是行数, //这与通常的行、列组合有些不同。 jxl.Workbook rwb9 = jxl.Workbook.getWorkbook(new File("D:/user.xls")); jxl.Sheet rs6 = rwb9.getSheet(0); Cell cell6 = rs6.getCell(0, 0);
⑸ java使用什么技术实现excel数据的批量导入导出
java使用第三方工具包POI技术实现excel数据的批量导入导出。
举例如下:
1、下载apache的相关jar包。poi-ooxml-3.6.jar xmlbeans-2.3.0.jar等,如图:
2、编写相关的读写类
/**
* 读取xls文件内容
*/
private List<XlsDto> readXls() throws IOException {
InputStream is = new FileInputStream("test.xls");
HSSFWorkbook hssfWorkbook = new HSSFWorkbook(is);
XlsDto xlsDto = null;
List<XlsDto> list = new ArrayList<XlsDto>();
// 循环工作表Sheet
for (int numSheet = 0; numSheet < hssfWorkbook.getNumberOfSheets(); numSheet++) {
HSSFSheet hssfSheet = hssfWorkbook.getSheetAt(numSheet);
if (hssfSheet == null) {
continue;
}
// 循环行Row
for (int rowNum = 1; rowNum <= hssfSheet.getLastRowNum(); rowNum++) {
HSSFRow hssfRow = hssfSheet.getRow(rowNum);
if (hssfRow == null) {
continue;
}
xlsDto = new XlsDto();
// 循环列Cell
// 0学号 1姓名 2学院 3课程名 4 成绩
// for (int cellNum = 0; cellNum <=4; cellNum++) {
HSSFCell xh = hssfRow.getCell(0);
if (xh == null) {
continue;
}
xlsDto.setXh(getValue(xh));
HSSFCell xm = hssfRow.getCell(1);
if (xm == null) {
continue;
}
xlsDto.setXm(getValue(xm));
HSSFCell yxsmc = hssfRow.getCell(2);
if (yxsmc == null) {
continue;
}
xlsDto.setYxsmc(getValue(yxsmc));
HSSFCell kcm = hssfRow.getCell(3);
if (kcm == null) {
continue;
}
xlsDto.setKcm(getValue(kcm));
HSSFCell cj = hssfRow.getCell(4);
if (cj == null) {
continue;
}
xlsDto.setCj(Float.parseFloat(getValue(cj)));
list.add(xlsDto);
}
}
return list;
}
3、导出就是输入到一个新的excel文件里面
public void writeXls(List<Student> list, String path) throws Exception {
if (list == null) {原始数据为空,直接返回
return;
}
int countColumnNum = list.size();//设置列数
HSSFWorkbook book = new HSSFWorkbook(); //创建工作表对象
HSSFSheet sheet = book.createSheet("studentSheet");
// 创建第一行
HSSFRow firstRow = sheet.createRow(0);
HSSFCell[] firstCells = new HSSFCell[countColumnNum];
//创建表头
String[] options = { "no", "name", "age", "score" };
//循环数据域
for (int j = 0; j < options.length; j++) {
firstCells[j] = firstRow.createCell(j);
firstCells[j].setCellValue(new HSSFRichTextString(options[j]));
}
//处理每一个cell的值
for (int i = 0; i < countColumnNum; i++) {
HSSFRow row = sheet.createRow(i + 1);
Student student = list.get(i);
for (int column = 0; column < options.length; column++) {
HSSFCell no = row.createCell(0);
HSSFCell name = row.createCell(1);
HSSFCell age = row.createCell(2);
HSSFCell score = row.createCell(3);
no.setCellValue(student.getNo());
name.setCellValue(student.getName());
age.setCellValue(student.getAge());
score.setCellValue(student.getScore());
}
}
File file = new File(path);
OutputStream os = new FileOutputStream(file);
System.out.println(Common.WRITE_DATA + path);
book.write(os);
os.close();
}
⑹ 如何用java导入Excel数据到数据库
public static void main(String args[]) throws BiffException, IOException, WriteException{//1 从Excel文件读取数据表//Java Excel API既可以从本地文件系统的一个文件(.xls),也可以从输入流中读取Excel数据表。//读取Excel数据表的第一步是创建Workbook(术语:工作薄),下面的代码片段举例说明了应该如何操作://(完整代码见ExcelReading.java)try{//构建Workbook对象, 只读Workbook对象//直接从本地文件创建Workbook//从输入流创建WorkbookInputStream is = new FileInputStream("D:/user.xls");jxl.Workbook rwb = Workbook.getWorkbook(is);//一旦创建了Workbook,我们就可以通过它来访问Excel Sheet(术语:工作表)。参考下面的代码片段://获取第一张Sheet表Sheet rs = (Sheet) rwb.getSheet(0);//我们既可能通过Sheet的名称来访问它,也可以通过下标来访问它。如果通过下标来访问的话,//要注意的一点是下标从0开始,就像数组一样。//一旦得到了Sheet,我们就可以通过它来访问Excel Cell(术语:单元格)。参考下面的代码片段://获取第一行,第一列的值Cell c00 = ((jxl.Sheet) rs).getCell(0, 0);String strc00 = c00.getContents();//获取第一行,第二列的值Cell c10 = ((jxl.Sheet) rs).getCell(1, 0);String strc10 = c10.getContents();//获取第二行,第二列的值Cell c11 = ((jxl.Sheet) rs).getCell(1, 1);String strc11 = c11.getContents();System.out.println("Cell(0, 0)" + " value : " + strc00 + "; type : " + c00.getType());System.out.println("Cell(1, 0)" + " value : " + strc10 + "; type : " + c10.getType());System.out.println("Cell(1, 1)" + " value : " + strc11 + "; type : " + c11.getType());//如果仅仅是取得Cell的值,我们可以方便地通过getContents()方法,//它可以将任何类型的Cell值都作为一个字符串返回。示例代码中Cell(0, 0)是文本型,//Cell(1, 0)是数字型,Cell(1,1)是日期型,通过getContents(),三种类型的返回值都是字符型。//如果有需要知道Cell内容的确切类型,API也提供了一系列的方法。参考下面的代码片段:String strcc00 = null;double strcc10 = 0.00;Date strcc11 = null;Cell cc00 = ((jxl.Sheet) rs).getCell(0, 0);Cell cc10 = ((jxl.Sheet) rs).getCell(1, 0);Cell cc11 = ((jxl.Sheet) rs).getCell(1, 1);if(c00.getType() == CellType.LABEL){LabelCell labelc00 = (LabelCell)cc00;strcc00 = labelc00.getString();}if(c10.getType() == CellType.NUMBER){NumberCell numc10 = (NumberCell)cc10;strcc10 = numc10.getValue();}if(c11.getType() == CellType.DATE){DateCell datec11 = (DateCell)cc11;strcc11 = datec11.getDate();}System.out.println("Cell(0, 0)" + " value : " + strcc00 + "; type : " + cc00.getType());System.out.println("Cell(1, 0)" + " value : " + strcc10 + "; type : " + cc10.getType());System.out.println("Cell(1, 1)" + " value : " + strcc11 + "; type : " + cc11.getType());//在得到Cell对象后,通过getType()方法可以获得该单元格的类型,然后与API提供的基本类型相匹配,//强制转换成相应的类型,最后调用相应的取值方法getXXX(),就可以得到确定类型的值。//API提供了以下基本类型,与Excel的数据格式相对应,如下图所示://每种类型的具体意义,请参见Java Excel API Document。//当你完成对Excel电子表格数据的处理后,一定要使用close()方法来关闭先前创建的对象,//以释放读取数据表的过程中所占用的内存空间,在读取大量数据时显得尤为重要。参考如下代码片段://操作完成时,关闭对象,释放占用的内存空间rwb.close();}catch (Exception e){e.printStackTrace();}//Java Excel API提供了许多访问Excel数据表的方法,在这里我只简要地介绍几个常用的方法,//其它的方法请参考附录中的Java Excel API Document。//Workbook类提供的方法//1. int getNumberOfSheets();//获得工作薄(Workbook)中工作表(Sheet)的个数,示例:jxl.Workbook rwb = jxl.Workbook.getWorkbook(new File("D:/user.xls"));int sheets = rwb.getNumberOfSheets();//2. Sheet[] getSheets();//返回工作薄(Workbook)中工作表(Sheet)对象数组,示例:jxl.Workbook rwb2 = jxl.Workbook.getWorkbook(new File("D:/user.xls"));Sheet[] sheets2 = (Sheet[]) rwb2.getSheets();//3. String getVersion();//返回正在使用的API的版本号,好像是没什么太大的作用。jxl.Workbook rwb3 = jxl.Workbook.getWorkbook(new File("D:/user.xls"));String apiVersion = rwb3.getVersion();//Sheet接口提供的方法//1) String getName();//获取Sheet的名称,示例:jxl.Workbook rwb4 = jxl.Workbook.getWorkbook(new File("D:/user.xls"));jxl.Sheet rs = rwb4.getSheet(0);String sheetName = rs.getName();//2) int getColumns()//获取Sheet表中所包含的总列数,示例:jxl.Workbook rwb5 = jxl.Workbook.getWorkbook(new File("D:/user.xls"));jxl.Sheet rs2 = rwb5.getSheet(0);int rsColumns = rs2.getColumns();//3) Cell[] getColumn(int column)//获取某一列的所有单元格,返回的是单元格对象数组,示例:jxl.Workbook rwb6 = jxl.Workbook.getWorkbook(new File("D:/user.xls"));jxl.Sheet rs3 = rwb6.getSheet(0);Cell[] cell = rs3.getColumn(0);//4) int getRows()//获取Sheet表中所包含的总行数,示例:jxl.Workbook rwb7 = jxl.Workbook.getWorkbook(new File("D:/user.xls"));jxl.Sheet rs4 = rwb7.getSheet(0);int rsRows = rs4.getRows();//5) Cell[] getRow(int row)//获取某一行的所有单元格,返回的是单元格对象数组,示例子:jxl.Workbook rwb8 = jxl.Workbook.getWorkbook(new File("D:/user.xls"));jxl.Sheet rs5 = rwb8.getSheet(0);Cell[] cell5 = rs5.getRow(0);//6) Cell getCell(int column, int row)//获取指定单元格的对象引用,需要注意的是它的两个参数,第一个是列数,第二个是行数,//这与通常的行、列组合有些不同。jxl.Workbook rwb9 = jxl.Workbook.getWorkbook(new File("D:/user.xls"));jxl.Sheet rs6 = rwb9.getSheet(0);Cell cell6 = rs6.getCell(0, 0);
⑺ 如何在java程序中导入excel数据
利用数据库连接。首先你要创建数据源,创建数据源就是在控制面板中将你的ecel数据导入到odbc中,然后在用java语句实现连接,从而运行显示数据。如果你还是觉得不明白的话,建议你去看一下数据库那章。
⑻ 急啊!java中怎么把10万条数据导入Excel,
额,不要这样,就算导入了也会报内存溢出的 正确的办法是分批 或者压缩。
⑼ java怎么批量导入excel数据
两种方案:1.可以对数据库中的这张表进行本地缓存处理,验证时调用缓存进行匹配验证。2.用程序生成需要导入excel的数据模板,在模板里将要验证的这一列做成下拉框。此模板条件下的excel数据文件批量导入时即不用校验。具体采用哪种视你的应
⑽ java poi Excel大数据量导入怎么提高速度
记得有个属性,POI3.8的SXSSF包是XSSF的一个扩展版本,支持流处理,在生成大数据量的电子表内格且堆空间有容限时使用。SXSSF通过限制内存中可访问的记录行数来实现其低内存利用,当达到限定值时,新一行数据的加入会引起老一行的数据刷新到硬盘。 比如内存中限制行数为100,当行号到达101时,行号为0的记录刷新到硬盘并从内存中删除,当行号到达102时,行号为1的记录刷新到硬盘,并从内存中删除,以此类推。 rowAccessWindowSize代表指定的内存中缓存记录数,默认为100,此值可以通过new SXSSFWorkbook(int rowAccessWindowSize)或SXSSFSheet.setRandomAccessWindowSize(int windowSize)来设置。