如何编写一个excel文件

您好我想创build一个Excel文件,我需要从Java应用程序添加数据,并需要再次使用Java应用程序来查看这些数据。我使用java jxl库文件来做到这一点。 我可以打开excel文件创buildMS excel打开没有任何问题。但我不能打开由我的java应用程序创build的excel文件。因为我认为原因是我的应用程序没有创buildexcel file.It只是创build文件与“.xls”作为无论如何,我可以在Excel中打开文件。

当我打开由我的应用程序创build的文件,使用ms excel错误发生“文件格式和扩展名不匹配和等等等等”

但毫无疑问excel打开该文件。

当我要保存它时说:“如果您将其保存为文本制表符分隔,则工作簿中的某些function可能会丢失”

如何解决这个问题

代码来创buildxls文件。请帮我完成这个代码

try { WritableWorkbook copy=Workbook.createWorkbook(new File("C:\\Users\\FxMax\\Desktop\\demo.xls"));//create file WritableSheet Wsheet = copy.getSheet(0); //create sheet TableModel mode=table.getModel(); //create table model for jtable String s=mode.getValueAt(0, 0).toString();//get value at 0,0 cell @jtable copy.write(); copy.close(); } catch (Exception e) { } 

这是用来读取文件的代码

 JFileChooser choose = new JFileChooser(); choose.setFileSelectionMode(JFileChooser.FILES_ONLY); FileNameExtensionFilter fileF = new FileNameExtensionFilter("Excel file", "xls"); choose.setFileFilter(fileF); int res = choose.showOpenDialog(jFileChooser1); if (res == JFileChooser.APPROVE_OPTION) { //File file =choose.getSelectedFile(); //getFile String filePath = choose.getSelectedFile().getAbsolutePath();//getFilePath File f = new File(filePath); //System.out.println(filePath); Workbook w; try { w = Workbook.getWorkbook(f); Sheet sheet = w.getSheet(0); for (int i = 1; i < sheet.getRows(); i++) { String cell0 = sheet.getCell(0, i).getContents(); String cell1 = sheet.getCell(1, i).getContents(); String f1 = sheet.getCell(2, i).getContents(); float cell2 = Float.valueOf(f1); float cell3 = Float.valueOf(sheet.getCell(3, i).getContents()); Object[] cells = {cell0, cell1, cell2, cell3,}; DefaultTableModel model = (DefaultTableModel) jTable1.getModel(); model.addRow(cells); } } catch (Exception e) { } } else { } } 

如果你使用poi那就容易了。

将poi依赖关系添加到您的pom

 <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml</artifactId> <version>3.10-FINAL</version> </dependency> 

像这样使用它:

 ... ... int rowNum = 0; int colNum = 0; XSSFWorkbook workbook = new XSSFWorkbook(); XSSFSheet sheet = workbook.createSheet("sheetname"); Row row = sheet.createRow(rowNum++); row.createCell(colNum++).setCellValue("your value"); ... ... FileOutputStream fileOut = new FileOutputStream("your excel (xlsx) file name"); workbook.write(fileOut); fileOut.close; 

阅读是类似的。 检查poi文档。

Apache POI为我这样工作:

 HSSFWorkbook workbook = new HSSFWorkbook(); Iterator<E> iterator = elementList.iterator(); for (int wsNum = 0; wsNum <= (totalNumberOfElements / 65536); wsNum++) { HSSFSheet worksheet = workbook.createSheet("Name of worksheet " + wsNum); for (long i = wsNum * 65536; i < ((wsNum + 1) * 65536); i++) { int ii = ((Long) (i % 65536)).intValue(); if (!iterator.hasNext()) { break; } HSSFRow row = worksheet.createRow(ii); E e = iterator.next(); for(int columnNum = 0; columnNum < maxColumnNum; columnNum++) { HSSFCell cell = row.createCell(columnNum); cell.setCellValue(e.getProperty(columnNum)); //figure out something smart for this one } } } for(int columnNum = 0; columnNum < maxColumnNum; columnNum++) worksheet.autoSizeColumn(columnNum); } return workbook; 

 workbook.write(response.getOutputStream()); //it needs a Stream so that can be a FileOutputStream 

重要的是要注意的是,如果要将大量数据导出到Excel文件中,由于原始XLS格式的限制,工作表中总共只能有65536行。