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

java用poi操作excel .xls和.xlsx格式

    博客分类:
  • poi
阅读更多

 

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

 

分享到:
评论

相关推荐

    excel(xls或xlsx)便捷copy及poi操作demo.rar

    java spire.xls.free 快速copy excel副本或修改名称另存为、java poi操作excel(xls或者xlsx)样例 excel便捷copy jar包下载地址https://download.csdn.net/download/qq_25073261/85060851

    Android通过POI完美解析Excel.xls xlsx成html编译前jar包

    在这种情况下,Java POI库是一个非常有用的工具,它允许开发者在Java环境中操作Microsoft Office的文件格式,包括Excel的.xls和.xlsx文件。本文将详细介绍如何在Android中使用POI库来解析Excel文件,并将其转换为...

    poi操作Excel,HSSF,XSSF两种方式(.xls与.xlsx)导入导出

    在本文中,我们将深入探讨如何使用POI库中的HSSF和XSSF组件来读取和写入Excel文件,这两种组件分别用于处理.xls(97-2003版Excel格式)和.xlsx(2007及更高版本的Office Open XML格式)。 首先,让我们了解HSSF...

    java使用poi读取xls格式和xlsx格式的excel文件

    本主题将深入探讨如何使用POI读取.xls(BIFF8格式,Excel 97-2003)和.xlsx(OOXML格式,Excel 2007及以上版本)两种不同格式的Excel文件。 首先,我们需要导入必要的库。在上述的文件列表中,我们看到有poi-3.9....

    POI读写excel(.xls/.xlsx)的Demo

    在这个"POI读写excel(.xls/.xlsx)的Demo"中,我们将深入探讨如何使用Apache POI库在Java中读取和写入Excel文件。 1. **Apache POI库介绍** Apache POI 提供了 HSSF(Horrible Spreadsheet Format)和 XSSF(XML ...

    java 通过poi操作excel jar包

    Apache POI是一个开源项目,提供了丰富的API,使得Java开发者能够轻松地与MS Office格式交互,包括XLS(Excel 97-2003)和XLSX(Excel 2007及以后的版本)。 标题中的"java通过poi操作excel jar包"指的是使用Apache...

    java 导入Excel 文件,支持xls、xlsx、csv格式

    以下将详细讲解如何在Java中处理`xls`、`xlsx`和`csv`格式的文件。 首先,对于`xls`文件,这是Excel 2003及更早版本使用的文件格式,基于HSSF(Horrible Spreadsheet Format)库。Apache POI项目提供了一个强大的...

    Java读取Excel表格数据时(.xls、.xlsx 格式),需要引用的jar包

    总结起来,Java读取Excel数据涉及的主要知识点有:Apache POI库的使用,包括`.xls`和`.xlsx`格式的处理;Android环境下的兼容性考虑,可能需要使用`jxl`库;以及如何通过Java代码遍历Excel文件的行和单元格,获取并...

    使用poi将xls转为xlsx,所有样式完美转换

    使用poi将xls格式的Excel转为xlsx,文件中的所有样式都可以完美转换,例如合并栏、背景和单元格样式等。Java源码

    Java 读取本地.xls .xlsx文件

    总之,使用Apache POI库,Java程序员可以方便地读取和操作Excel文件,无论是老式的.xls还是现代的.xlsx格式。希望这个概述能帮助你理解Java中处理Excel文件的基本思路,并在实际项目中灵活应用。

    poi 读取.xls与.xlsx需要的jar

    Apache POI 是一个开源项目,专门用于处理Microsoft Office格式的文件,包括.xls和.xlsx格式的Excel文件。在Java环境中,如果你需要使用Apache POI库来读取或写入Excel文件,你需要确保正确地引入了所需的JAR文件。...

    poi 3.9读取excel xls xlsx 有jar包

    在标题中提到的“poi 3.9读取excel xls xlsx 有jar包”,指的是使用Apache POI 3.9版本来读取Excel的工作簿(XLS和XLSX格式)。这个版本的POI包含了处理Excel文件所需的核心组件。 Apache POI 提供了HSSF(Horrible...

    java_poi实现excel导入导出

    Java POI 的主要特点是可以在 Java 应用程序中读取、写入和操作 Office 文件。 2. Java POI 的组成 Java POI 由多个组件组成,每个组件负责处理不同的 Office 文件格式。以下是 Java POI 的主要组件: * POIFS ...

    基于poi实现word/excel转换为HTML(且兼容.doc.docx.xls.xlsx)

    Apache POI 是一个流行的开源库,专为处理Microsoft Office格式的文件,如Word(.doc/.docx)和Excel(.xls/.xlsx)。本教程将深入探讨如何使用Apache POI库来实现这些文件向HTML的转换,以实现跨平台和浏览器的兼容...

    poi导出excel支持xls、xlsx格式大数据导出java工具类

    使用poi导出excel支持xls、xlsx格式大数据导出java工具类,支持同一个单元格不同文本格式。找了好久,加上自己修改后,调试通过,发布出来分享,(调整student类位置)包含所需jar包,工具类,使用示例

    使用POI读写Excel文件(兼容xls与xlsx版本)

    Apache POI是一个开源项目,专门用于读取和写入Microsoft Office格式的文件,包括Excel的.xls和.xlsx格式。这篇博客“使用POI读写Excel文件(兼容xls与xlsx版本)”深入探讨了如何利用Apache POI库在Java环境中处理...

    POI操作Excel.docx

    在本文中,我们将探讨如何使用Apache POI库来操作不同版本的Excel文件,包括Excel 97(.xls)和Excel 2007及以后版本(.xlsx)。 ### 1. 写入Excel 97 (.xls) 在Java项目中,为了处理Excel 97格式的文件,我们需要添加...

    struts1 poi Excel批量导入支持xls和xlsx-源码java

    在本项目中,"struts1 poi Excel批量导入支持xls和xlsx"是一个基于Struts1和POI实现的功能,它允许用户批量导入Excel数据,无论是旧版的.xls格式还是较新的.xlsx格式。 首先,我们需要了解Apache POI的基本用法。...

    Poi_Excel.zip_JAVA poi对excel文档处理_milllcb_sortkqh

    2. **版本兼容性**:不同的Excel版本(如97-2003 .xls和2007以上 .xlsx)有不同的文件格式,POI库需要选择正确的子模块处理。 3. **样式和格式**:POI提供了丰富的API来设置单元格样式,包括字体、颜色、边框、对齐...

    java读取excel ,xls和xlsx

    Apache POI是一个开源项目,它提供了API来读取、写入和操作Microsoft Office格式的文件,包括Excel。对于`.xls`文件,Apache POI使用了`HSSF`(Horrible Spreadsheet Format)API,而对于`.xlsx`文件,它使用了`XSSF...

Global site tag (gtag.js) - Google Analytics