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以上版本,不知是否向上兼容
相关推荐
Apache POI是一个流行的开源库,专门用于处理Microsoft Office格式的文件,包括Excel(.xls和.xlsx)和Word(.doc和.docx)。在本场景中,我们关注的是使用POI 3.1版本来读取和写入Excel以及WPS的ET文件。POI 3.1是...
首先,Apache POI提供了两种主要的接口来处理Excel文件:HSSF(Horrible Spreadsheet Format)用于读写旧版的.BIFF8格式(即Excel 97-2003),而XSSF则用于读写基于OOXML的新版.XLSX格式。这个demo应该包含了对这两...
在本文中,我们将深入探讨如何使用Java来解析并获取Excel中的数据,同时确保兼容2003版(.xls)和2007版及以上(.xlsx)的文件格式。这两个版本的文件格式不同,因此处理方式也会有所差异。 首先,对于2003版的...
在本文中,我们将重点讨论如何使用POI库来实现对Excel 2003和2007文件的兼容性操作。Excel 2003使用的是.BIFF(Binary Interchange File Format)格式,而Excel 2007及以上版本则引入了新的.OpenXML(.xlsx)格式,...
2. **使用Apache POI解析Excel**: - **创建工作簿**: 使用WorkbookFactory.create()方法,传入文件或输入流来创建Workbook对象,这代表整个Excel文件。 - **访问工作表**: Workbook对象有getSheetAt()或getSheet...
"poi3.7 poi3.6解析excel2007全jar包"指的是包含了Apache POI 3.7和3.6版本中用于解析Excel 2007 (.xlsx)文件的所有必需的JAR库。 Apache POI 3.6 和 3.7 版本之间的主要区别可能在于修复了一些已知的bug,增加了新...
3. **解析Excel**: POI 提供了两种主要的接口,`HSSFWorkbook` 和 `XSSFWorkbook`,分别用于读写Excel 2003(.xls)和2007以上(.xlsx)的文件。这两个类提供了创建、修改和读取工作簿、工作表、单元格、样式等的...
《使用POI解析Excel》 在信息技术领域,处理数据是日常工作中不可或缺的一部分,而Excel作为广泛使用的电子表格软件,其数据处理能力强大且灵活。Apache POI是一个开源库,专门用于读取和写入Microsoft Office格式...
HSSF是用于读写旧的BIFF格式(Excel 97-2007),而XSSF则是用于处理新的OOXML格式(Excel 2007及以后版本)。 2. poi-ooxml-3.9.jar:这个库提供了对Office Open XML (OOXML) 格式的额外支持。OOXML是微软推出的一...
本篇文章将深入探讨如何使用Apache POI来兼容并处理Excel 2003 (.xls)和Excel 2007 (.xlsx)这两种文件格式。 #### 知识点详解 **1. Apache POI的版本选择** - **Jar包列表**: - `dom4j-1.6.1.jar`: 提供DOM解析...
标题提到的"poi解析excel相关jar",指的是Apache POI 提供的Java库,用于解析和创建Excel文件。 描述中提到了两个版本的jar文件:"poi-excelant-3.9-20121203" 和 "poi-3.9-20121203"。这两个jar是Apache POI 3.9...
2. **SS.usermodel包**: 这是POI 4.0中处理Excel的核心包,包含了一系列的类和接口,如Workbook、Sheet、Row、Cell等,它们分别代表Excel的整个工作簿、工作表、行和单元格。 3. **读取Excel文件**: 使用POI,你...
HSSF和HWPF分别用于处理老版本的BIFF格式(Excel 97-2007)和Word 97-2007格式,而XSSF和XWPF则用于处理Office Open XML(OOXML)格式的新版Excel和Word文件。 2. `poi-ooxml-3.16.jar`:这个库提供了对OOXML格式的...
POI 3.8 是一个较早的版本,但它仍然具有广泛的兼容性和实用性,尤其是对于解析Excel 2007(.xlsx)这样的新格式。 首先,让我们了解POI的工作原理。POI使用HSSF(Horrible Spreadsheet Format)和XSSF(XML ...
POI 提供了两个主要的类:HSSFWorkbook 和 XSSFWorkbook,分别用于解析 Excel 2003(xls)和 Excel 2007(xlsx)文件格式。 问题描述 -------- 在使用 POI 解析 Excel 文件时,经常会遇到版本问题。例如,如果使用...
- POI支持两种Excel文件格式:`.xls`(BIFF8,Excel 97-2003格式)和`.xlsx`(OOXML,Excel 2007及更高版本)。`.xls`使用`HSSFWorkbook`,`.xlsx`使用`XSSFWorkbook`。 - 对于大量数据,要注意内存管理,因为整个...
Excel文件格式有两种主要版本,即2003年的.xls格式和2007年及以后的.xlsx格式。为了兼容这两种格式,Java引入了Apache POI库,这是一个用于处理Microsoft Office文档的开源API。 Apache POI提供了HSSF(Horrible ...
对于Excel文档的处理,POI提供了两个主要的API:`HSSF`(对应Excel 97-2003 .xls格式)和`XSSF`(对应Excel 2007及以上 .xlsx格式)。为了使导出的Excel文件能够兼容2003和2007版本,我们需要掌握这两个API的使用...
### 使用Java POI获取Excel文件中的Sheet、行数与列数 #### 一、引言 在日常工作中,经常需要处理Excel文件,特别是在数据分析、报表生成等场景中。Apache POI是一个非常强大的Java库,它提供了读写Microsoft ...
- **异步处理**:由于读写Excel文件可能耗时较长,建议在后台线程或使用AsyncTask进行,以免阻塞UI线程。 - **权限设置**:AndroidManifest.xml文件中需要添加读写外部存储的权限: ```xml <uses-permission ...