poi3.8默认情况下,用到的临时目录是系统自带的临时目录,在本次项目中遇到临时目录超限,所以需要修改源代码指定需要设置的临时目录
需要修改的类为:GZIPSheetDataWriter,SheetDataWriter
GZIPSheetDataWriter压缩时候用到,如在构造workbook时:
wokbook = new SXSSFWorkbook(new XSSFWorkbook(
new FileInputStream(FanExcel2007.TEMPLATE_PATH)), 2000,true);
false代表不压缩,默认为False用SheetDataWriter
GZIPSheetDataWriter修改:
/**
* @return temp file to write sheet data
*/
public File createTempFile()throws IOException {
// 获取tmp目录
String tmpDir = null;
File fd = null;
File file = null;
try {
// tmpDir = FileUtils.readFileToString(new File(SheetDataWriter.class
// .getResource("/tmpPath.txt").getFile()), "utf8");
tmpDir="/home/hdfs/effect/liubx/tmp";
System.out.println("临时缓存目录为:" + tmpDir);
if (tmpDir != null && !tmpDir.equals("")) {
file = new File(tmpDir);
if (!file.exists()) {
file.mkdirs();
}
}
} catch (Exception ex) {
System.out.println("指定缓存目录失败:" + tmpDir);
tmpDir = null;
}
if (tmpDir == null || tmpDir.equals("")) {
fd = File.createTempFile("poi-sxssf-sheet-xml", ".gz");
} else {
fd = File.createTempFile("poi-sxssf-sheet-xml", ".gz",file);
}
fd.deleteOnExit();
return fd;
}
SheetDataWriter修改处:
/**
* Create a temp file to write sheet data.
* By default, temp files are created in the default temporary-file directory
* with a prefix "poi-sxssf-sheet" and suffix ".xml". Subclasses can override
* it and specify a different temp directory or filename or suffix, e.g. <code>.gz</code>
*
* @return temp file to write sheet data
*/
public File createTempFile()throws IOException {
// 获取tmp目录
String tmpDir = null;
File fd = null;
File file = null;
try {
tmpDir="/home/hdfs/effect/liubx/tmp";
System.out.println("临时缓存目录为:" + tmpDir);
if (tmpDir != null && !tmpDir.equals("")) {
file = new File(tmpDir);
if (!file.exists()) {
file.mkdirs();
}
}
} catch (Exception ex) {
System.out.println("指定缓存目录失败:" + tmpDir);
tmpDir = null;
}
if (tmpDir == null || tmpDir.equals("")) {
fd = File.createTempFile("poi-sxssf-sheet", ".xml");
} else {
fd = File.createTempFile("poi-sxssf-sheet", ".xml",file);
}
fd.deleteOnExit();
return fd;
}
这样可以写超大数据,在写超大数据时最好用压缩的方式,写文件比较快!
分享到:
相关推荐
导入excel 导出excle poi3.8 全量包
Java读取excel的工具,poi3.8版本,下载后lib下的三个jar包不要忘了必须导入,否则调用报错
集合了所有的POI3.8的包和POI3.5的包,主要用于java poi excel模板的读取
Excel导出 利用poi-3.8-20120326.jar包 和工具包sl-common.jar
导出excel word的poi jar包 以及各种版本jar包 根据需要选择合适的jar包 网上一些代码实现方法 高版本的会移除一些方法 低版本的直接可以调用方法
压缩包里面是java的poi jar包。主要操作excel导入和导出,有两个版本分别是3.8和4.1.2的
导入导出excel2007需要的poi3.8以上的jar包系列,0积分,里面包含了多个jar包
绝对能用 版本稳定 完美支持2003-2010的Excel解析和导出
poi导出excel版本poi3.8,之前下载4.0以上sdk不支持,导出支持hssf和xssf。
导出excel文档所需要的poi的jar包,包含poi-3.8.jar,poi-ooxml-3.8.jar,poi-ooxml-schemas-3.8.jar
对于excel导入导出,excel解析,比jxl操作excel更加方便
包含poi-3.8的jar包和依赖包,可以支持excel中的数据有效性,比如自定义下拉列表。
同时支持Excel-2003和Excel-2007,excel-2003解析采用poi的eventusermodel模式实现,2007采用xmlreader实现,经项目验证,excel文件20W条数据没有任何问题,仅读取的话2-3分钟解析完毕。 网络上有关eventusermodel...
经测试导出23万数据耗时在3min左右 使用方法见com.teacherInfo.export.test.Test 提供依赖的POI开发包
Excel导出 利用poi-3.8-20120326.jar包 和工具包sl-common.jar
POI3.8版本之前的版本处理大量数据的导出Excel效果不是很理想,主要在与Excel2003版本单个Sheet的行限制为65536,大量数据的导出得分多个Sheet,针对这一点,客户就不会满意。其次,在实验过程中,大数据量的导出很...
该版本在性能上有着显著的提升,同时修复了不少的bug, Apache POI是一个开源的...poi最新版本3.8,操作对Word,Excel导入导出数据库很有帮助,项目中很多都在使用poi,最新版本赶紧使用吧!(此文件可以用winRar打开)
此代码为java运用poi3.8插件实现运用模版导入导出复杂excel
poi导入导出Excel表格的所用jar包,包括poi-3.8-20120326 等jar包
poi jar包 java导出 excel 的jar包