『壹』 java poi Excel大数据量导入怎么提高速度
记得有个属性,
POI3.8的SXSSF包是XSSF的一个扩展版本,支持流处理,在生成大数据量的电子表内格且堆空间有容限时使用。SXSSF通过限制内存中可访问的记录行数来实现其低内存利用,当达到限定值时,新一行数据的加入会引起老一行的数据刷新到硬盘。
比如内存中限制行数为100,当行号到达101时,行号为0的记录刷新到硬盘并从内存中删除,当行号到达102时,行号为1的记录刷新到硬盘,并从内存中删除,以此类推。
rowAccessWindowSize代表指定的内存中缓存记录数,默认为100,此值可以通过
new SXSSFWorkbook(int rowAccessWindowSize)或SXSSFSheet.setRandomAccessWindowSize(int windowSize)来设置。
『贰』 java怎么读取很大的excel(20w条数据),怎么通过字节流获取到单元格的内容
使用java poi
package webservice;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
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 ExcelController {
@SuppressWarnings("deprecation")
public void excel() throws FileNotFoundException, IOException{
String filename = "d:\\excel.xls";
HSSFWorkbook workbook = new HSSFWorkbook(new FileInputStream(filename));
//按名引用excel工作表
// HSSFSheet sheet = workbook.getSheet("JSP");
//也可以用以下方式来获取excel的工作表,采用工作表的索引值
HSSFSheet sheet = workbook.getSheetAt(0);
HSSFRow row ;
HSSFCell cell1;
int rows=sheet.getLastRowNum();
for(int icount=0;icount<rows;icount++){
row = sheet.getRow(icount);
int line=row.getPhysicalNumberOfCells();
for(int j=0;j<line;j++){
cell1= row.getCell(j);
System.out.println(cell1+"--"+icount+"---"+j);
}
}
//打印读取值
// System.out.println(cell.getStringCellValue());
//新建一输出流
FileOutputStream fout = new FileOutputStream(filename); //PS:filename 是你另存为的路径,不处理直接写入模版文件
//存盘
workbook.write(fout);
fout.flush();
//结束关闭
fout.close();
}
public HSSFCell getCell(HSSFRow row, int index) {
// 取得分发日期单元格
HSSFCell cell = row.getCell(index);
// 如果单元格不存在
if (cell == null) {
// 创建单元格
cell = row.createCell(index);
}
// 返回单元格
return cell;
}
public static void main(String[] args) {
ExcelController ec = new ExcelController();
try {
ec.excel();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
『叁』 JAVA如何实现导出大数量EXCEL报表 数据大概100W条
好像是你的excel文件问题,你另外新建一个,再写点东西在里面试下随便给你一个我以前用过的importjava.io.*;importjava.text.SimpleDateFormat;importjava.util.*;importjava.sql.*;importjava.util.Date;importjava.util.HashMap;importjava.util.Map;importjxl.*;publicclassSimUpdate{privateStringfileName;publicSimUpdate(StringfileName){this.fileName=fileName;}staticMaptNames;static{tNames=newHashMap();}//下面是主要代码privatevoipdateDb(){try{Connectionconn=DbPool.connectDB();if(conn!=null){Statementstmt=conn.createStatement();/**********************************************/jxl.Workbookrwb=null;try{//构建Workbook对象只读Workbook对象//直接从本地文件创建Workbook//从输入流创建WorkbookInputStreamis=newFileInputStream(fileName);rwb=Workbook.getWorkbook(is);//Sheet(术语:工作表)就是Excel表格左下角的Sheet ,Sheet ,Sheet 但在程序中//Sheet的下标是从 开始的//获取第一张Sheet表Sheetrs=rwb.getSheet( );//获取Sheet表中所包含的总列数intrsColumns=rs.getColumns();//获取Sheet表中所包含的总行数intrsRows=rs.getRows();//获取指这下单元格的对象引用StringsimNumber="",termSeqId="";//指定SIM卡号及序列号for(inti= ;i ){System.out.println("成功插入第"+i+"条数据");}}}//以下代码为写入新的EXCEL,这里不使用,所以注释/*//利用已经创建的Excel工作薄创建新的可写入的Excel工作薄jxl.write.WritableWorkbookwwb=Workbook.createWorkbook(newFile("D://Book .xls"),rwb);//读取第一张工作表jxl.write.WritableSheetws=wwb.getSheet( );//获取第一个单元格对象jxl.write.WritableCellwc=ws.getWritableCell( , );//决断单元格的类型,做出相应的转化if(wc.getType()==CellType.LABEL){Labell=(Label)wc;l.setString("Thevaluehasbeenmodified.");}//写入Excel对象wwb.write();wwb.close();*/}catch(Exceptione){e.printStackTrace();}finally{//操作完成时,关闭对象,翻译占用的内存空间rwb.close();}/*********************************************/}}catch(Exceptione){e.printStackTrace();}}}
『肆』 请教一个java 操作excel大数据量的问题
POI3.8的SXSSF包是XSSF的一个扩展版本,支持流处理,在生成大数据量的电子表格且堆版空间有限时使用。SXSSF通过权限制内存中可访问的记录行数来实现其低内存利用,当达到限定值时,新一行数据的加入会引起老一行的数据刷新到硬盘。
比如内存中限制行数为100,当行号到达101时,行号为0的记录刷新到硬盘并从内存中删除,当行号到达102时,行号为1的记录刷新到硬盘,并从内存中删除,以此类推。
rowAccessWindowSize代表指定的内存中缓存记录数,默认为100,此值可以通过
new SXSSFWorkbook(int rowAccessWindowSize)或SXSSFSheet.setRandomAccessWindowSize(int windowSize)来设置。
『伍』 如何用java代码生成一个大数据的excel文件
POI包解析 或者 只是xls的话 用 jxl 也行 poi 全支持 xls 和xlsx
然后写入 保存 ok
HSSFSheet sheet= null;
(int sherrt= 0; sherrt <wr.getNumberOfSheets();sherrt++){
sheet = wr.getSheetAt(sherrt); // 获得sheet工作簿HSSFSheet
for(int i = 0 ; i<=sheet.getLastRowNum(); i++){
HSSFRow row = sheet.getRow(i);//获得行数
Iterator o = row.iterator(); //得到每行的值
int j= 0 ;
while(o.hasNext()){
if(!key){
kk = o.next().toString();
if(StrC.getSimilarityRatio(kk, Vle[j])>0.7){j++;}
}else{
GetVAR[j] = o.next().toString();
j++;
}
}
这个是得到 也可以写入
『陆』 Java如何导入大数据量excel,现在导入单个excel有几十万的数据,会出现内
用一些好的框架工具 spring batch
『柒』 java excel导入上千条数据需要多久
java excel导入上千条数据需要3-5个线程。
支持流处理,在生成大数据量的电子表格且堆空间有限时使用。SXSSF通过限制内存中可访问的记录行数来实现其低内存利用,当达到限定值时,新一行数据的加入会引起老一行的数据刷新到硬盘。
rowAccessWindowSize代表指定的内存中缓存记录数,默认为100,此值可以通过
new SXSSFWorkbook(int rowAccessWindowSize)SXSSFSheet.setRandomAccessWindowSize(int windowSize)来设置。
java excel分布式计算:
这个研究领域,主要研究分布式系统(Distributed system)如何进行计算。分布式系统是一组计算机,透过网络相互连接传递消息与通信后并协调它们的行为而形成的系统。组件之间彼此进行交互以实现一个共同的目标。
把需要进行大量计算的工程数据分区成小块,由多台计算机分别计算,再上传运算结果后,将结果统一合并得出数据结论的科学。分布式系统的例子来自有所不同的面向服务的架构,大型多人线上游戏,对等网络应用。分布式计算是一种新的计算方式。
『捌』 java excel导入上千条数据需要多久
java excel导入上千条数据需要3-5个线程。
支持流处理,在生成大数据量的电子表格且堆空间有限时使用。SXSSF通过限制内存中可访问的记录行数来实现其低内存利用,当达到限定值时,新一行数据的加入会引起老一行的数据刷新到硬盘。
rowAccessWindowSize代表指定的内存中缓存记录数,默认为100,此值可以通过
new SXSSFWorkbook(int rowAccessWindowSize)SXSSFSheet.setRandomAccessWindowSize(int windowSize)来设置。
java excel分布式计算:
这个研究领域,主要研究分布式系统(Distributed system)如何进行计算。分布式系统是一组计算机,透过网络相互连接传递消息与通信后并协调它们的行为而形成的系统。组件之间彼此进行交互以实现一个共同的目标。
把需要进行大量计算的工程数据分区成小块,由多台计算机分别计算,再上传运算结果后,将结果统一合并得出数据结论的科学。分布式系统的例子来自有所不同的面向服务的架构,大型多人线上游戏,对等网络应用。分布式计算是一种新的计算方式。