jxl主页
http://www.andykhan.com/jexcelapi/index.html
jxl似乎不支持2007,2010
jxl读取excel2010报错
jxl.read.biff.BiffException: Unable to recognize OLE stream
at jxl.read.biff.CompoundFile.<init>(CompoundFile.java:116)
at jxl.read.biff.File.<init>(File.java:127)
at jxl.Workbook.getWorkbook(Workbook.java:221)
at jxl.Workbook.getWorkbook(Workbook.java:198)
at ReadExcel.readExcel(ReadExcel.java:22)
at ReadExcel.main(ReadExcel.java:64)
poi主页
http://poi.apache.org/download.html
建议使用poi,支持2003,2007,2010等,有更新
poi读取excel2010报错
org.apache.poi.poifs.filesystem.OfficeXmlFileException: The supplied data appears to be in the Office 2007+ XML. You are calling the part of POI that deals with OLE2 Office Documents. You need to call a different part of POI to process this data (eg XSSF instead of HSSF)
at org.apache.poi.poifs.storage.HeaderBlock.<init>(HeaderBlock.java:131)
at org.apache.poi.poifs.storage.HeaderBlock.<init>(HeaderBlock.java:104)
at org.apache.poi.poifs.filesystem.POIFSFileSystem.<init>(POIFSFileSystem.java:138)
at org.apache.poi.hssf.usermodel.HSSFWorkbook.<init>(HSSFWorkbook.java:322)
at org.apache.poi.hssf.usermodel.HSSFWorkbook.<init>(HSSFWorkbook.java:303)
at ExcelTo.main(ExcelTo.java:12)
读取2007,2010格式的应该用XSSF
poi读取的例子
package com.urt.module.excel; import java.io.FileInputStream; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.Row; import org.apache.poi.ss.usermodel.Sheet; import org.apache.poi.ss.usermodel.Workbook; import org.apache.poi.xssf.usermodel.XSSFWorkbook; import org.apache.poi.ss.usermodel.DateUtil; public class ExcelPoi { public static void main(String[] args) { String fileToBeRead = "D:\\test.xlsx"; Workbook workbook; try { if(fileToBeRead.indexOf(".xlsx")>-1){ workbook = new XSSFWorkbook(new FileInputStream(fileToBeRead)); } else { workbook = new HSSFWorkbook(new FileInputStream(fileToBeRead)); } //HSSFWorkbook workbook = new HSSFWorkbook(new FileInputStream(fileToBeRead)); //2003 创建对Excel工作簿文件的引用 //XSSFWorkbook workbook = new XSSFWorkbook(new FileInputStream(fileToBeRead)); //2007,2010 创建对Excel工作簿文件的引用 Sheet sheet = workbook.getSheet("Sheet1"); // 创建对工作表的引用 int rows = sheet.getPhysicalNumberOfRows();// 获取表格的 int columns = 0; for (int r = 0; r < rows; r++) { // 循环遍历表格的行 if(r==0){ //在第一行标题行计算出列宽度,因为数据行中可能会有空值 columns = sheet.getRow(r).getLastCellNum(); continue; } String value = ""; Row row = sheet.getRow(r); // 获取单元格中指定的行对象 if (row != null) { //int cells = row.getPhysicalNumberOfCells();// 获取一行中的单元格数 //int cells = row.getLastCellNum();// 获取一行中最后单元格的编号(从1开始) for (short c = 0; c < columns; c++) { // 循环遍历行中的单元格 Cell cell = row.getCell((short) c); if (cell != null) { if (cell.getCellType() == Cell.CELL_TYPE_STRING) { // 判断单元格的值是否为字符串类型 value += cell.getStringCellValue() + ","; } else if (cell.getCellType() == Cell.CELL_TYPE_NUMERIC) { // 判断单元格的值是否为数字类型 //if(DateUtil.isCellDateFormatted(cell)){ // cell.getDateCellValue(); //日期型 //} value += cell.getNumericCellValue() + ","; } else if (cell.getCellType() == Cell.CELL_TYPE_BOOLEAN) { // 判断单元格的值是否为布尔类型 value += cell.getStringCellValue() + ","; } } } } String[] str = value.split(","); System.out.println(value); } } catch (Exception e) { e.printStackTrace(); } } }
得到单元格的字符串内容,注意:有的excel里有隐藏列
//得到单元格的字符串内容 public static String getCellValue(Cell cell) { DecimalFormat df = new DecimalFormat("#"); if (cell == null) return ""; switch (cell.getCellType()) { case Cell.CELL_TYPE_NUMERIC: if(DateUtil.isCellDateFormatted(cell)){ SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); return sdf.format(cell.getDateCellValue()).toString(); //return sdf.format(DateUtil.getJavaDate(cell.getNumericCellValue())).toString(); } return df.format(cell.getNumericCellValue()); case Cell.CELL_TYPE_STRING: //System.out.println(cell.getStringCellValue()); return cell.getStringCellValue(); case Cell.CELL_TYPE_FORMULA: return cell.getCellFormula(); case Cell.CELL_TYPE_BLANK: return ""; case Cell.CELL_TYPE_BOOLEAN: return cell.getBooleanCellValue() + ""; case Cell.CELL_TYPE_ERROR: return cell.getErrorCellValue() + ""; } return ""; }
poi导出excel,不使用模板的
http://happyqing.iteye.com/blog/2075985
相关推荐
java spire.xls.free 快速copy excel副本或修改名称另存为、java poi操作excel(xls或者xlsx)样例 excel便捷copy jar包下载地址https://download.csdn.net/download/qq_25073261/85060851
在这种情况下,Java POI库是一个非常有用的工具,它允许开发者在Java环境中操作Microsoft Office的文件格式,包括Excel的.xls和.xlsx文件。本文将详细介绍如何在Android中使用POI库来解析Excel文件,并将其转换为...
在本文中,我们将深入探讨如何使用POI库中的HSSF和XSSF组件来读取和写入Excel文件,这两种组件分别用于处理.xls(97-2003版Excel格式)和.xlsx(2007及更高版本的Office Open XML格式)。 首先,让我们了解HSSF...
本主题将深入探讨如何使用POI读取.xls(BIFF8格式,Excel 97-2003)和.xlsx(OOXML格式,Excel 2007及以上版本)两种不同格式的Excel文件。 首先,我们需要导入必要的库。在上述的文件列表中,我们看到有poi-3.9....
在这个"POI读写excel(.xls/.xlsx)的Demo"中,我们将深入探讨如何使用Apache POI库在Java中读取和写入Excel文件。 1. **Apache POI库介绍** Apache POI 提供了 HSSF(Horrible Spreadsheet Format)和 XSSF(XML ...
Apache POI是一个开源项目,提供了丰富的API,使得Java开发者能够轻松地与MS Office格式交互,包括XLS(Excel 97-2003)和XLSX(Excel 2007及以后的版本)。 标题中的"java通过poi操作excel jar包"指的是使用Apache...
以下将详细讲解如何在Java中处理`xls`、`xlsx`和`csv`格式的文件。 首先,对于`xls`文件,这是Excel 2003及更早版本使用的文件格式,基于HSSF(Horrible Spreadsheet Format)库。Apache POI项目提供了一个强大的...
总结起来,Java读取Excel数据涉及的主要知识点有:Apache POI库的使用,包括`.xls`和`.xlsx`格式的处理;Android环境下的兼容性考虑,可能需要使用`jxl`库;以及如何通过Java代码遍历Excel文件的行和单元格,获取并...
使用poi将xls格式的Excel转为xlsx,文件中的所有样式都可以完美转换,例如合并栏、背景和单元格样式等。Java源码
总之,使用Apache POI库,Java程序员可以方便地读取和操作Excel文件,无论是老式的.xls还是现代的.xlsx格式。希望这个概述能帮助你理解Java中处理Excel文件的基本思路,并在实际项目中灵活应用。
在标题中提到的“poi 3.9读取excel xls xlsx 有jar包”,指的是使用Apache POI 3.9版本来读取Excel的工作簿(XLS和XLSX格式)。这个版本的POI包含了处理Excel文件所需的核心组件。 Apache POI 提供了HSSF(Horrible...
Apache POI 是一个开源项目,专门用于处理Microsoft Office格式的文件,包括.xls和.xlsx格式的Excel文件。在Java环境中,如果你需要使用Apache POI库来读取或写入Excel文件,你需要确保正确地引入了所需的JAR文件。...
Java POI 的主要特点是可以在 Java 应用程序中读取、写入和操作 Office 文件。 2. Java POI 的组成 Java POI 由多个组件组成,每个组件负责处理不同的 Office 文件格式。以下是 Java POI 的主要组件: * POIFS ...
Apache POI 是一个流行的开源库,专为处理Microsoft Office格式的文件,如Word(.doc/.docx)和Excel(.xls/.xlsx)。本教程将深入探讨如何使用Apache POI库来实现这些文件向HTML的转换,以实现跨平台和浏览器的兼容...
使用poi导出excel支持xls、xlsx格式大数据导出java工具类,支持同一个单元格不同文本格式。找了好久,加上自己修改后,调试通过,发布出来分享,(调整student类位置)包含所需jar包,工具类,使用示例
Apache POI是一个开源项目,专门用于读取和写入Microsoft Office格式的文件,包括Excel的.xls和.xlsx格式。这篇博客“使用POI读写Excel文件(兼容xls与xlsx版本)”深入探讨了如何利用Apache POI库在Java环境中处理...
在本文中,我们将探讨如何使用Apache POI库来操作不同版本的Excel文件,包括Excel 97(.xls)和Excel 2007及以后版本(.xlsx)。 ### 1. 写入Excel 97 (.xls) 在Java项目中,为了处理Excel 97格式的文件,我们需要添加...
在本项目中,"struts1 poi Excel批量导入支持xls和xlsx"是一个基于Struts1和POI实现的功能,它允许用户批量导入Excel数据,无论是旧版的.xls格式还是较新的.xlsx格式。 首先,我们需要了解Apache POI的基本用法。...
2. **版本兼容性**:不同的Excel版本(如97-2003 .xls和2007以上 .xlsx)有不同的文件格式,POI库需要选择正确的子模块处理。 3. **样式和格式**:POI提供了丰富的API来设置单元格样式,包括字体、颜色、边框、对齐...
Apache POI是一个开源项目,它提供了API来读取、写入和操作Microsoft Office格式的文件,包括Excel。对于`.xls`文件,Apache POI使用了`HSSF`(Horrible Spreadsheet Format)API,而对于`.xlsx`文件,它使用了`XSSF...