apache.org提供了一个项目(poi)专门用于对办公软件的操作。这样大大方便了我们操作和读取其中的内容,用于统计分析。版本为poi-bin-3.7-20101029.zip
Component APIs
Excel (SS=HSSF+XSSF)
Word (HWPF+XWPF)
PowerPoint (HSLF+XSLF)
OpenXML4J (OOXML)
OLE2 Filesystem (POIFS)
OLE2 Document Props (HPSF)
Outlook (HSMF)
Visio (HDGF)
Publisher (HPBF)
在文档中提供了2种不同的写入方法,一个是老代码,一个是新代码。如果你希望能够兼容xls文件和xslx文件,那么建议用新代码。且老代码对office2007的操作不是很好。
代码如下:
public static void main(String[] args)throws Exception {
HSSFWorkbook wb = new HSSFWorkbook();
// create a new sheet 创建一个新表
HSSFSheet s = wb.createSheet();
// declare a row object reference 声明一个新行
HSSFRow r = null;
// declare a cell object reference 声明一个单元格
HSSFCell c = null;
// create 2 cell styles 创建2个单元格样式
HSSFCellStyle cs = wb.createCellStyle();
HSSFCellStyle cs2 = wb.createCellStyle();
HSSFDataFormat df = wb.createDataFormat();
// create 2 fonts objects 创建2个单元格字体
HSSFFont f = wb.createFont();
HSSFFont f2 = wb.createFont();
// Set font 1 to 12 point type, blue and bold 设置字体类型1到12号,蓝色和粗体
f.setFontHeightInPoints((short) 12);
f.setColor( HSSFColor.RED.index );
f.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);
// Set font 2 to 10 point type, red and bold 设置字体类型2到10号,红色和粗体
f2.setFontHeightInPoints((short) 10);
f2.setColor( HSSFColor.RED.index);
f2.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);
// Set cell style and formatting 设置单元格样式和格式
cs.setFont(f);
cs.setDataFormat(df.getFormat("#,##0.0"));
// Set the other cell style and formatting 设置其他单元格样式和格式
cs2.setBorderBottom(cs2.BORDER_THIN);
cs2.setDataFormat(HSSFDataFormat.getBuiltinFormat("text"));
cs2.setFont(f2);
// Define a few rows 定义一个新行
for(short rownum = (short)0; rownum < 30; rownum++) {
r = s.createRow(rownum);
for(short cellnum = (short)0; cellnum < 10; cellnum += 2) {
c = r.createCell(cellnum);
HSSFCell c2 = r.createCell(cellnum+1);
c.setCellValue((double)rownum + (cellnum/10));
c2.setCellValue(new HSSFRichTextString("Hello! " + cellnum));
}
}
// Save保存
FileOutputStream out = new FileOutputStream("d://workbook.xls");
wb.write(out);
out.close();
}
---------------------------------------------------------------------------------------------------------
public static void main(String[] args) throws Exception {
Workbook[] wbs = new Workbook[] { new HSSFWorkbook(),
new XSSFWorkbook() };
for (int i = 0; i < wbs.length; i++) {
Workbook wb = wbs[i];
CreationHelper createHelper = wb.getCreationHelper();
// create a new sheet 创建一个新表
Sheet s = wb.createSheet();
// declare a row object reference 声明一个对象的引用行
Row r = null;
// declare a cell object reference 声明对象的引用单元格
Cell c = null;
// create 2 cell styles 创建2单元格样式
CellStyle cs = wb.createCellStyle();
CellStyle cs2 = wb.createCellStyle();
DataFormat df = wb.createDataFormat();
// create 2 fonts objects 创建2字体对象
Font f = wb.createFont();
Font f2 = wb.createFont();
// Set font 1 to 12 point type, blue and bold 设置字体1至12点类型,蓝色和粗体
f.setFontHeightInPoints((short) 12);
f.setColor(IndexedColors.RED.getIndex());
f.setBoldweight(Font.BOLDWEIGHT_BOLD);
// Set font 2 to 10 point type, red and bold 设置字体2至10点类型,红色和粗体
f2.setFontHeightInPoints((short) 10);
f2.setColor(IndexedColors.RED.getIndex());
f2.setBoldweight(Font.BOLDWEIGHT_BOLD);
// Set cell style and formatting 设置单元格样式和格式
cs.setFont(f);
cs.setDataFormat(df.getFormat("#,##0.0"));
// Set the other cell style and formatting 设置其他单元格样式和格式
cs2.setBorderBottom(cs2.BORDER_THIN);
cs2.setDataFormat(df.getFormat("text"));
cs2.setFont(f2);
// Define a few rows 定义几行
for (int rownum = 0; rownum < 30; rownum++) {
r = s.createRow(rownum);
for (int cellnum = 0; cellnum < 10; cellnum += 2) {
c = r.createCell(cellnum);
Cell c2 = r.createCell(cellnum + 1);
c.setCellValue((double) rownum + (cellnum / 10));
c2.setCellValue(createHelper.createRichTextString("Hello! "
+ cellnum));
}
}
// Save 保存
String filename = "d://workbook.xls";
if (wb instanceof XSSFWorkbook) {
filename = filename + "x";
}
FileOutputStream out = new FileOutputStream(filename);
wb.write(out);
out.close();
}
}
---------------------------------------------------------------------------------------------------------
java读取Excel,同时兼容2003及以前版本和2007版本:
public class PoiReadExcel {
public void readExcel(String filePath) {
try {
Workbook workBook = null;
try {
workBook = new XSSFWorkbook(filePath); //支持2007
} catch (Exception ex) {
workBook = new HSSFWorkbook(new FileInputStream(filePath)); //支持2003及以前
}
// 获得Excel中工作表个数
System.out.println("工作表个数 :" + workBook.getNumberOfSheets());
//循环每个工作表
for (int i = 0; i < workBook.getNumberOfSheets(); i++) {
// 创建工作表
Sheet sheet = workBook.getSheetAt(i);
int rows = sheet.getPhysicalNumberOfRows(); // 获得行数
if (rows > 0) {
sheet.getMargin(Sheet.TopMargin);
for (int r = 0; r < rows; r++) { // 行循环
Row row = sheet.getRow(r);
if (row != null) {
int cells = row.getLastCellNum();// 获得列数
for (short c = 0; c < cells; c++) { // 列循环
Cell cell = row.getCell(c);
if (cell != null) {
String value = getValue(cell);
System.out.println("第" + r + "行 " + "第" + c
+ "列:" + value);
}
}
}
}
}
// 查询合并的单元格
for (i = 0; i < sheet.getNumMergedRegions(); i++) {
System.out.println("第" + i + "个合并单元格");
CellRangeAddress region = sheet.getMergedRegion(i);
int row = region.getLastRow() - region.getFirstRow() + 1;
int col = region.getLastColumn() - region.getFirstColumn() + 1;
System.out.println("起始行:" + region.getFirstRow());
System.out.println("起始列:" + region.getFirstColumn());
System.out.println("所占行:" + row);
System.out.println("所占列:" + col);
}
}
} catch (Exception ex) {
ex.printStackTrace();
}
}
public String getValue(Cell cell) {
String value = "";
switch (cell.getCellType()) {
case Cell.CELL_TYPE_NUMERIC: // 数值型
if (DateUtil.isCellDateFormatted(cell)) {
// 如果是date类型则 ,获取该cell的date值
value = DateUtil.getJavaDate(cell.getNumericCellValue()).toString();
} else {// 纯数字
value = String.valueOf(cell.getNumericCellValue());
}
break;
/* 此行表示单元格的内容为string类型 */
case Cell.CELL_TYPE_STRING: // 字符串型
value = cell.getRichStringCellValue().toString();
break;
case Cell.CELL_TYPE_FORMULA:// 公式型
// 读公式计算值
value = String.valueOf(cell.getNumericCellValue());
if (value.equals("NaN")) {// 如果获取的数据值为非法值,则转换为获取字符串
value = cell.getRichStringCellValue().toString();
}
// cell.getCellFormula();读公式
break;
case Cell.CELL_TYPE_BOOLEAN:// 布尔
value = " "+ cell.getBooleanCellValue();
break;
/* 此行表示该单元格值为空 */
case Cell.CELL_TYPE_BLANK: // 空值
value = "";
break;
case Cell.CELL_TYPE_ERROR: // 故障
value = "";
break;
default:
value = cell.getRichStringCellValue().toString();
}
return value;
}
public static void main(String args[]) {
PoiReadExcel im = new PoiReadExcel();
im.readExcel("F:/2003.xls");
//im.readExcel("F:/2007.xlsx");
//im.readExcel("F:/2007.xls"); //2007下保存为2003
}
}
分享到:
相关推荐
二、Java POI操作Excel的核心功能 1. 创建新的Excel工作簿 使用`WorkbookFactory.create()`方法可以创建一个新的Excel工作簿对象,然后通过工作簿对象创建工作表。 2. 读取Excel工作簿 同样,使用`WorkbookFactory....
Java POI 是一个开源项目,...通过以上步骤和知识点,你可以使用Java POI库高效地进行Excel操作,无论是读取现有数据还是创建新的Excel文件。记得参考官方文档和示例代码,这将帮助你更好地理解和运用这个强大的库。
Java中的Apache POI库是处理Microsoft Office文档的强大工具,尤其在Excel操作方面。它允许开发者在Java应用程序中创建、修改和读取Excel文件。在进行批量导入和导出Excel数据时,Apache POI是一个非常实用的选择。...
Java POI 操作 Excel 是一个常见的任务,在许多业务场景中都需要用到,比如数据导入导出、数据分析等。Apache POI 是一个流行的开源库,它允许开发者使用 Java 来读写 Microsoft Office 格式的文件,其中包括 Excel ...
Java POI 的主要特点是可以在 Java 应用程序中读取、写入和操作 Office 文件。 2. Java POI 的组成 Java POI 由多个组件组成,每个组件负责处理不同的 Office 文件格式。以下是 Java POI 的主要组件: * POIFS ...
### Java POI 操作 Excel 的知识点详解 #### 一、POI 介绍及结构说明 **1. Apache POI 简介** - **定义**:Apache POI 是一个由 Apache 软件基金会提供的开源项目,它提供了一组 API,使 Java 程序能够读写 ...
Java POI库是Apache软件基金会开发的一个开源项目,专门用于读写Microsoft Office格式的文件,包括Excel。在Java中,如果你需要导出Excel文件,Java POI是一个非常实用的工具。下面将详细介绍如何使用Java POI来实现...
Java的Apache POI库是一个强大的工具,用于读取、创建和修改Microsoft Office格式的文件,尤其是Excel(.xlsx)文档。在本示例中,我们将深入探讨如何利用POI库来生成Excel中的图表曲线,这对于数据可视化和报告生成...
以上就是使用Java POI操作Excel的基本概念和常用方法。实际应用中,你可能需要根据具体需求进行扩展和定制。在"simpleExportExcel"这个示例中,很可能是实现了简单的Excel导出功能,包括创建工作簿、工作表、行和...
对于Excel操作,Java POI提供了HSSF(对应.xls文件)和XSSF(对应.xlsx文件)两个组件,分别用于处理不同版本的Excel文件。 ### 二、显示货币格式 在使用Java POI生成Excel时,为了使数据更易读和专业,我们经常...
java poi操作excel的实战文档介绍java poi操作excel的实战文档介绍
Java Poi 导出excel(支持各种设置字体、颜色、垂直居中)
Java POI是Apache软件基金会下的一个开源项目,主要用于读写Microsoft Office格式的文件,特别是Excel。在Java开发中,当你需要处理Excel数据时,POI库是一个强大的工具。本压缩包包含了一些关键资源,帮助你理解和...
在实际使用中,Java开发者首先需要将对应的JAR包添加到项目的类路径中,然后就可以通过调用Apache POI提供的API来实现Excel操作。例如,创建一个新的Excel文件并写入数据的简单示例代码: ```java import org....
Java 使用Apache POI库操作Excel 2007文件详解 在Java开发中,处理Excel文件是一项常见的任务,特别是对于数据分析、数据导入导出或报表生成等场景。Apache POI是一个流行的开源库,它允许开发者读写Microsoft ...
在Java世界中,Poi是解析和操作这些文件的首选工具,尤其在数据导入导出、自动化测试、数据分析等领域应用广泛。 Excel文件通常以.XLS或.XLSX格式存在,其中.XLS是早期版本的二进制格式,而.XLSX则是基于Open XML...
**二、使用Java POI操作Excel** 1. **创建Workbook**:首先,你需要创建一个Workbook实例,这可以是HSSFWorkbook或XSSFWorkbook,取决于你要处理的Excel文件类型。 2. **添加Sheet**:然后,向Workbook中添加Sheet...
在Java编程环境中,Apache POI库是一个非常实用的工具,用于读取、写入和修改Microsoft Office格式的文件,特别是Excel(.xlsx 和 .xls)文件。本教程将详细介绍如何使用JAVA POI库来创建一个包含图片的完整Excel...
在Java开发中,POI库被广泛用于生成、修改和读取Excel文档。本篇将深入探讨如何利用Apache POI来操作Excel模板,以及如何读取数据并将其填充到新生成的文件中,最终提供下载。 首先,你需要在项目中引入Apache POI...
在提供的“java-excel导入导出”压缩包中,可能包含了示例代码、说明文档以及测试数据,可以帮助初学者快速理解和使用Java POI进行Excel操作。通过学习和实践这些示例,你可以掌握Java POI库的基本用法,并能灵活...