Tag: xlsx

使用Jasper和.xlsx的内容消息不可读

我有以下代码将xlsx导出到流。 它工作,我得到xlsx文件,但它说excel在“…”中发现不可读的内容,并询问我是否要恢复工作簿的内容。 当我这样做时,我会在正确的位置使用正确的数据获取xlsx文件,如我所愿。 如何避免或抑制此错误? try { ServletOutputStream servletOutputStream = resp.getOutputStream(); JasperReport jasperReport = JasperCompileManager .compileReport(path + “Template/Instructions_with_CHGFOX_Template/testeXlsx2.jrxml”); JasperPrint print = JasperFillManager.fillReport(jasperReport, parameters, new JRBeanCollectionDataSource(list)); JRXlsxExporter xlsxExporter = new JRXlsxExporter(); ByteArrayOutputStream outStream = new ByteArrayOutputStream(); xlsxExporter.setParameter(JRExporterParameter.JASPER_PRINT, print); xlsxExporter.setParameter(JRExporterParameter.OUTPUT_FILE_NAME, title + “.xlsx”); xlsxExporter.setParameter(JRExporterParameter.OUTPUT_STREAM, servletOutputStream); xlsxExporter.setParameter(JRExporterParameter.OUTPUT_STREAM, outStream); xlsxExporter.exportReport(); resp.setContentType(“application/vnd.openxmlformats-officedocument.spreadsheetml.sheet”); resp.setHeader(“Content-Disposition”, “attachment; filename=” + title + “.xlsx”); servletOutputStream.write(outStream.toByteArray()); resp.getOutputStream().write(outStream.toByteArray()); […]

密码保护的java中的xls / xlsx文件

我已经在http://java.sys-con.com/node/1258827的帮助下创建了受密码保护的zip文件,其中包含xls文件。 我的问题是,是否有任何java api将创建密码保护的xls文件而不是zip文件。 我想直接在xls文件上应用密码。加密/解密是一个选项,但想要在双击文件时提示。 编辑:我知道了 HSSFSheet.protectSheet(“xyz”); 但它只使表格只读。 即使我已经尝试过这个hssfworkbook.writeProtectWorkbook(“abc”, “abc”); 但它没有提示输入密码。 Edit1: org.apache.poi.hssf.record.crypto.Biff8EncryptionKey包中有方法打开密码保护的excel文件org.apache.poi.hssf.record.crypto.Biff8EncryptionKey.setCurrentUserPassword(password); 是否有任何方法可以在不受保护的Excel文件上设置密码? Edit2:我尝试过JExcel API Workbook w=Workbook.getWorkbook(new File(“c:\\employees22533.xls”)); Sheet ws=null; ws=w.getSheet(“Employee List”); SheetSettings sh=ws.getSettings(); sh.setPassword(“abc”); 但它没有设置任何密码

.xls使用java和POI APACHE转换为xlsx

我正在尝试使用POI.APACHE来编辑java中的excel文件。 我必须将.xls转换为.xlsx,因为我需要将文件发送到sharepoint。 这就是为什么它不能用不同的扩展名重命名。 我怎么会这样呢? 我在他们的网站上找不到任何例子。 谢谢

使用Apache POI读取Excel .XLSX时出错

我正在使用Apache POI 3.8库来读取Web应用程序中的XLSX文件。 以下代码在Java控制台应用程序中运行良好: InputStream inputFS = new FileInputStream(“test.xlsx”); Workbook workbook = new XSSFWorkbook(inputFS); // below exception is thrown on this line Sheet sheet = workbook.getSheetAt(0); 但在Web应用程序中使用时会抛出“读取错误”。 下面粘贴了堆栈跟踪的相关摘录: java.io.IOException: Read error at java.io.FileInputStream.readBytes(Native Method) ~[na:1.6.0_31] at java.io.FileInputStream.read(Unknown Source) ~[na:1.6.0_31] at java.io.FilterInputStream.read(Unknown Source) ~[na:1.6.0_31] at java.io.PushbackInputStream.read(Unknown Source) ~[na:1.6.0_31] at java.util.zip.ZipInputStream.readFully(Unknown Source) ~[na:1.6.0_31] at java.util.zip.ZipInputStream.readLOC(Unknown Source) ~[na:1.6.0_31] […]

excel(.xlsx)使用开放式办公室转换为pdf(.pdf)时缺少工作表和页面大小问题

我使用JodConverter和Open-Office创建了一个应用程序,用于将excel( .xlsx )转换为PDF ,该应用程序运行正常,但我遇到了两个问题 输出PDF的页面是A4大小的forms,因为某些工作表内容已被切掉。 因为我希望excel的每个工作表都像在一个页面中一样完整。 缺少工作表,如果我的excel有8个工作表,我在PDF输出中只得到两个或三个 即使我们试图直接从开放办公室转换为pdf ,它也会给出上述类似的问题 Excel文件 – ss1.xlsx 输出PDF – work.pdf 任何人都可以告诉我一些解决方案 我的代码如下所示 public class MyConverter { public static void main(String[] args) throws ConnectException { File inputFile = new File(“C:/Users/Work/Desktop/ss1.xlsx”); File outputFile = new File(“C:/Users/Work/Desktop/work.pdf”); // connect to an OpenOffice.org instance running on port 8100 OpenOfficeConnection connection = new SocketOpenOfficeConnection(8100); connection.connect(); […]

使用Office 2007/2010打开.xls文件时获取扩展检查(强化)警报

我正在研究基于struts的Web应用程序。 在该应用程序中,我们从Jsp生成并下载xls文件。 在Jsp文件和web.xml中,我将内容类型设置为“application / vnd.ms-excel” 似乎jsp页面生成的xls文件不是真正的excel文件,而是MS Excel理解的文本格式。 因此,excel打开文件并显示类似于MS Excel保存的excel文件的输出。 由于较新版本的MS Office 2007/2010会检查文件扩展名和文件内的内容,因此会发出警告,指出文件格式与内容不匹配。 要摆脱警告,我如何确保生成的xls是真正的office excel文件。 请帮忙。

如何读取大小> 40MB的XLSX文件

我正在使用apache-POI XSSF来读取XLSX文件。 我收到错误java.lang.OutOfMemoryError: Java heap space 。 后来,使用-Xmx1024m为java类增加堆大小仍然重复相同的错误。 码: String filename = “D:\\filename.xlsx”; FileInputStream fis = null; try { fis = new FileInputStream(filename); XSSFWorkbook workbook = new XSSFWorkbook(fis); 在上面的代码段中,执行在XSSFWorkbook处XSSFWorkbook并抛出指定的错误。 有人可以建议更好的方法来读取大型XLSX文件。

返回十进制而不是字符串(POI jar)

我需要阅读xls或xlsx表。 我成功地阅读了工作表,但它返回十进制值而不是字符串(例如:for 3 – 它返回3.0)。 我需要按原样读取单元格值。 所以我需要以字符串forms返回

当使用Apache-POI库获取单元格内容时,我得到“无法从文本单元格中获取数值”,反之亦然。 我如何解决它?

我意识到这个问题有点令人困惑,但我不知道怎么说它。 无论如何,这是原始代码: private void readFile(String excelFileName) throws FileNotFoundException, IOException { XSSFWorkbook workbook = new XSSFWorkbook(new FileInputStream(excelFileName)); if (workbook.getNumberOfSheets() > 1){ System.out.println(“Please make sure there is only one sheet in the excel workbook.”); } XSSFSheet sheet = workbook.getSheetAt(0); int numOfPhysRows = sheet.getPhysicalNumberOfRows(); XSSFRow row; XSSFCell num; for(int y = 1;y < numOfPhysRows;y++){ //start at the 2nd […]

通过Apache POI读取大型Excel文件(xlsx)时出错

我试图通过Apache POI读取大型excel文件xlsx,比如40-50 MB。 我失去了内存exception。 当前堆内存为3GB。 我可以毫无问题地阅读较小的excel文件。 我需要一种方法来读取大型excel文件,然后通过Spring excel视图将它们作为响应返回。 public class FetchExcel extends AbstractView { @Override protected void renderMergedOutputModel( Map model, HttpServletRequest request, HttpServletResponse response) throws Exception { String fileName = “SomeExcel.xlsx”; response.setContentType(“application/vnd.openxmlformats-officedocument.spreadsheetml.sheet”); OPCPackage pkg = OPCPackage.open(“/someDir/SomeExcel.xlsx”); XSSFWorkbook workbook = new XSSFWorkbook(pkg); ServletOutputStream respOut = response.getOutputStream(); pkg.close(); workbook.write(respOut); respOut.flush(); workbook = null; response.setHeader(“Content-disposition”, “attachment;filename=\”” +fileName+ “\””); […]