`
lbxhappy
  • 浏览: 308037 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

导出excel2007 poi3.8

阅读更多
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;
    }
这样可以写超大数据,在写超大数据时最好用压缩的方式,写文件比较快!
分享到:
评论
3 楼 ae6623 2013-09-18  
ae6623 写道
大哥,你是怎么知道它对临时文件有限制的,我也发现这个bug了,在WinNT系统里面也是无法创建临时文件的,createTempFile的时候,IO异常。按照楼主的办法修改上面两个类之后,还有一个类需要修改。org.apache.poi.xssf.streaming.SXSSFWorkbook中第754行 public void write(OutputStream stream) throws IOException里面。我想问一下,大哥。这个你是怎么知道的。我qq 394263788 非常想知道您的这个答案。O(∩_∩)O谢谢


额,我今天找到原因了。是因为我的Tomcat里面我以前手贱,把temp这个文件夹给删掉了。现在重新加上了之后一切ok。
2 楼 ae6623 2013-09-17  
大哥,你是怎么知道它对临时文件有限制的,我也发现这个bug了,在WinNT系统里面也是无法创建临时文件的,createTempFile的时候,IO异常。按照楼主的办法修改上面两个类之后,还有一个类需要修改。org.apache.poi.xssf.streaming.SXSSFWorkbook中第754行 public void write(OutputStream stream) throws IOException里面。我想问一下,大哥。这个你是怎么知道的。我qq 394263788 非常想知道您的这个答案。O(∩_∩)O谢谢
1 楼 qingyezhu 2012-09-23  
请问,用poi3.8中的wordtohtmlconver类将doc转化为html,其中doc中含有表格(表格很宽)时,在网页中显示不正常,怎么解决呀?谢谢!

相关推荐

    导入excel 导出excle poi3.8 全量包

    导出Excel数据,步骤类似,只是数据来源不再是已存在的Excel文件,而是程序中的数据结构。你需要创建`Workbook`对象,创建或获取工作表,然后根据需要创建行和单元格并填充数据。 在使用Apache POI 3.8时,需要注意...

    Excel操作工具poi3.8

    在给定的标题“Excel操作工具poi3.8”中,我们关注的是POI 3.8版本,这是一个适用于处理Excel文件的强大工具。在这个版本中,用户可以进行数据读取、写入、格式化以及复杂的公式计算等操作。 首先,我们需要理解...

    poi 3.8 版本全量包

    使用这些库,开发者可以创建Java应用程序来导入和导出Excel文件,例如,创建新的工作簿,添加工作表,填充单元格数据,设置样式,执行计算,以及读取和解析现有的Excel文件。Apache POI的强大之处在于其灵活性和广泛...

    POI3.8 jar包

    使用POI3.8进行Excel操作,我们可以: 1. **创建工作簿**:通过`WorkbookFactory.create()`方法,可以选择新建一个HSSFWorkbook或XSSFWorkbook对象。 2. **添加工作表**:在Workbook对象上调用`createSheet()`方法...

    poi 3.8和4.1.2.rar

    - Apache POI 3.8是较早的版本,可能不支持一些新特性,如XSSF对Excel 2007以上版本的支持和对新功能的优化。 - Apache POI 4.1.2是一个较新的版本,提供了更多的功能和性能改进,包括对Excel文件格式的全面支持,...

    poi3.8jar包

    标题中的"poi3.8jar包"指的是Apache POI项目的3.8版本的Java库,这个库以JAR(Java Archive)文件的形式提供,便于Java开发者在他们的应用中集成对Office文档的支持。 Apache POI的主要功能: 1. **Excel处理**: ...

    poi 3.8jar 包

    - 数据导入导出:企业系统常使用POI将数据库中的数据导出为Excel报表,或者从用户上传的Excel文件中导入数据。 - 报表生成:POI可用于动态生成Excel报表,如销售报告、财务报表等。 - 自动化处理:例如,批量处理...

    POI 3.8完整JAR 支持2003-2010Excel

    - **版本兼容性**:Apache POI 3.8能够完美支持2003年的BIFF8格式(XLS)以及2007年引入的Open XML格式(XLSX)。这意味着你可以使用此版本的库来读取和写入2003年至2010年间的Excel文件,包括xls和xlsx两种格式。 ...

    Excel导出 利用poi-3.8-20120326.jar包 和工具包sl-common.jar

    Excel导出 利用poi-3.8-20120326.jar包 和工具包sl-common.jar

    POI3.8和3.8的API

    Apache POI是一个强大的Java库,专门用于处理Microsoft Office格式的文件,如Excel、Word和PowerPoint。POI项目由Apache软件基金会维护,为开发者提供了在Java应用程序中读取、写入和修改这些文件的接口。POI 3.8和...

    java excel poi3.8 jar

    Java Excel POI 3.8 是一个非常重要的库,它允许Java开发者读取、写入以及操作Microsoft Excel文件。此版本3.8是Apache POI项目的一个稳定版本,提供了广泛的Excel处理功能。Apache POI是一个开源项目,由Apache软件...

    POI实现的基于动态模板的EXCEL数据导出

    标题中的“POI实现的基于动态模板的EXCEL数据导出”是指利用Apache POI库来创建一个可以动态填充数据的Excel模板,从而实现大量数据的高效导出。Apache POI是一个开源项目,它允许Java开发者读写Microsoft Office...

    POI 3.8 jar包打包下载

    - **Web应用集成**:将POI集成到Web应用程序中,可以方便地提供Excel导出功能,提升用户体验。 总之,Apache POI是一个强大且灵活的工具,对于需要在Java环境中处理微软办公文档的开发者来说,是一个不可或缺的资源...

    poi3.8,3.9,3.10jar包

    标题提到的"poi3.8,3.9,3.10jar包"分别代表了三个不同版本的Apache POI库,每个版本都有其特定的改进和新特性。 在Excel处理方面,Apache POI相比于早期的jxl库,提供了更多的功能和更好的性能。以下是Apache POI在...

    poi-3.8.zip

    总结一下,Apache POI 3.8是一个适用于JDK 1.6和1.7的Java库,它提供了对微软Office文档的强大处理能力,包括创建、读取和修改Excel、Word和PowerPoint文件。通过理解和掌握POI的API,开发者可以方便地进行Office...

    POI_3.8_API

    - **HSSF(Horizontally Stored Spreadsheet Format)**: 这是POI用来处理旧版的.BIFF格式(Excel 97-2007)的接口。你可以创建工作簿、工作表,添加单元格、公式,设置样式等。 - **XSSF(XML Spreadsheet Format...

    poi3.8系列的jar包

    标题提到的"poi3.8系列的jar包"指的是Apache POI项目在版本3.8及以上的库文件,这些jar包是开发人员处理Excel 2007(以及更高版本)XLSX格式文件所必需的。 **Apache POI的概述:** Apache POI 是由Apache软件基金...

    poi3.8资源包

    总之,"poi3.8资源包"提供的Apache POI库是一个强大的工具,能够帮助Java开发者在不依赖Microsoft Office的情况下读写Excel文件,实现数据的导入导出,以及创建复杂的Excel报表。对于需要处理大量Excel数据的Java...

    Poi3.8 与3.5的所有的包文件 以及POI EXCEL 模板导入导出

    集合了所有的POI3.8的包和POI3.5的包,主要用于java poi excel模板的读取

Global site tag (gtag.js) - Google Analytics