`

java poi excel操作示例

 
阅读更多

使用poi3.9版本使用的示例

参考http://poi.apache.org/spreadsheet/quick-guide.html

 

import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Calendar;
import java.util.Date;
import java.util.Iterator;

import org.apache.poi.hssf.usermodel.HSSFHeader;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.CellStyle;
import org.apache.poi.ss.usermodel.ClientAnchor;
import org.apache.poi.ss.usermodel.Comment;
import org.apache.poi.ss.usermodel.CreationHelper;
import org.apache.poi.ss.usermodel.DataFormat;
import org.apache.poi.ss.usermodel.DateUtil;
import org.apache.poi.ss.usermodel.Drawing;
import org.apache.poi.ss.usermodel.Font;
import org.apache.poi.ss.usermodel.Header;
import org.apache.poi.ss.usermodel.Name;
import org.apache.poi.ss.usermodel.RichTextString;
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.ss.util.CellReference;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

//http://poi.apache.org/spreadsheet/quick-guide.html
public class ExcelParseUtil {

	public static void test() throws IOException {
		Workbook wb = new HSSFWorkbook();
		FileOutputStream fileOut = new FileOutputStream(
				"E:\\logs\\workbook.xls");
		Sheet sheet1 = wb.createSheet("new sheet");
		Sheet sheet2 = wb.createSheet("second sheet");

		// 设置sheet的标题
		Header header = sheet1.getHeader();
		header.setCenter("Center Header");
		header.setLeft("Left Header");
		header.setRight(HSSFHeader.font("Stencil-Normal", "Italic")
				+ HSSFHeader.fontSize((short) 16)
				+ "Right w/ Stencil-Normal Italic font and size 16");

		// 合并单元格
		sheet1.groupRow(5, 14);
		sheet1.groupRow(7, 14);
		sheet1.groupRow(16, 19);

		sheet1.groupColumn((short) 4, (short) 7);
		sheet1.groupColumn((short) 9, (short) 12);
		sheet1.groupColumn((short) 10, (short) 11);

		sheet1.addMergedRegion(new CellRangeAddress(1, // first row (0-based)
				1, // last row (0-based)
				1, // first column (0-based)
				2 // last column (0-based)
		));

		// 设置图片
		// Create the drawing patriarch. This is the top level container for all
		// shapes.
		// Drawing drawing = sheet1.createDrawingPatriarch();
		//
		// //add a picture shape
		// ClientAnchor anchor = helper.createClientAnchor();
		// //set top-left corner of the picture,
		// //subsequent call of Picture#resize() will operate relative to it
		// anchor.setCol1(3);
		// anchor.setRow1(2);
		// Picture pict = drawing.createPicture(anchor, pictureIdx);
		//
		// //auto-size picture relative to its top-left corner
		// pict.resize();

		String sname = "TestSheet", cname = "TestName", cvalue = "TestVal";
		Name namedCell = wb.createName();
		namedCell.setNameName(cname);
		String reference = sname + "!A1:A1"; // area reference
		namedCell.setRefersToFormula(reference);

		// 2. create named range for a single cell using cellreference
		// Name namedCel2 = wb.createName();
		// namedCel2.setNameName(cname);
		// reference = sname+"!A1"; // cell reference
		// namedCel2.setRefersToFormula(reference);
		//
		// // 3. create named range for an area using AreaReference
		// Name namedCel3 = wb.createName();
		// namedCel3.setNameName(cname);
		// reference = sname+"!A1:C5"; // area reference
		// namedCel3.setRefersToFormula(reference);
		//
		// // 4. create named formula
		// Name namedCel4 = wb.createName();
		// namedCel4.setNameName("my_sum");
		// namedCel4.setRefersToFormula("SUM(sname+!$I$2:$I$6)");

		// Note that sheet name is Excel must not exceed 31 characters
		// and must not contain any of the any of the following characters:
		// 0x0000
		// 0x0003
		// colon (:)
		// backslash (\)
		// asterisk (*)
		// question mark (?)
		// forward slash (/)
		// opening square bracket ([)
		// closing square bracket (])

		// You can use
		// org.apache.poi.ss.util.WorkbookUtil#createSafeSheetName(String
		// nameProposal)}
		// for a safe way to create valid names, this utility replaces invalid
		// characters with a space (' ')"

		//设置单元格值
		// Create a row and put some cells in it. Rows are 0 based.
		Row row = sheet1.createRow((short) 0);
		// Create a cell and put a value in it.
		Cell cell = row.createCell(0);
		cell.setCellValue(1);

		// Or do it on one line.
		row.createCell(1).setCellValue(1.2);
		row.createCell(2).setCellValue("This is a string");
		row.createCell(3).setCellValue(true);

		Row row2 = sheet2.createRow(0);

		// Create a cell and put a date value in it. The first cell is not
		// styled
		// as a date.
		Cell cell2 = row2.createCell(0);
		cell2.setCellValue(new Date());

		// we style the second cell as a date (and time). It is important to
		// create a new cell style from the workbook otherwise you can end up
		// modifying the built in style and effecting not only this cell but
		// other cells.
		//设置单元格日期格式
		CellStyle cellStyle = wb.createCellStyle();
		DataFormat format = wb.createDataFormat();
		cellStyle.setDataFormat(format.getFormat("yyyy/mm/dd"));
		// style.setDataFormat(format.getFormat("#,##0.0000"));

		//设置单元格字体
		Font font = wb.createFont();
		font.setFontHeightInPoints((short) 24);
		font.setFontName("Courier New");
		font.setItalic(true);
		font.setStrikeout(true);
		font.setBoldweight(Font.BOLDWEIGHT_BOLD);

		cellStyle.setFont(font);
		cellStyle.setWrapText(true);

		cell2 = row2.createCell(1);
		cell2.setCellValue(new Date());
		cell2.setCellStyle(cellStyle);

		// you can also set date as java.util.Calendar
		cell2 = row2.createCell(2);
		cell2.setCellValue(Calendar.getInstance());
		cell2.setCellStyle(cellStyle);

		// 註釋
		// Create the comment and set the text+author
		CreationHelper factory = wb.getCreationHelper();
		// When the comment box is visible, have it show in a 1x3 space
		ClientAnchor anchor = factory.createClientAnchor();
		anchor.setCol1(cell.getColumnIndex());
		anchor.setCol2(cell.getColumnIndex() + 1);
		anchor.setRow1(row.getRowNum());
		anchor.setRow2(row.getRowNum() + 3);
		Drawing drawing = sheet1.createDrawingPatriarch();
		Comment comment = drawing.createCellComment(anchor);
		RichTextString str = factory.createRichTextString("Hello, World!");
		comment.setString(str);
		comment.setAuthor("Apache POI");

		// Assign the comment to the cell
		cell.setCellComment(comment);

		// Hyperlink link = createHelper.createHyperlink(Hyperlink.LINK_URL);
		// link.setAddress("http://poi.apache.org/");
		// cell.setHyperlink(link);
		// cell.setCellStyle(cellStyle);

		Row row3 = sheet2.createRow((short) 2);
		row3.createCell(0).setCellValue(1.1);
		row3.createCell(1).setCellValue(new Date());
		row3.createCell(2).setCellValue(Calendar.getInstance());
		row3.createCell(3).setCellValue("a string");
		row3.createCell(4).setCellValue(true);
		row3.createCell(5).setCellType(Cell.CELL_TYPE_ERROR);

		//获取sheet的每个单元格的值
		Sheet sheet = wb.getSheetAt(0);
		for (Iterator<Row> rit = sheet.rowIterator(); rit.hasNext();) {
			Row row4 = rit.next();
			for (Iterator<Cell> cit = row4.cellIterator(); cit.hasNext();) {
				Cell cell4 = cit.next();
				// do something here
			}
		}

		Sheet sheet5 = wb.getSheetAt(1);
		for (Row row5 : sheet5) {
			for (Cell cell5 : row5) {
				CellReference cellRef = new CellReference(row5.getRowNum(),
						cell5.getColumnIndex());
				System.out.print(cellRef.formatAsString());
				System.out.print(" - ");

				switch (cell5.getCellType()) {
				case Cell.CELL_TYPE_STRING:
					System.out.println(cell5.getRichStringCellValue()
							.getString());
					break;
				case Cell.CELL_TYPE_NUMERIC:
					if (DateUtil.isCellDateFormatted(cell5)) {
						System.out.println(cell5.getDateCellValue());
					} else {
						System.out.println(cell5.getNumericCellValue());
					}
					break;
				case Cell.CELL_TYPE_BOOLEAN:
					System.out.println(cell5.getBooleanCellValue());
					break;
				case Cell.CELL_TYPE_FORMULA:
					System.out.println(cell5.getCellFormula());
					break;
				default:
					System.out.println();
				}
			}
		}

		wb.write(fileOut);
		fileOut.close();
	}

	public void test2() throws IOException {
		Workbook wb = new XSSFWorkbook();
		FileOutputStream fileOut = new FileOutputStream("workbook.xlsx");
		wb.write(fileOut);
		fileOut.close();
	}

	public static void main(String[] args) throws IOException {
		test();
	}

}

 输出:

 

A1 - 41258.65454309028
B1 - Sat Dec 15 15:42:32 CST 2012
C1 - Sat Dec 15 15:42:32 CST 2012
A3 - 1.1
B3 - 41258.65454322917
C3 - 41258.65454322917
D3 - a string
E3 - true
F3 - 
0
0
分享到:
评论

相关推荐

    java poi导出图片到excel示例代码

    Java POI导出图片到Excel示例代码详解 Java POI是Java开发中常用的开源库,用于读写Microsoft Office文件格式,包括Excel、Word、PowerPoint等。今天,我们将介绍如何使用Java POI将图片导出到Excel中。 标题解释 ...

    java_poi实现excel导入导出

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

    Java Poi 操作excel的API 好用

    二、Java POI操作Excel的核心功能 1. 创建新的Excel工作簿 使用`WorkbookFactory.create()`方法可以创建一个新的Excel工作簿对象,然后通过工作簿对象创建工作表。 2. 读取Excel工作簿 同样,使用`WorkbookFactory....

    java通过poi解析Excel示例

    本示例将详细讲解如何使用Java和POI库来解析Excel文档。 首先,我们需要引入Apache POI的相关依赖。如果你使用的是Maven项目,可以在pom.xml文件中添加以下依赖: ```xml &lt;groupId&gt;org.apache.poi &lt;artifactId&gt;...

    java poi操作excel小例子

    Java POI 操作 Excel 是一个常见的任务,在许多业务场景中都需要用到,比如数据导入导出、数据分析等。Apache POI 是一个流行的开源库,它允许开发者使用 Java 来读写 Microsoft Office 格式的文件,其中包括 Excel ...

    Excel Java POI导入导出示例

    本示例将详细讲解如何使用Java和Apache POI库进行Excel的导入与导出操作。 首先,你需要在项目中引入Apache POI的Jar包。在提供的压缩包中,应该包含了用于此目的的POI库。确保将这些库添加到你的项目类路径中,...

    java的poi生成excel图表demo

    Java的Apache POI库是一个强大的工具,用于读取、创建和修改Microsoft Office格式的文件,尤其是Excel(.xlsx)文档。在本示例中,我们将深入探讨如何利用POI库来生成Excel中的图表曲线,这对于数据可视化和报告生成...

    java poi 操作Excel

    在Java世界中,如果你想对Excel进行读写操作,POI库是不可或缺的工具。下面将详细介绍如何使用Java POI来操作Excel以及相关的知识点。 1. **基本概念** - HSSF(Horrible Spreadsheet Format):这是POI库处理...

    Java POI 生成Excel时显示货币格式

    对于Excel操作,Java POI提供了HSSF(对应.xls文件)和XSSF(对应.xlsx文件)两个组件,分别用于处理不同版本的Excel文件。 ### 二、显示货币格式 在使用Java POI生成Excel时,为了使数据更易读和专业,我们经常...

    java POI完整示例,POI将word转HTML,数据库倒出数据到Excel等

    "POI将word转HTML.zip"和"demo1.zip"可能包含具体的Java代码示例,用于演示如何实现Word到HTML的转换以及数据库数据导出到Excel的操作。解压后,开发者可以查看源代码并根据自己的需求进行调整和应用。 总结,Java...

    poi 操作excel模板

    在Java开发中,POI库被广泛用于生成、修改和读取Excel文档。本篇将深入探讨如何利用Apache POI来操作Excel模板,以及如何读取数据并将其填充到新生成的文件中,最终提供下载。 首先,你需要在项目中引入Apache POI...

    java poi操作excel批量导入导出项目需要的jar包

    Java中的Apache POI库是处理Microsoft Office文档的强大工具,尤其在Excel操作方面。它允许开发者在Java应用程序中创建、修改和读取Excel文件。在进行批量导入和导出Excel数据时,Apache POI是一个非常实用的选择。...

    java poi Excel导入导出示例

    在这个示例中,我们将深入探讨如何使用Apache POI库进行Excel的导入和导出操作。Apache POI 提供了丰富的API,使得Java程序员可以在不依赖Microsoft Office的情况下读写Excel文件。 首先,让我们了解POI的基本概念...

    POI操作Excel完整示例

    本示例将详细讲解如何使用Apache POI进行Excel操作,涵盖从创建新的工作簿到添加数据、设置样式等各个方面。 首先,我们需要引入Apache POI的依赖。如果你使用的是Maven,可以在pom.xml文件中添加以下依赖: ```xml...

    JAVA poi 做EXCEL导出(包含图片) 完整版

    以上代码示例展示了如何使用Java POI库创建一个包含图片的Excel文件。你可以根据实际需求调整单元格、图片的位置和大小,以及图片的数量。如果你在实现过程中遇到问题,可以随时提问,我会尽我所能提供帮助。

    java导出excel POI jar包

    这个链接提供了一个详细的Java代码示例,演示了如何使用POI导出Excel。在实际开发中,你可以根据这个示例调整代码以满足自己的需求,比如添加更多的数据处理逻辑或自定义样式。记得在导入项目时,确保包含上述提到的...

    Java poi 实现excel导入导出

    在提供的“java-excel导入导出”压缩包中,可能包含了示例代码、说明文档以及测试数据,可以帮助初学者快速理解和使用Java POI进行Excel操作。通过学习和实践这些示例,你可以掌握Java POI库的基本用法,并能灵活...

    Java Poi 解析EXCEL数据

    在Java世界中,Poi是解析和操作这些文件的首选工具,尤其在数据导入导出、自动化测试、数据分析等领域应用广泛。 Excel文件通常以.XLS或.XLSX格式存在,其中.XLS是早期版本的二进制格式,而.XLSX则是基于Open XML...

    java 通过poi操作excel jar包

    Java通过Apache POI库操作Excel是Java开发人员处理Microsoft Office文档的一种常见方法,特别是当需要在应用程序中生成、读取或修改Excel数据时。Apache POI是一个开源项目,提供了丰富的API,使得Java开发者能够...

Global site tag (gtag.js) - Google Analytics