您的位置:首页 > 编程语言 > Java开发

java poi excel操作示例

2014-01-26 18:49 465 查看
使用poi3.9版本使用的示例

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

[java] view
plaincopy

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();

}

}

输出:

[java] view
plaincopy

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 -
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: