`
youanyyou
  • 浏览: 196401 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

POI解析读写EXCEL,复制SHEET,兼容EXCEL93-2003,2007

 
阅读更多
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
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.ss.util.CellRangeAddress;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

public class ExcelTest {
	
	private static final String EXL_2003 = "C:\\Users\\Administrator\\Desktop\\sale2003.xls";
	private static final String EXL_2007 = "C:\\Users\\Administrator\\Desktop\\sale2007.xlsx";
	
	public static void main(String[] args){
		try {
			test(EXL_2003);
			test(EXL_2007);
		} catch (Exception e) {
			System.out.println("请检查EXCEL文件及格式!!");
		}
	}

	private static void test(String file) throws Exception  {
		Workbook wb = null;
		if (file.endsWith(".xlsx")) {//EXCEL2007
			wb = new XSSFWorkbook(new FileInputStream(new File(file)));
		}else if(file.endsWith(".xls")){//EXCEL97-2003
			wb = new HSSFWorkbook(new FileInputStream(new File(file)));
		}else{
			throw new Exception("");
		}
		
		if(wb.getNumberOfSheets() > 1){
			wb.removeSheetAt(1);
		}
		
		//单元格合并
		CellRangeAddress region = null;
		Sheet sheet1 = wb.getSheetAt(0);
		Sheet sheet2 = wb.createSheet(sheet1.getSheetName() + "_副本");
		for (int i = 0; i < sheet1.getNumMergedRegions(); i++) {
			region = sheet1.getMergedRegion(i);
			if ((region.getFirstColumn() >= sheet1.getFirstRowNum())
					&& (region.getLastRow() <= sheet1.getLastRowNum())) {
				sheet2.addMergedRegion(region);
			}
		}

		//复制内容
		Row rowFrom = null;
		Row rowTo = null;
		Cell cellFrom = null;
		Cell cellTo = null;
		for (int i = sheet1.getFirstRowNum(); i < sheet1.getLastRowNum(); i++) {
			rowFrom = sheet1.getRow(i);
			if (null == rowFrom){
				continue;
			}
			
			rowTo = sheet2.createRow(i);
			rowTo.setHeight(rowFrom.getHeight());
			for (int j = 0; j < rowFrom.getLastCellNum(); j++) {
				sheet2.setColumnWidth(j, sheet1.getColumnWidth(j));
				if(null != sheet1.getColumnStyle(j)){
					sheet2.setDefaultColumnStyle(j, sheet1.getColumnStyle(j));
				}
				
				cellFrom = rowFrom.getCell(j);
				if (null == cellFrom){
					continue;
				}
				
				cellTo = rowTo.createCell(j);
				cellTo.setCellStyle(cellFrom.getCellStyle());
				cellTo.setCellType(cellFrom.getCellType());
				
				if(Cell.CELL_TYPE_STRING == cellFrom.getCellType()){
					cellTo.setCellValue(cellFrom.getStringCellValue());
				}else if(Cell.CELL_TYPE_NUMERIC == cellFrom.getCellType()){
					cellTo.setCellValue(cellFrom.getNumericCellValue());
				}
			}
		}

		sheet2.setDisplayGridlines(true);//
		FileOutputStream fileOut = new FileOutputStream(file);
		wb.write(fileOut); 
        fileOut.close(); 
        
        System.out.println(file + " 复制sheet成功!");
	}

}

 

本人没装EXCEL2007以上版本,不知是否向上兼容

0
0
分享到:
评论

相关推荐

    poi3.1读写excel,wps et

    Apache POI是一个流行的开源库,专门用于处理Microsoft Office格式的文件,包括Excel(.xls和.xlsx)和Word(.doc和.docx)。在本场景中,我们关注的是使用POI 3.1版本来读取和写入Excel以及WPS的ET文件。POI 3.1是...

    poi 解析excel文件内容demo

    首先,Apache POI提供了两种主要的接口来处理Excel文件:HSSF(Horrible Spreadsheet Format)用于读写旧版的.BIFF8格式(即Excel 97-2003),而XSSF则用于读写基于OOXML的新版.XLSX格式。这个demo应该包含了对这两...

    java解析获取Excel中的数据--同时兼容2003及2007

    在本文中,我们将深入探讨如何使用Java来解析并获取Excel中的数据,同时确保兼容2003版(.xls)和2007版及以上(.xlsx)的文件格式。这两个版本的文件格式不同,因此处理方式也会有所差异。 首先,对于2003版的...

    POI兼容Excel2003和2007

    在本文中,我们将重点讨论如何使用POI库来实现对Excel 2003和2007文件的兼容性操作。Excel 2003使用的是.BIFF(Binary Interchange File Format)格式,而Excel 2007及以上版本则引入了新的.OpenXML(.xlsx)格式,...

    poi-3.16(Java解析Excel)

    2. **使用Apache POI解析Excel**: - **创建工作簿**: 使用WorkbookFactory.create()方法,传入文件或输入流来创建Workbook对象,这代表整个Excel文件。 - **访问工作表**: Workbook对象有getSheetAt()或getSheet...

    poi3.7 poi3.6解析excel2007全jar包

    "poi3.7 poi3.6解析excel2007全jar包"指的是包含了Apache POI 3.7和3.6版本中用于解析Excel 2007 (.xlsx)文件的所有必需的JAR库。 Apache POI 3.6 和 3.7 版本之间的主要区别可能在于修复了一些已知的bug,增加了新...

    POI-3.6 解析Excel(2003\2010)的jar集合

    3. **解析Excel**: POI 提供了两种主要的接口,`HSSFWorkbook` 和 `XSSFWorkbook`,分别用于读写Excel 2003(.xls)和2007以上(.xlsx)的文件。这两个类提供了创建、修改和读取工作簿、工作表、单元格、样式等的...

    使用poi解析Excel

    《使用POI解析Excel》 在信息技术领域,处理数据是日常工作中不可或缺的一部分,而Excel作为广泛使用的电子表格软件,其数据处理能力强大且灵活。Apache POI是一个开源库,专门用于读取和写入Microsoft Office格式...

    poi-3.9、poi-ooxml-3.9、poi-ooxml-schemas-3.9

    HSSF是用于读写旧的BIFF格式(Excel 97-2007),而XSSF则是用于处理新的OOXML格式(Excel 2007及以后版本)。 2. poi-ooxml-3.9.jar:这个库提供了对Office Open XML (OOXML) 格式的额外支持。OOXML是微软推出的一...

    POI兼容2003 和 2007

    本篇文章将深入探讨如何使用Apache POI来兼容并处理Excel 2003 (.xls)和Excel 2007 (.xlsx)这两种文件格式。 #### 知识点详解 **1. Apache POI的版本选择** - **Jar包列表**: - `dom4j-1.6.1.jar`: 提供DOM解析...

    poi解析excel相关jar

    标题提到的"poi解析excel相关jar",指的是Apache POI 提供的Java库,用于解析和创建Excel文件。 描述中提到了两个版本的jar文件:"poi-excelant-3.9-20121203" 和 "poi-3.9-20121203"。这两个jar是Apache POI 3.9...

    JAVA POI 4.0 对Excel读写整理LIB以及样例工程

    2. **SS.usermodel包**: 这是POI 4.0中处理Excel的核心包,包含了一系列的类和接口,如Workbook、Sheet、Row、Cell等,它们分别代表Excel的整个工作簿、工作表、行和单元格。 3. **读取Excel文件**: 使用POI,你...

    poi-3.16.jar,poi-ooxml-3.16.jar,poi-ooxml-schemas-3.16.jar

    HSSF和HWPF分别用于处理老版本的BIFF格式(Excel 97-2007)和Word 97-2007格式,而XSSF和XWPF则用于处理Office Open XML(OOXML)格式的新版Excel和Word文件。 2. `poi-ooxml-3.16.jar`:这个库提供了对OOXML格式的...

    poi3.8 源代码 解析Excel

    POI 3.8 是一个较早的版本,但它仍然具有广泛的兼容性和实用性,尤其是对于解析Excel 2007(.xlsx)这样的新格式。 首先,让我们了解POI的工作原理。POI使用HSSF(Horrible Spreadsheet Format)和XSSF(XML ...

    java 中 poi解析Excel文件版本问题解决办法

    POI 提供了两个主要的类:HSSFWorkbook 和 XSSFWorkbook,分别用于解析 Excel 2003(xls)和 Excel 2007(xlsx)文件格式。 问题描述 -------- 在使用 POI 解析 Excel 文件时,经常会遇到版本问题。例如,如果使用...

    POI3.1.7,JAVA处理EXCEL的类包

    - POI支持两种Excel文件格式:`.xls`(BIFF8,Excel 97-2003格式)和`.xlsx`(OOXML,Excel 2007及更高版本)。`.xls`使用`HSSFWorkbook`,`.xlsx`使用`XSSFWorkbook`。 - 对于大量数据,要注意内存管理,因为整个...

    java读取excel(兼容2003和2007)

    Excel文件格式有两种主要版本,即2003年的.xls格式和2007年及以后的.xlsx格式。为了兼容这两种格式,Java引入了Apache POI库,这是一个用于处理Microsoft Office文档的开源API。 Apache POI提供了HSSF(Horrible ...

    导出Excel兼容2003和2007

    对于Excel文档的处理,POI提供了两个主要的API:`HSSF`(对应Excel 97-2003 .xls格式)和`XSSF`(对应Excel 2007及以上 .xlsx格式)。为了使导出的Excel文件能够兼容2003和2007版本,我们需要掌握这两个API的使用...

    java使用POI获取sheet、行数、列数

    ### 使用Java POI获取Excel文件中的Sheet、行数与列数 #### 一、引言 在日常工作中,经常需要处理Excel文件,特别是在数据分析、报表生成等场景中。Apache POI是一个非常强大的Java库,它提供了读写Microsoft ...

    Android 读写 Excel文件

    - **异步处理**:由于读写Excel文件可能耗时较长,建议在后台线程或使用AsyncTask进行,以免阻塞UI线程。 - **权限设置**:AndroidManifest.xml文件中需要添加读写外部存储的权限: ```xml &lt;uses-permission ...

Global site tag (gtag.js) - Google Analytics