java读写excel poi_Java读写Excel之POI超入门

Apache POI 是用Java编写的免费开源的跨平台的 Java API,Apache POI提供API给Java程式对Microsoft Office格式档案读和写的功能。

Apache POI 是创建和维护操作各种符合Office Open XML(OOXML)标准和微软的OLE 2复合文档格式(OLE2)的Java API。用它可以使用Java读取和创建,修改MS Excel文件.而且,还可以使用Java读取和创建MS Word和MSPowerPoint文件。Apache POI 提供Java操作Excel解决方案(适用于Excel97-2008)。

先导入以下包,版本可以自行选择。

dom4j-1.7-20060614.jar

log4j-1.2.13.jar

poi-3.7-20101029.jar

poi-ooxml-3.7-20101029.jar

poi-ooxml-schemas-3.7-20101029.jar

如果处理.xlsx、docx、pptx的话可以试试Docx4j 。

Docx4j is a Java library for creating and manipulating Microsoft Open XML (Word docx, Powerpoint pptx, and Excel xlsx) files.

HSSF - 提供读写Microsoft Excel XLS格式档案的功能。

XSSF - 提供读写Microsoft Excel OOXML XLSX格式档案的功能。

HWPF - 提供读写Microsoft Word DOC格式档案的功能。

HSLF - 提供读写Microsoft PowerPoint格式档案的功能。

HDGF - 提供读Microsoft Visio格式档案的功能。

HPBF - 提供读Microsoft Publisher格式档案的功能。

HSMF - 提供读Microsoft Outlook格式档案的功能。

//生成Workbook

HSSFWorkbook wb = newHSSFWorkbook();//添加Worksheet(不添加sheet时生成的xls文件打开时会报错)

@SuppressWarnings("unused")

Sheet sheet1=wb.createSheet();

@SuppressWarnings("unused")

Sheet sheet2=wb.createSheet();

@SuppressWarnings("unused")

Sheet sheet3= wb.createSheet("new sheet");

@SuppressWarnings("unused")

Sheet sheet4= wb.createSheet("rensanning");//保存为Excel文件

FileOutputStream out = null;try{

out= new FileOutputStream("c:\\text.xls");

wb.write(out);

}catch(IOException e) {

System.out.println(e.toString());

}finally{try{

out.close();

}catch(IOException e) {

System.out.println(e.toString());

}

}

2、生成Workbook OOXML形式(.xlsx)

//生成Workbook

XSSFWorkbook wb = newXSSFWorkbook();//......

3、打开Workbook

//方法一:使用WorkbookFactory

FileInputStream in = null;

Workbook wb= null;try{

in= newFileInputStream(TEST_WORKBOOK_NAME);

wb=WorkbookFactory.create(in);

}catch(IOException e) {

System.out.println(e.toString());

}catch(InvalidFormatException e) {

System.out.println(e.toString());

}finally{try{

in.close();

}catch(IOException e) {

System.out.println(e.toString());

}

}

System.out.println("====================Workbook====================");

System.out.println("Number of Sheets:" +wb.getNumberOfSheets());

System.out.println("Sheet3's name:" + wb.getSheetName(3));

System.out.println();//方法二:使用POIFSFileSystem

try{

in= newFileInputStream(TEST_WORKBOOK_NAME);

POIFSFileSystem fs= newPOIFSFileSystem(in);

wb= newHSSFWorkbook(fs);

}catch(IOException e) {

System.out.println(e.toString());

}finally{try{

in.close();

}catch(IOException e) {

System.out.println(e.toString());

}

}

System.out.println("====================Workbook====================");

System.out.println("Number of Sheets:" +wb.getNumberOfSheets());

System.out.println("Sheet3's name:" + wb.getSheetName(3));

System.out.println();

4、打开加密的Workbook(读加密)

FileInputStream input = newFileInputStream(TEST_WORKBOOK_NAME_ENCRYPTED);

BufferedInputStream binput= newBufferedInputStream(input);

POIFSFileSystem poifs= newPOIFSFileSystem(binput);

Biff8EncryptionKey.setCurrentUserPassword(TEST_WORKBOOK_PASSWORD);

HSSFWorkbook wb= newHSSFWorkbook(poifs);

System.out.println("====================EncryptedWorkbook====================");

System.out.println("Number of Sheets:" +wb.getNumberOfSheets());

System.out.println("Sheet0's name:" + wb.getSheetName(0));

System.out.println();

5、追加Sheet

Sheet sheet = wb.createSheet("append sheet");

6、复制Sheet

wb.cloneSheet(1);

7、修改Sheet名称

wb.setSheetName(i, "SheetName new");

8、删除Sheet

wb.removeSheetAt(1);

9、设置下部Sheet名的Tab的第一个可见Tab

//设置下部Sheet名的Tab的第一个可见Tab(以左的Sheet看不见)

wb.setFirstVisibleTab(2);

10、调整Sheet顺序

wb.setSheetOrder("SheetName3", 1);

wb.setSheetOrder(wb.getSheetName(4), 0);

11、设置当前Sheet

t.setActiveSheet();

//设置当前Sheet

wb.setActiveSheet(wb.getNumberOfSheets() - 1);//(Excel的当前Sheet被设置,需要结合setSelected使用,不然下部Sheet名的Tab还是默认为第一个)//(需要选择多个Sheet的话,每个Sheet调用setSelected(true)即可)

wb.getSheetAt(wb.getNumberOfSheets() - 1).setSelected(true);

12、固定窗口

wb.getSheet("SheetName4").createFreezePane(2, 2);

df1f925009502ee60b9fd17b8510fba3.gif

13、分割窗口

wb.getSheet("SheetName5").createSplitPane(2000, 2000, 0, 0, HSSFSheet.PANE_LOWER_LEFT);

2d88931c7c941cd085f960fb6561801d.gif

14、Sheet缩放

//setZoom(int numerator, int denominator)//"numerator"÷"denominator" 例如: 3÷1=3 那就是设置为300%//扩大(200%)

wb.getSheet("sheetname1").setZoom(2, 1);//缩小(50%)

wb.getSheet("sheetname2").setZoom(1, 2);

a836ecb3b342357505b2587f4701dbb1.gif

15、行列分组

wb.getSheet("sheetname3").groupColumn(4, 7);

wb.getSheet("sheetname3").groupColumn(9, 12);

wb.getSheet("sheetname3").groupColumn(10, 11);

wb.getSheet("sheetname3").groupRow(5, 14);

wb.getSheet("sheetname3").groupRow(7, 13);

wb.getSheet("sheetname3").groupRow(16, 19);

4ab6ac571e7917e42510337c597987aa.gif

16、关闭分组

wb.getSheet("sheetname3").setColumnGroupCollapsed(10, true);

wb.getSheet("sheetname3").setRowGroupCollapsed(7, true);

17、插入行

Row row1 = wb.getSheet("sheetname4").createRow(1);

Cell cell1_1= row1.createCell(1);

cell1_1.setCellValue(123);

Row row4= wb.getSheet("sheetname4").createRow(4);

Cell cell4_3= row4.createCell(3);

cell4_3.setCellValue("中国");

18、删除行

Row row = wb.getSheet("sheetname4").getRow(1);

wb.getSheet("sheetname4").removeRow(row);

19、移动行

//******移动行只移动内容,不牵扯行的删除和插入//移动行(把第1行和第2行移到第5行之后)

wb.getSheet("sheetname5").shiftRows(0, 1, 5);//移动行(把第3行和第4行往上移动1行)

wb.getSheet("sheetname5").shiftRows(2, 3, -1);

20、修改行高

//设置默认行高

wb.getSheet("sheetname6").setDefaultRowHeight((short)100);//设置行高

wb.getSheet("sheetname6").getRow(2).setHeight((short)(100 * 20));

21、修改列宽

//设置默认列宽

wb.getSheet("sheetname7").setDefaultColumnWidth(12);//设置列宽

wb.getSheet("sheetname7").setColumnWidth(0, 5 * 256);

22、不显示网格线

//不显示网格线

wb.getSheet("sheetname8").setDisplayGridlines(false);

23、设置分页

//设置第一页:3行2列 (可以多次设置)

wb.getSheet("sheetname9").setRowBreak(2);

wb.getSheet("sheetname9").setColumnBreak(1);

647a6ebf99caaebc698311ffba3c9716.gif

24、添加,删除,合并单元格

//追加行

for (int i = 0; i < 10; i++) {

Row row= wb.getSheet("sheetname10").createRow(i);for (int j = 0; j < 10; j++) {//添加单元格

Cell cell =row.createCell(j);

cell.setCellValue(i+ 1);

}//删除单元格

row.removeCell(row.getCell(5));

}//合并单元格//CellRangeAddress(int firstRow, int lastRow, int firstCol, int lastCol)

wb.getSheet("sheetname10").addMergedRegion(new CellRangeAddress(1, 4, 2, 3));

28d2dd5233174872c6b76d888c5b5cf7.gif

25、设置Header,Footer

//Header

Header header = wb.getSheet("sheetname11").getHeader();

header.setLeft(HSSFHeader.startUnderline()+HSSFHeader.font("宋体", "Italic") +

"文字文字" +HSSFHeader.endUnderline());

header.setCenter(HSSFHeader.fontSize((short)16) +HSSFHeader.startDoubleUnderline()+HSSFHeader.startBold()+

"汉字汉字" +HSSFHeader.endBold()+HSSFHeader.endDoubleUnderline());

header.setRight("打印时间:" + HSSFHeader.date() + " " +HSSFHeader.time());//Footer

Footer footer = wb.getSheet("sheetname11").getFooter();

footer.setLeft("Copyright @ rensanning");

footer.setCenter("Page:" + HSSFFooter.page() + " / " +HSSFFooter.numPages());

footer.setRight("File:" + HSSFFooter.file());

115f04f413c5563cb522e0c69fec8ae6.gif

26、设置单元格值

//boolean

Cell cell00 = rows[0].createCell(0);boolean val00 = true;

cell00.setCellValue(val00);//Calendar 格式化

CellStyle styleCalendar =wb.createCellStyle();

DataFormat formatCalendar=wb.createDataFormat();

styleCalendar.setDataFormat(formatCalendar.getFormat("yyyy/mm/dd"));

Cell cell11= rows[1].createCell(0);

Calendar val11=Calendar.getInstance();

cell11.setCellStyle(styleCalendar);

cell11.setCellValue(val11);//Date 格式化

CellStyle styleDate =wb.createCellStyle();

DataFormat formatDate=wb.createDataFormat();

styleDate.setDataFormat(formatDate.getFormat("yyyy/mm/dd hh:mm"));

Cell cell21= rows[2].createCell(0);

Date val21= newDate();

cell21.setCellStyle(styleDate);

cell21.setCellValue(val21);//double

Cell cell30 = rows[3].createCell(0);double val30 = 1234.56;

cell30.setCellValue(val30);//double 格式化

CellStyle styleDouble =wb.createCellStyle();

DataFormat formatDouble=wb.createDataFormat();

styleDouble.setDataFormat(formatDouble.getFormat("#,##0.00"));

Cell cell31= rows[3].createCell(1);double val31 = 1234.56;

cell31.setCellStyle(styleDouble);

cell31.setCellValue(val31);//String

Cell cell40 = rows[4].createCell(0);

HSSFRichTextString val40= new HSSFRichTextString("Test汉字");

cell40.setCellValue(val40);

27、设置单元格边线

wb.getSheet("sheetname2").setColumnWidth(1, 4096);

Row row1= wb.getSheet("sheetname2").createRow(1);

row1.setHeightInPoints(70);

Cell cell1_1= row1.createCell(1);

cell1_1.setCellValue("Sample");

CellStyle style=wb.createCellStyle();

style.setBorderTop(CellStyle.BORDER_DASHED);

style.setBorderBottom(CellStyle.BORDER_DOUBLE);

style.setBorderLeft(CellStyle.BORDER_MEDIUM_DASH_DOT);

style.setBorderRight(CellStyle.BORDER_MEDIUM);

style.setTopBorderColor(IndexedColors.MAROON.getIndex());

style.setBottomBorderColor(IndexedColors.SKY_BLUE.getIndex());

style.setLeftBorderColor(IndexedColors.ORANGE.getIndex());

style.setRightBorderColor(IndexedColors.BLUE_GREY.getIndex());

cell1_1.setCellStyle(style);

0aac71d8ec660739d2b671182cd52e02.gif

28、设置单元格背景填充

wb.getSheet("sheetname3").setColumnWidth(0, 4096);

wb.getSheet("sheetname3").setColumnWidth(1, 4096);

wb.getSheet("sheetname3").setColumnWidth(2, 4096);

Row row1= wb.getSheet("sheetname3").createRow(1);

row1.setHeightInPoints(70);

Cell cell1_0= row1.createCell(0);

Cell cell1_1= row1.createCell(1);

Cell cell1_2= row1.createCell(2);

cell1_0.setCellValue("THIN_VERT_BANDS");

cell1_1.setCellValue("BIG_SPOTS");

cell1_2.setCellValue("THICK_HORZ_BANDS");

CellStyle style1=wb.createCellStyle();

style1.setFillPattern(CellStyle.THIN_VERT_BANDS);

style1.setFillForegroundColor(IndexedColors.WHITE.getIndex());

style1.setFillBackgroundColor(IndexedColors.BLUE.getIndex());

CellStyle style2=wb.createCellStyle();

style2.setFillPattern(CellStyle.BIG_SPOTS);

style2.setFillForegroundColor(IndexedColors.RED.getIndex());

style2.setFillBackgroundColor(IndexedColors.WHITE.getIndex());

CellStyle style3=wb.createCellStyle();

style3.setFillPattern(CellStyle.THICK_HORZ_BANDS);

style3.setFillForegroundColor(IndexedColors.PINK.getIndex());

style3.setFillBackgroundColor(IndexedColors.BROWN.getIndex());

cell1_0.setCellStyle(style1);

cell1_1.setCellStyle(style2);

cell1_2.setCellStyle(style3);

29、设置单元格注释

HSSFCreationHelper createHelper =(HSSFCreationHelper)wb.getCreationHelper();

Drawing patriarch= wb.getSheet("sheetname4").createDrawingPatriarch();//注释

Row row = wb.getSheet("sheetname4").createRow(1);

Cell cell= row.createCell(1);

HSSFClientAnchor clientAnchor= new HSSFClientAnchor(0, 0, 0, 0,

(short) 4, 2, (short) 6, 5);

Comment comment=patriarch.createCellComment(clientAnchor);

comment.setString(createHelper.createRichTextString("注释注释111"));

comment.setAuthor("rensanning");

cell.setCellComment(comment);//带字体的注释

Row row2 = wb.getSheet("sheetname4").createRow(2);

Cell cell2= row2.createCell(1);

Font font=wb.createFont();

font.setFontName("宋体");

font.setFontHeightInPoints((short)10);

font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);

font.setColor(HSSFColor.RED.index);

Comment comment2=patriarch.createCellComment(clientAnchor);

HSSFRichTextString text= new HSSFRichTextString("注释注释222");

text.applyFont(font);

comment2.setString(text);

comment2.setAuthor("rensanning");

cell2.setCellComment(comment2);

30、设置单元格字体(斜体,粗体,下线,取消线,字体,大小,背景色)

Font font = null;

CellStyle style= null;//斜体

font =wb.createFont();

font.setItalic(true);

style=wb.createCellStyle();

style.setFont(font);

wb.getSheet("sheetname5").getRow(1).getCell(1).setCellStyle(style);//粗体

font =wb.createFont();

font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);

style=wb.createCellStyle();

style.setFont(font);

wb.getSheet("sheetname5").getRow(2).getCell(1).setCellStyle(style);//字体名

font =wb.createFont();

font.setFontName("Courier New");

style=wb.createCellStyle();

style.setFont(font);

wb.getSheet("sheetname5").getRow(3).getCell(1).setCellStyle(style);//字体大小

font =wb.createFont();

font.setFontHeightInPoints((short)20);

style=wb.createCellStyle();

style.setFont(font);

wb.getSheet("sheetname5").getRow(4).getCell(1).setCellStyle(style);//文字颜色

font =wb.createFont();

font.setColor(HSSFColor.YELLOW.index);

style=wb.createCellStyle();

style.setFont(font);

wb.getSheet("sheetname5").getRow(5).getCell(1).setCellStyle(style);//上标

font =wb.createFont();

font.setTypeOffset(HSSFFont.SS_SUPER);

style=wb.createCellStyle();

style.setFont(font);

wb.getSheet("sheetname5").getRow(6).getCell(1).setCellStyle(style);//下标

font =wb.createFont();

font.setTypeOffset(HSSFFont.SS_SUB);

style=wb.createCellStyle();

style.setFont(font);

wb.getSheet("sheetname5").getRow(7).getCell(1).setCellStyle(style);//删除线

font =wb.createFont();

font.setStrikeout(true);

style=wb.createCellStyle();

style.setFont(font);

wb.getSheet("sheetname5").getRow(8).getCell(1).setCellStyle(style);//下划线

font =wb.createFont();

font.setUnderline(HSSFFont.U_SINGLE);

style=wb.createCellStyle();

style.setFont(font);

wb.getSheet("sheetname5").getRow(9).getCell(1).setCellStyle(style);//背景色

style =wb.createCellStyle();

style.setFillForegroundColor(HSSFColor.SEA_GREEN.index);

style.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);

style.setFont(font);

wb.getSheet("sheetname5").getRow(10).getCell(1).setCellStyle(style);

31、设置超链接

HSSFCreationHelper createHelper =(HSSFCreationHelper)wb.getCreationHelper();

CellStyle style=wb.createCellStyle();

Font font=wb.createFont();

font.setUnderline(HSSFFont.U_SINGLE);

font.setColor(HSSFColor.BLUE.index);

style.setFont(font);//追加行

Row[] rows = new Row[10];for (int i = 0; i < 10; i++) {

rows[i]= wb.getSheet("sheetname6").createRow(i);

}//URL

rows[0].createCell(0).setCellValue("URL Link");

HSSFHyperlink link1=createHelper.createHyperlink(HSSFHyperlink.LINK_URL);

link1.setAddress("http://poi.apache.org/");

rows[0].getCell(0).setHyperlink(link1);

rows[0].getCell(0).setCellStyle(style);//Mail

rows[1].createCell(0).setCellValue("Email Link");

HSSFHyperlink link2=createHelper.createHyperlink(HSSFHyperlink.LINK_EMAIL);

link2.setAddress("mailto:poi@apache.org?subject=Hyperlinks");

rows[1].getCell(0).setHyperlink(link2);

rows[1].getCell(0).setCellStyle(style);//File

rows[2].createCell(0).setCellValue("File Link");

HSSFHyperlink link3=createHelper.createHyperlink(HSSFHyperlink.LINK_FILE);

link3.setAddress("link.xls");

rows[2].getCell(0).setHyperlink(link3);

rows[2].getCell(0).setCellStyle(style);//Workbook内

rows[3].createCell(0).setCellValue("Worksheet Link");

HSSFHyperlink link4=createHelper.createHyperlink(HSSFHyperlink.LINK_DOCUMENT);

link4.setAddress("sheetname1!A1");

rows[3].getCell(0).setHyperlink(link4);

rows[3].getCell(0).setCellStyle(style);

32、设置单元格横向对齐,纵向对齐

//横向对齐

wb.getSheet("sheetname7").setColumnWidth(2, 3072);

Row[] row= new Row[7];

Cell[] cell= new Cell[7];for (int i = 0 ; i < 7 ; i++){

row[i]= wb.getSheet("sheetname7").createRow(i + 1);

cell[i]= row[i].createCell(2);

cell[i].setCellValue("Please give me a receipt");

}

CellStyle style0=wb.createCellStyle();

style0.setAlignment(CellStyle.ALIGN_GENERAL);

cell[0].setCellStyle(style0);

CellStyle style1=wb.createCellStyle();

style1.setAlignment(CellStyle.ALIGN_LEFT);

cell[1].setCellStyle(style1);

CellStyle style2=wb.createCellStyle();

style2.setAlignment(CellStyle.ALIGN_CENTER);

cell[2].setCellStyle(style2);

CellStyle style3=wb.createCellStyle();

style3.setAlignment(CellStyle.ALIGN_RIGHT);

cell[3].setCellStyle(style3);

CellStyle style4=wb.createCellStyle();

style4.setAlignment(CellStyle.ALIGN_FILL);

cell[4].setCellStyle(style4);

CellStyle style5=wb.createCellStyle();

style5.setAlignment(CellStyle.ALIGN_JUSTIFY);

cell[5].setCellStyle(style5);

CellStyle style6=wb.createCellStyle();

style6.setAlignment(CellStyle.ALIGN_CENTER_SELECTION);

cell[6].setCellStyle(style6);//纵向对齐

Row row2 = wb.getSheet("sheetname8").createRow(1);

row2.setHeightInPoints(70);

Cell[] cell2= new Cell[4];for (int i = 0 ; i < 4 ; i++){

cell2[i]= row2.createCell(i + 1);

cell2[i].setCellValue("Please give me a receipt");

}

CellStyle style02=wb.createCellStyle();

style02.setVerticalAlignment(CellStyle.VERTICAL_TOP);

cell2[0].setCellStyle(style02);

CellStyle style12=wb.createCellStyle();

style12.setVerticalAlignment(CellStyle.VERTICAL_CENTER);

cell2[1].setCellStyle(style12);

CellStyle style22=wb.createCellStyle();

style22.setVerticalAlignment(CellStyle.VERTICAL_BOTTOM);

cell2[2].setCellStyle(style22);

CellStyle style32=wb.createCellStyle();

style32.setVerticalAlignment(CellStyle.VERTICAL_JUSTIFY);

cell2[3].setCellStyle(style32);

33、设置单元格旋转角度

Row[] row = new Row[4];

Cell[] cell= new Cell[4];for (int i = 0 ; i < 4 ; i++){

row[i]= wb.getSheet("sheetname9").createRow(i + 1);

cell[i]= row[i].createCell(2);

cell[i].setCellValue("Coffee");

}

CellStyle style0=wb.createCellStyle();

style0.setRotation((short)45);

cell[0].setCellStyle(style0);

CellStyle style1=wb.createCellStyle();

style1.setRotation((short)0);

cell[1].setCellStyle(style1);

CellStyle style2=wb.createCellStyle();

style2.setRotation((short)-45);

cell[2].setCellStyle(style2);

CellStyle style3=wb.createCellStyle();

style3.setRotation((short)-90);

cell[3].setCellStyle(style3);

e52f2c1d75d6fa5c113885556e11a2bc.gif

34、设置单元格自动换行

Row[] row = new Row[2];

Cell[] cell= new Cell[2];for (int i = 0 ; i < 2 ; i++){

row[i]= wb.getSheet("sheetname10").createRow(i + 1);

cell[i]= row[i].createCell(2);

cell[i].setCellValue("Thank you very much.");

}

CellStyle style0=wb.createCellStyle();

style0.setWrapText(true);

cell[0].setCellStyle(style0);

CellStyle style1=wb.createCellStyle();

style1.setWrapText(false);

cell[1].setCellStyle(style1);

43c08f34a01a126a8d73a5be39af4507.gif

35、设置单元格文字缩进

Row[] row = new Row[4];

Cell[] cell= new Cell[4];for (int i = 0 ; i < 4 ; i++){

row[i]= wb.getSheet("sheetname11").createRow(i + 1);

cell[i]= row[i].createCell(2);

cell[i].setCellValue("Coffee");

}

CellStyle style1=wb.createCellStyle();

style1.setIndention((short)1);

style1.setAlignment(CellStyle.ALIGN_LEFT);

cell[1].setCellStyle(style1);

CellStyle style2=wb.createCellStyle();

style2.setIndention((short)2);

style2.setAlignment(CellStyle.ALIGN_LEFT);

cell[2].setCellStyle(style2);

CellStyle style3=wb.createCellStyle();

style3.setIndention((short)3);

style3.setAlignment(CellStyle.ALIGN_LEFT);

cell[3].setCellStyle(style3);

36、自定义格式

Row[] rows = new Row[2];for (int i = 0; i < rows.length; i++) {

rows[i]= wb.getSheet("sheetname12").createRow(i + 1);

}

DataFormat format=wb.createDataFormat();

CellStyle[] styles= new CellStyle[2];for (int i = 0; i < styles.length; i++) {

styles[i]=wb.createCellStyle();

}

styles[0].setDataFormat(format.getFormat("0.0"));

styles[1].setDataFormat(format.getFormat("#,##0.000"));

Cell[] cells= new Cell[2];for (int i = 0; i < cells.length; i++) {

cells[i]= rows[i].createCell(1);

cells[i].setCellValue(1111.25);

cells[i].setCellStyle(styles[i]);

}

37、设置公式

Row row1 = wb.getSheet("sheetname13").createRow(1);

Row row2= wb.getSheet("sheetname13").createRow(2);

Cell cell1_1= row1.createCell(1);

Cell cell1_2= row1.createCell(2);

Cell cell1_3= row1.createCell(3);

Cell cell2_3= row2.createCell(3);

cell1_1.setCellValue(30);

cell1_2.setCellValue(25);

cell1_3.setCellFormula("B2+C2");

cell2_3.setCellFormula("MOD(B2,C2)");

38、画直线,圆圈(椭圆),正方形(长方形),Textbox

HSSFPatriarch patriarch = ((HSSFSheet)wb.getSheet("sheetname14")).createDrawingPatriarch();//直线

HSSFClientAnchor clientAnchor1 = new HSSFClientAnchor(0, 0, 0, 0,

(short) 4, 2, (short) 6, 5);

HSSFSimpleShape shape1=patriarch.createSimpleShape(clientAnchor1);

shape1.setShapeType(HSSFSimpleShape.OBJECT_TYPE_LINE);//圆圈(椭圆)

HSSFClientAnchor clientAnchor2 = new HSSFClientAnchor(0, 0, 0, 0,

(short) 8, 4, (short) 6, 5);

HSSFSimpleShape shape2=patriarch.createSimpleShape(clientAnchor2);

shape2.setShapeType(HSSFSimpleShape.OBJECT_TYPE_OVAL);//正方形(长方形)

HSSFClientAnchor clientAnchor3 = new HSSFClientAnchor(0, 0, 0, 0,

(short) 12, 6, (short) 6, 5);

HSSFSimpleShape shape3=patriarch.createSimpleShape(clientAnchor3);

shape3.setShapeType(HSSFSimpleShape.OBJECT_TYPE_RECTANGLE);//Textbox

HSSFClientAnchor clientAnchor4 = new HSSFClientAnchor(0, 0, 0, 0,

(short) 14, 8, (short) 6, 5);

HSSFTextbox textbox=patriarch.createTextbox(clientAnchor4);

textbox.setString(new HSSFRichTextString("This is a test"));

39、插入图片

//需要commons-codec-1.6.jar

FileInputStream jpeg = new FileInputStream("resource/test.jpg");byte[] bytes =IOUtils.toByteArray(jpeg);int pictureIndex =wb.addPicture(bytes, HSSFWorkbook.PICTURE_TYPE_JPEG);

jpeg.close();

HSSFCreationHelper helper=(HSSFCreationHelper) wb.getCreationHelper();

HSSFPatriarch patriarch= ((HSSFSheet)wb.getSheet("sheetname15")).createDrawingPatriarch();

HSSFClientAnchor clientAnchor=helper.createClientAnchor();

clientAnchor.setCol1(3);

clientAnchor.setRow1(2);

HSSFPicture picture=patriarch.createPicture(clientAnchor, pictureIndex);

picture.resize();

40、设置可输入List

CellRangeAddressList addressList = newCellRangeAddressList(0,0,0,0);final String[] DATA_LIST = newString[] {"10","20","30",

};

DVConstraint dvConstraint=DVConstraint.createExplicitListConstraint(DATA_LIST);

HSSFDataValidation dataValidation= newHSSFDataValidation(addressList, dvConstraint);

dataValidation.setSuppressDropDownArrow(false);

wb.getSheet("sheetname16").addValidationData(dataValidation);

3d6494d0e1beab5860453ca68e4c6e10.gif

41、设置输入提示信息

CellRangeAddressList addressList = newCellRangeAddressList(0,0,0,0);final String[] DATA_LIST = newString[] {"10","20","30",

};

DVConstraint dvConstraint=DVConstraint.createExplicitListConstraint(DATA_LIST);

HSSFDataValidation dataValidation=

newHSSFDataValidation(addressList, dvConstraint);

dataValidation.setSuppressDropDownArrow(false);

dataValidation.createPromptBox("输入提示", "请从下拉列表中选择!");

dataValidation.setShowPromptBox(true);

wb.getSheet("sheetname17").addValidationData(dataValidation);

原文:http://rensanning.iteye.com/blog/1538591

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值