如何保存到excel文件

Posted

技术标签:

【中文标题】如何保存到excel文件【英文标题】:How to save to an excel file 【发布时间】:2015-06-26 00:19:33 【问题描述】:

我正在尝试保存一个 Excel 文件,但由于某种原因我无法保存它。这是我打开保存的文件时遇到的错误

“Excel 无法打开文件 [文件名],因为文件格式或文件扩展名无效。”

这是我用来保存到 excel 文件的代码,它绝对是 .xlsx 我做错了什么?

public static void saveFile(int lineCoutner, String Closed, Elements ticketNumber, String College, String customerCalled, String firstResponse, String ResolutionTime)

    try 
        String filename = "C:/Users/ross/Desktop/Work/Ticketing.xlsx";
        @SuppressWarnings("resource")
        HSSFWorkbook workbook = new HSSFWorkbook();
        HSSFSheet sheet = workbook.createSheet("FirstSheet");  

        HSSFRow rowhead = sheet.createRow((short)0);
        rowhead.createCell(0).setCellValue("Ticket");
        rowhead.createCell(1).setCellValue("Reason for Contact");
        rowhead.createCell(2).setCellValue("Resolution OutCome");
        rowhead.createCell(3).setCellValue("TimeCustomerCalled");
        rowhead.createCell(4).setCellValue("First Reponse");
        rowhead.createCell(5).setCellValue("Time Resolution");
        rowhead.createCell(6).setCellValue("College");

        HSSFRow row = sheet.createRow((short)1);
        row.createCell(0).setCellValue(ticketNumber.text());
        row.createCell(1).setCellValue(Closed);
        row.createCell(2).setCellValue(Closed);
        row.createCell(3).setCellValue(customerCalled);
        row.createCell(4).setCellValue(firstResponse);
        row.createCell(5).setCellValue(ResolutionTime);
        row.createCell(6).setCellValue(College);

        FileOutputStream fileOut = new FileOutputStream(filename);
        workbook.write(fileOut);
        fileOut.close();
        System.out.println("Your excel file has been generated!");

     catch ( Exception ex ) 
        System.out.println(ex);
    

【问题讨论】:

我不确定 Java,但在 php 上,如果您的变量值有问题,文件会生成但已损坏,因为脚本没有按应有的方式运行。也许调试setCellValue 方法上使用的每个变量? @F***oAraujo 在我看来像 java。 罗斯,你的标题和你的问题不匹配。 @ScaryWombat 是的,我在发布后意识到了这一点。但是意思是一样的。我将我的评论更改为更通用的评论,引用 PHP 行为。 @Scary Wombat 对不起,我发帖的时候意识到这样更好吗? 【参考方案1】:

HSSF 网站的第一行写着:

HSSF 是 POI 项目的 Excel '97(-2007) 文件格式的纯 Java 实现。

所以 .xlsx 是错误的扩展名。试试 .xls。 Excel 可能会因为其扩展名而尝试将其作为新格式文件打开,即它不检查旧格式,这会占用时间并使其看起来比寻找目的所需的速度慢真的不想花时间。

【讨论】:

【参考方案2】:

HSSF 用于 xsl 文件。 如果你需要 xslx 格式,你应该使用 XSSF

另外,POI 库在读/写文件时会占用大量内存;所以在 OOM 异常的情况下使用 SXSSF(XSSF 的流式版本)。

祝你好运。

【讨论】:

以上是关于如何保存到excel文件的主要内容,如果未能解决你的问题,请参考以下文章

MATLAB:如何将 fig 粘贴到 excel 中,然后保存并关闭 excel 文件?

如何在python中将文件保存到excel时显示进度条?

如何将 Excel 工作簿保存到磁盘?

如何将更改保存到现有的 excel 文件,而不是创建包含更改的 txt 文件?

如何将 json 从 dash dcc.Store 保存到 excel 文件?

如何将Excel文件保存到C#的特定位置?