`
samjavaeye
  • 浏览: 193706 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

使用apache poi读写excel文件

 
阅读更多

apache poi软件包可以用来操作office文档,并且可以支持2007以上版本的文档,例如excel的.xslx文件。下面是一个生成excel文件的例子,演示了常用的格式设置。

import java.awt.Color;
import java.io.FileOutputStream;
import java.text.SimpleDateFormat;

import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.CellStyle;
import org.apache.poi.ss.usermodel.DataFormat;
import org.apache.poi.ss.usermodel.Font;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.xssf.streaming.SXSSFWorkbook;
import org.apache.poi.xssf.usermodel.XSSFCellStyle;
import org.apache.poi.xssf.usermodel.XSSFColor;

public class Exemple1 {

	public void run(String[] args) throws Throwable {
		String[] titles = new String[] { "字符串", "单价", "数量", "日期", "百分比" };
		String[][] datas = new String[][] {
				{ "哇哈哈营养快线", "4.2", "2", "2014-06-04", "0.0343" },
				{ "乐事薯片", "5.804", "1", "2014-06-04", "0.02335" } };
		// 流形式的工作簿,适合数据量很大的情况
		SXSSFWorkbook wb = new SXSSFWorkbook(100);
		Sheet sh = wb.createSheet();
		Row row;
		Cell cell;
		String[] rowDatas;

		/* 写表头 */
		XSSFCellStyle titleCellStyle = buildCellStyle(wb, false, null);
		// 设置单元格背景色
		titleCellStyle.setFillForegroundColor(new XSSFColor(new Color(247, 150,
				90)));
		// 设置纯色块填充
		titleCellStyle.setFillPattern(CellStyle.SOLID_FOREGROUND);
		// 设置文本居中对齐
		titleCellStyle.setAlignment(CellStyle.ALIGN_CENTER);
		// 定义标题字体
		Font titleFont = wb.createFont();
		// 字体名称
		titleFont.setFontName("微软雅黑");
		// 字体为粗体
		titleFont.setBoldweight(Font.BOLDWEIGHT_BOLD);
		titleCellStyle.setFont(titleFont);
		// 创建标题行(第一行)
		Row titleRow = sh.createRow(0);
		// 创建标题行中每个标题
		for (int cellnum = 0; cellnum < titles.length; cellnum++) {
			cell = titleRow.createCell(cellnum);
			cell.setCellStyle(titleCellStyle);
			cell.setCellValue(titles[cellnum]);
		}

		/* 定义格式 */
		Font dataFont = wb.createFont();
		dataFont.setFontName("微软雅黑");
		DataFormat format = wb.createDataFormat();
		// 全边框,不换行,年月日格式的日期
		CellStyle dateCellStyle = buildCellStyle(wb, false, format.getFormat("yyyy年m月d日"));
		// 全边框,不换行,千位分隔符,两位小数
		CellStyle double2CellStyle = buildCellStyle(wb, false, format.getFormat("#,##0.00"));
		// 全边框,不换行,千位分隔符,三位小数
		CellStyle double3CellStyle = buildCellStyle(wb, false, format.getFormat("#,##0.000"));
		// 全边框,不换行,百分比,两位小数
		CellStyle persentCellStyle = buildCellStyle(wb, false, format.getFormat("0.00%"));
		// 全边框,不换行
		CellStyle textCellStyle = buildCellStyle(wb, false, null);
		SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd");

		/* 写数据 */
		for (int rownum = 0; rownum < datas.length; rownum++) {
			row = sh.createRow(rownum + 1);
			rowDatas = datas[rownum];
			cell = row.createCell(0);
			cell.setCellStyle(textCellStyle);
			cell.setCellValue(rowDatas[0]);
			cell = row.createCell(1);
			cell.setCellStyle(double2CellStyle);
			cell.setCellValue(Double.valueOf(rowDatas[1]));
			cell = row.createCell(2);
			cell.setCellStyle(double3CellStyle);
			cell.setCellValue(Double.valueOf(rowDatas[2]));
			cell = row.createCell(3);
			cell.setCellStyle(dateCellStyle);
			cell.setCellValue(sf.parse(rowDatas[3]));
			cell = row.createCell(4);
			cell.setCellStyle(persentCellStyle);
			cell.setCellValue(Double.valueOf(rowDatas[4]));
		}

		FileOutputStream out = new FileOutputStream("D:/temp/sxssf.xlsx");
		wb.write(out);
		out.close();

		// dispose of temporary files backing this workbook on disk
		wb.dispose();

		System.out.println("程序运行结束。");
	}
	
	public static void main(String[] args) throws Throwable {
		new Exemple1().run(args);
	}

	/**
	 * 构造单元格样式对象,已设置四周的边框。
	 * @param wb 工作薄对象
	 * @param isWrapText 单元格是否自动换行
	 * @param format 单元格格式化器编号
	 * @return 单元格样式对象
	 */
	private XSSFCellStyle buildCellStyle(SXSSFWorkbook wb, boolean isWrapText, Short format) {
		XSSFCellStyle style = (XSSFCellStyle) wb.createCellStyle();
		// 设置上边框为细线条
		style.setBorderTop(CellStyle.BORDER_THIN);
		// 设置下边框为细线条
		style.setBorderBottom(CellStyle.BORDER_THIN);
		// 设置左边框为细线条
		style.setBorderLeft(CellStyle.BORDER_THIN);
		// 设置右边框为细线条
		style.setBorderRight(CellStyle.BORDER_THIN);
		// 是否自动换行
		style.setWrapText(isWrapText);
		if (format != null) {
			style.setDataFormat(format);
		}
		return style;
	}
}

 生成的excel文件如下图所示:


 

再看一个读取Excel文件的例子:

XSSFWorkbook wb = (XSSFWorkbook) WorkbookFactory.create(new FileInputStream("D:/temp/test.xlsx"));  
XSSFSheet sheet = wb.getSheetAt(0);
int lastRowNum = sheet.getLastRowNum();
// 从第2行(编号从0开始)读取数据,跳过标题行
for (int i = 1; i <= lastRowNum; i++) {
    Row row = sheet.getRow(i);
    String name = row.getCell(0).getStringCellValue();
    Double price = row.getCell(1).getNumericCellValue();
    Double count = row.getCell(2).getNumericCellValue();
    Date date = row.getCell(3).getDateValue();
    Double persent = row.getCell(4).getNumericCellValue();
}

 

  • 大小: 5.5 KB
分享到:
评论

相关推荐

    apache POI文件读写excel

    在本文中,我们将深入探讨如何使用Apache POI进行Excel文件的读写操作,以及相关的技术细节。 1. **Apache POI的基本概念** - **HSSF**: 用于处理旧版的BIFF格式(.xls)的Excel文件。 - **XSSF**: 用于处理基于...

    poi读取excel文件

    标题提到的"poi读取excel文件",指的是使用Apache POI库来处理Excel数据。在最新的版本中,POI引入了更高效和强大的功能,使得处理Excel文件变得更加方便。 描述中提到了"最新版poi相关的6个jar包",这些jar包是...

    Apache poi 操作 excel 文件压缩包

    在Java环境中,Apache POI 提供了一套API,使得开发者能够创建、修改和读取Excel文件。这个压缩包包含了Apache POI库的多个版本及其依赖库,如ooxml-schemas、xmlbeans等,用于支持对Excel文件的OOXML(Office Open ...

    apache POI 读取 Excel

    apache poi 读取 Excel 的 jar 包 博文链接:https://wxinpeng.iteye.com/blog/231895

    apache poi 读取Excel文件内容(2003,2007)

    这篇博文主要讲解如何使用Apache POI库来读取Excel文件的内容,无论是2003版的.XLS还是2007版及以后的.XLSX格式。 在Java编程中,Apache POI 提供了丰富的API,使得开发者可以方便地操作Excel文件。首先,我们需要...

    Java使用apache POI读取Excel2007以上代码以及所需jar包

    本文将详细介绍如何使用Apache POI库来读取Excel 2007及以上版本(即XLSX格式)的文件,并提供所需的jar包信息。 首先,要使用Apache POI读取XLSX文件,你需要确保引入了正确的依赖。Apache POI项目提供了多个组件...

    Apache POI库jar文件

    开发人员可以使用Apache POI库来读取、写入和修改这些格式的文档。 提供多种API:Apache POI库提供了多种API,包括HSSF、XSSF、HWPF、XWPF、HSLF和XSLF等。这些API可以帮助开发人员处理不同类型的Office文档,例如...

    Apache POI HSSF读写Excel

    5. **读取数据**:读取Excel文件时,首先需要使用`FileInputStream fis = new FileInputStream(filePath);`打开文件,然后通过`HSSFWorkbook workbook = new HSSFWorkbook(fis);`加载工作簿。接着,可以使用`...

    POI 读取Excel文件

    Apache POI 是一个开源项目,专门用于...通过以上介绍,你应该已经掌握了使用 Apache POI 读取 Excel 文件的基本方法和一些高级特性。在实际开发中,根据具体需求进行灵活运用,可以实现复杂的 Excel 数据处理任务。

    Apache POI for Android

    - **读取Excel**:使用Apache POI,开发者可以打开Excel文件,访问工作簿、工作表,以及单元格中的数据。例如,通过`WorkbookFactory.create()`方法加载文件,然后遍历工作表和单元格进行数据提取。 - **写入Excel...

    apache poi 导出excel、word

    使用Apache POI创建Excel文件时,首先需要创建一个Workbook对象,它是Excel文件的容器。然后,可以添加Sheet对象来表示工作表,并在Sheet中创建Row和Cell来填充数据。POI支持多种单元格数据类型,如字符串、数字、...

    Apache Poi Excel导出

    在Java开发中,Apache POI 提供了一种高效且灵活的方式来创建、修改和读取Excel工作簿。这篇博客“Apache Poi Excel导出”可能详细介绍了如何使用Apache POI库来生成Excel文件,特别适用于数据导出或报表生成等场景...

    Apache POI Excel操作

    在Java开发环境中,Apache POI 提供了丰富的API,使得开发者能够方便地在程序中创建、修改和读取Excel文件。本篇将详细介绍Apache POI在Excel操作中的应用,包括基本概念、使用步骤、关键类和方法以及实际示例。 1....

    POI读取Excel带格式数据

    本篇将详细讲解如何使用Apache POI读取Excel文件中的带格式数据。 首先,理解Apache POI的基本架构至关重要。POI提供了HSSF(Horrible Spreadsheet Format)用于处理老版本的.xls文件,而XSSF用于处理较新的.xlsx...

    Java使用poi读取Excel文件例子

    这个例子将重点讲解如何使用Apache POI读取Excel(.xlsx)文件。首先,我们需要理解Excel文件的基本结构以及POI库提供的API。 Excel的.xlsx文件是由一系列的工作表(worksheet)组成,每个工作表包含多个单元格...

    POI读写excel文件+poi简单文档

    总的来说,“POI读写excel文件+poi简单文档”涵盖了Apache POI在Java环境中处理Excel文件的基础和进阶知识,是学习和使用POI进行Excel操作的重要参考资料。通过学习和实践,开发者可以轻松地在Java程序中实现Excel...

    使用POI读取excel文件内容.docx

    总的来说,这段代码展示了如何使用Apache POI读取Excel文件,包括获取单元格内容、处理不同类型的单元格以及格式化日期。在实际项目中,你可以根据需求扩展这个类,例如添加写入Excel、处理多个工作表或支持.xlsx...

    使用ITEXT导出PDF、WORD,APACHE POI导出EXCEL报表文件

    Apache POI提供了一系列接口和类,允许开发者读取、写入和修改XLS(老版Excel)和XLSX(新版Excel)文件。创建Excel报表时,可以使用`XSSFWorkbook`表示工作簿,` XSSFSheet `代表工作表,`XSSFRow`表示行,`...

    Java用poi读取excel文件

    这时候,我们可以使用 Apache 的 POI 工具包来读取 Excel 文件。 POI(Poor Obfuscation Implementation)是一个开源的 Java 库,由 Apache 软件基金会维护。它提供了对 Microsoft Office 文件格式的读写能力,包括...

    Java用poi读取excel文件.pdf

    Java 使用 Apache POI 读取 Excel 文件是一种常见的数据处理任务,尤其在数据分析、报表生成以及自动化测试等场景中。Apache POI 是一个流行的开源库,它允许开发者在 Java 应用程序中创建、修改和显示 Microsoft ...

Global site tag (gtag.js) - Google Analytics