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)。

  • 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格式档案的功能。


http://poi.apache.org/

版本:poi-3.8-20120326.jar

1、生成Workbook

Java代码

  1. //生成Workbook

  2. HSSFWorkbook wb = new HSSFWorkbook();

  3.  

  4. //添加Worksheet(不添加sheet时生成的xls文件打开时会报错)

  5. @SuppressWarnings("unused")

  6. Sheet sheet1 = wb.createSheet();

  7. @SuppressWarnings("unused")

  8. Sheet sheet2 = wb.createSheet();

  9. @SuppressWarnings("unused")

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

  11. @SuppressWarnings("unused")

  12. Sheet sheet4 = wb.createSheet("rensanning");

  13.  

  14. //保存为Excel文件

  15. FileOutputStream out = null;

  16.  

  17. try {

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

  19. wb.write(out);

  20. } catch (IOException e) {

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

  22. } finally {

  23. try {

  24. out.close();

  25. } catch (IOException e) {

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

  27. }

  28. }

//生成Workbook
HSSFWorkbook wb = new HSSFWorkbook();

//添加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)

Java代码

  1. //生成Workbook

  2. XSSFWorkbook wb = new XSSFWorkbook();

  3.  

  4. //......

//生成Workbook
XSSFWorkbook wb = new XSSFWorkbook();

//......



3、打开Workbook

 

Java代码

  1. //方法一:使用WorkbookFactory

  2. FileInputStream in = null;

  3. Workbook wb = null;

  4.  

  5. try {

  6. in = new FileInputStream(TEST_WORKBOOK_NAME);

  7. wb = WorkbookFactory.create(in);

  8. } catch (IOException e) {

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

  10. } catch (InvalidFormatException e) {

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

  12. } finally {

  13. try {

  14. in.close();

  15. } catch (IOException e) {

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

  17. }

  18. }

  19.  

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

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

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

  23. System.out.println();

  24.  

  25. //方法二:使用POIFSFileSystem

  26. try {

  27. in = new FileInputStream(TEST_WORKBOOK_NAME);

  28. POIFSFileSystem fs = new POIFSFileSystem(in);

  29. wb = new HSSFWorkbook(fs);

  30. } catch (IOException e) {

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

  32. } finally {

  33. try {

  34. in.close();

  35. } catch (IOException e) {

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

  37. }

  38. }

  39.  

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

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

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

  43. System.out.println();

//方法一:使用WorkbookFactory
FileInputStream in = null;
Workbook wb = null;

try {
	in = new FileInputStream(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 = new FileInputStream(TEST_WORKBOOK_NAME);
	POIFSFileSystem fs = new POIFSFileSystem(in);
	wb = new HSSFWorkbook(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(读加密)

Java代码

  1. FileInputStream input = new FileInputStream(TEST_WORKBOOK_NAME_ENCRYPTED);

  2. BufferedInputStream binput = new BufferedInputStream(input);

  3. POIFSFileSystem poifs = new POIFSFileSystem(binput);

  4.  

  5. Biff8EncryptionKey.setCurrentUserPassword(TEST_WORKBOOK_PASSWORD);

  6.  

  7. HSSFWorkbook wb = new HSSFWorkbook(poifs);

  8.  

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

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

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

  12. System.out.println();

FileInputStream input = new FileInputStream(TEST_WORKBOOK_NAME_ENCRYPTED);
BufferedInputStream binput = new BufferedInputStream(input);
POIFSFileSystem poifs = new POIFSFileSystem(binput);

Biff8EncryptionKey.setCurrentUserPassword(TEST_WORKBOOK_PASSWORD);

HSSFWorkbook wb = new HSSFWorkbook(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

Java代码

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

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



6、复制Sheet

Java代码

  1. wb.cloneSheet(1);

wb.cloneSheet(1);



7、修改Sheet名称

Java代码

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

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



8、删除Sheet

Java代码

  1. wb.removeSheetAt(1);

wb.removeSheetAt(1);



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

Java代码

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

  2. wb.setFirstVisibleTab(2);

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



10、调整Sheet顺序

Java代码

  1. wb.setSheetOrder("SheetName3", 1);

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

wb.setSheetOrder("SheetName3", 1);
wb.setSheetOrder(wb.getSheetName(4), 0);



11、设置当前Sheet

Java代码

  1. //设置当前Sheet

  2. wb.setActiveSheet(wb.getNumberOfSheets() - 1);

  3. //(Excel的当前Sheet被设置,需要结合setSelected使用,不然下部Sheet名的Tab还是默认为第一个)

  4. //(需要选择多个Sheet的话,每个Sheet调用setSelected(true)即可)

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

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



12、固定窗口

Java代码

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

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




13、分割窗口

 

Java代码

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

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




14、Sheet缩放

 

Java代码

  1. //setZoom(int numerator, int denominator)

  2. //"numerator"÷"denominator" 例如: 3÷1=3 那就是设置为300%

  3.  

  4. //扩大(200%)

  5. wb.getSheet("sheetname1").setZoom(2, 1);

  6. //缩小(50%)

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

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




15、行列分组

 

Java代码

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

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

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

  4.  

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

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

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

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




16、关闭分组

Java代码

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

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

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



17、插入行

Java代码

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

  2. Cell cell1_1 = row1.createCell(1);

  3. cell1_1.setCellValue(123);

  4.  

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

  6. Cell cell4_3 = row4.createCell(3);

  7. cell4_3.setCellValue("中国");

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、删除行

Java代码

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

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

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



19、移动行

Java代码

  1. //******移动行只移动内容,不牵扯行的删除和插入

  2.  

  3. //移动行(把第1行和第2行移到第5行之后)

  4. wb.getSheet("sheetname5").shiftRows(0, 1, 5);

  5.  

  6. //移动行(把第3行和第4行往上移动1行)

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

//******移动行只移动内容,不牵扯行的删除和插入

//移动行(把第1行和第2行移到第5行之后)
wb.getSheet("sheetname5").shiftRows(0, 1, 5);

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



20、修改行高

Java代码

  1. //设置默认行高

  2. wb.getSheet("sheetname6").setDefaultRowHeight((short)100);

  3.  

  4. //设置行高

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

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

//设置行高
wb.getSheet("sheetname6").getRow(2).setHeight((short)(100 * 20));



21、修改列宽

Java代码

  1. //设置默认列宽

  2. wb.getSheet("sheetname7").setDefaultColumnWidth(12);

  3.  

  4. //设置列宽

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

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

//设置列宽
wb.getSheet("sheetname7").setColumnWidth(0, 5 * 256);



22、不显示网格线

 

Java代码

  1. //不显示网格线

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

//不显示网格线
wb.getSheet("sheetname8").setDisplayGridlines(false);




23、设置分页

 

 

Java代码

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

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

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

//设置第一页:3行2列 (可以多次设置)
wb.getSheet("sheetname9").setRowBreak(2);
wb.getSheet("sheetname9").setColumnBreak(1);




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

Java代码

  1. //追加行

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

  3. Row row = wb.getSheet("sheetname10").createRow(i);

  4. for (int j = 0; j < 10; j++) {

  5. //添加单元格

  6. Cell cell = row.createCell(j);

  7. cell.setCellValue(i + 1);

  8. }

  9.  

  10. //删除单元格

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

  12. }

  13.  

  14. //合并单元格

  15. //CellRangeAddress(int firstRow, int lastRow, int firstCol, int lastCol)

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

//追加行
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));




25、设置Header,Footer

Java代码

  1. //Header

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

  3. header.setLeft(HSSFHeader.startUnderline() +

  4. HSSFHeader.font("宋体", "Italic") +

  5. "文字文字" +

  6. HSSFHeader.endUnderline());

  7. header.setCenter(HSSFHeader.fontSize((short)16) +

  8. HSSFHeader.startDoubleUnderline() +

  9. HSSFHeader.startBold() +

  10. "汉字汉字" +

  11. HSSFHeader.endBold() +

  12. HSSFHeader.endDoubleUnderline());

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

  14.  

  15. //Footer

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

  17. footer.setLeft("Copyright @ rensanning");

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

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

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





26、设置单元格值

Java代码

  1. //boolean

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

  3. boolean val00 = true;

  4. cell00.setCellValue(val00);

  5.  

  6. //Calendar 格式化

  7. CellStyle styleCalendar = wb.createCellStyle();

  8. DataFormat formatCalendar = wb.createDataFormat();

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

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

  11. Calendar val11 = Calendar.getInstance();

  12. cell11.setCellStyle(styleCalendar);

  13. cell11.setCellValue(val11);

  14.  

  15. //Date 格式化

  16. CellStyle styleDate = wb.createCellStyle();

  17. DataFormat formatDate = wb.createDataFormat();

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

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

  20. Date val21 = new Date();

  21. cell21.setCellStyle(styleDate);

  22. cell21.setCellValue(val21);

  23.  

  24. //double

  25. Cell cell30 = rows[3].createCell(0);

  26. double val30 = 1234.56;

  27. cell30.setCellValue(val30);

  28.  

  29. //double 格式化

  30. CellStyle styleDouble = wb.createCellStyle();

  31. DataFormat formatDouble = wb.createDataFormat();

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

  33. Cell cell31 = rows[3].createCell(1);

  34. double val31 = 1234.56;

  35. cell31.setCellStyle(styleDouble);

  36. cell31.setCellValue(val31);

  37.  

  38. //String

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

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

  41. cell40.setCellValue(val40);

//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 = new Date();
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、设置单元格边线

 

Java代码

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

  2.  

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

  4. row1.setHeightInPoints(70);

  5.  

  6. Cell cell1_1 = row1.createCell(1);

  7. cell1_1.setCellValue("Sample");

  8.  

  9. CellStyle style = wb.createCellStyle();

  10.  

  11. style.setBorderTop(CellStyle.BORDER_DASHED);

  12. style.setBorderBottom(CellStyle.BORDER_DOUBLE);

  13. style.setBorderLeft(CellStyle.BORDER_MEDIUM_DASH_DOT);

  14. style.setBorderRight(CellStyle.BORDER_MEDIUM);

  15.  

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

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

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

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

  20.  

  21. cell1_1.setCellStyle(style);

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




28、设置单元格背景填充

Java代码

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

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

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

  4.  

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

  6. row1.setHeightInPoints(70);

  7.  

  8. Cell cell1_0 = row1.createCell(0);

  9. Cell cell1_1 = row1.createCell(1);

  10. Cell cell1_2 = row1.createCell(2);

  11.  

  12. cell1_0.setCellValue("THIN_VERT_BANDS");

  13. cell1_1.setCellValue("BIG_SPOTS");

  14. cell1_2.setCellValue("THICK_HORZ_BANDS");

  15.  

  16. CellStyle style1 = wb.createCellStyle();

  17. style1.setFillPattern(CellStyle.THIN_VERT_BANDS);

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

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

  20.  

  21. CellStyle style2 = wb.createCellStyle();

  22. style2.setFillPattern(CellStyle.BIG_SPOTS);

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

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

  25.  

  26. CellStyle style3 = wb.createCellStyle();

  27. style3.setFillPattern(CellStyle.THICK_HORZ_BANDS);

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

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

  30.  

  31. cell1_0.setCellStyle(style1);

  32. cell1_1.setCellStyle(style2);

  33. cell1_2.setCellStyle(style3);

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、设置单元格注释

 

Java代码

  1. HSSFCreationHelper createHelper =

  2. (HSSFCreationHelper)wb.getCreationHelper();

  3. Drawing patriarch = wb.getSheet("sheetname4").createDrawingPatriarch();

  4.  

  5. //注释

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

  7. Cell cell = row.createCell(1);

  8.  

  9. HSSFClientAnchor clientAnchor = new HSSFClientAnchor(0, 0, 0, 0,

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

  11.  

  12. Comment comment = patriarch.createCellComment(clientAnchor);

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

  14. comment.setAuthor("rensanning");

  15.  

  16. cell.setCellComment(comment);

  17.  

  18. //带字体的注释

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

  20. Cell cell2 = row2.createCell(1);

  21.  

  22. Font font = wb.createFont();

  23. font.setFontName("宋体");

  24. font.setFontHeightInPoints((short)10);

  25. font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);

  26. font.setColor(HSSFColor.RED.index);

  27.  

  28. Comment comment2 = patriarch.createCellComment(clientAnchor);

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

  30. text.applyFont(font);

  31. comment2.setString(text);

  32. comment2.setAuthor("rensanning");

  33.  

  34. cell2.setCellComment(comment2);

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、设置单元格字体(斜体,粗体,下线,取消线,字体,大小,背景色)

 

Java代码

  1. Font font = null;

  2. CellStyle style = null;

  3.  

  4. //斜体

  5. font = wb.createFont();

  6. font.setItalic(true);

  7. style = wb.createCellStyle();

  8. style.setFont(font);

  9.  

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

  11.  

  12. //粗体

  13. font = wb.createFont();

  14. font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);

  15. style = wb.createCellStyle();

  16. style.setFont(font);

  17.  

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

  19.  

  20. //字体名

  21. font = wb.createFont();

  22. font.setFontName("Courier New");

  23. style = wb.createCellStyle();

  24. style.setFont(font);

  25.  

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

  27.  

  28. //字体大小

  29. font = wb.createFont();

  30. font.setFontHeightInPoints((short)20);

  31. style = wb.createCellStyle();

  32. style.setFont(font);

  33.  

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

  35.  

  36. //文字颜色

  37. font = wb.createFont();

  38. font.setColor(HSSFColor.YELLOW.index);

  39. style = wb.createCellStyle();

  40. style.setFont(font);

  41.  

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

  43.  

  44. //上标

  45. font = wb.createFont();

  46. font.setTypeOffset(HSSFFont.SS_SUPER);

  47. style = wb.createCellStyle();

  48. style.setFont(font);

  49.  

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

  51.  

  52. //下标

  53. font = wb.createFont();

  54. font.setTypeOffset(HSSFFont.SS_SUB);

  55. style = wb.createCellStyle();

  56. style.setFont(font);

  57.  

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

  59.  

  60. //删除线

  61. font = wb.createFont();

  62. font.setStrikeout(true);

  63. style = wb.createCellStyle();

  64. style.setFont(font);

  65.  

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

  67.  

  68. //下划线

  69. font = wb.createFont();

  70. font.setUnderline(HSSFFont.U_SINGLE);

  71. style = wb.createCellStyle();

  72. style.setFont(font);

  73.  

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

  75.  

  76. //背景色

  77. style = wb.createCellStyle();

  78. style.setFillForegroundColor(HSSFColor.SEA_GREEN.index);

  79. style.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);

  80.  

  81. style.setFont(font);

  82.  

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

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、设置超链接

 

Java代码

  1. HSSFCreationHelper createHelper =

  2. (HSSFCreationHelper)wb.getCreationHelper();

  3.  

  4. CellStyle style = wb.createCellStyle();

  5. Font font = wb.createFont();

  6. font.setUnderline(HSSFFont.U_SINGLE);

  7. font.setColor(HSSFColor.BLUE.index);

  8. style.setFont(font);

  9.  

  10. //追加行

  11. Row[] rows = new Row[10];

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

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

  14. }

  15.  

  16. //URL

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

  18.  

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

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

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

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

  23.  

  24. //Mail

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

  26.  

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

  28. link2.setAddress("mailto:[email protected]?subject=Hyperlinks");

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

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

  31.  

  32. //File

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

  34.  

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

  36. link3.setAddress("link.xls");

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

  38. rows[2].getCell(0).setCellStyle(style);

  39.  

  40. //Workbook内

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

  42.  

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

  44. link4.setAddress("sheetname1!A1");

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

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

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:[email protected]?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、设置单元格横向对齐,纵向对齐

 

Java代码

  1. //横向对齐

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

  3.  

  4. Row[] row = new Row[7];

  5. Cell[] cell = new Cell[7];

  6.  

  7. for (int i = 0 ; i < 7 ; i++){

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

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

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

  11. }

  12.  

  13. CellStyle style0 = wb.createCellStyle();

  14. style0.setAlignment(CellStyle.ALIGN_GENERAL);

  15. cell[0].setCellStyle(style0);

  16.  

  17. CellStyle style1 = wb.createCellStyle();

  18. style1.setAlignment(CellStyle.ALIGN_LEFT);

  19. cell[1].setCellStyle(style1);

  20.  

  21. CellStyle style2 = wb.createCellStyle();

  22. style2.setAlignment(CellStyle.ALIGN_CENTER);

  23. cell[2].setCellStyle(style2);

  24.  

  25. CellStyle style3 = wb.createCellStyle();

  26. style3.setAlignment(CellStyle.ALIGN_RIGHT);

  27. cell[3].setCellStyle(style3);

  28.  

  29. CellStyle style4 = wb.createCellStyle();

  30. style4.setAlignment(CellStyle.ALIGN_FILL);

  31. cell[4].setCellStyle(style4);

  32.  

  33. CellStyle style5 = wb.createCellStyle();

  34. style5.setAlignment(CellStyle.ALIGN_JUSTIFY);

  35. cell[5].setCellStyle(style5);

  36.  

  37. CellStyle style6 = wb.createCellStyle();

  38. style6.setAlignment(CellStyle.ALIGN_CENTER_SELECTION);

  39. cell[6].setCellStyle(style6);

  40.  

  41. //纵向对齐

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

  43. row2.setHeightInPoints(70);

  44. Cell[] cell2 = new Cell[4];

  45.  

  46. for (int i = 0 ; i < 4 ; i++){

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

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

  49. }

  50.  

  51. CellStyle style02 = wb.createCellStyle();

  52. style02.setVerticalAlignment(CellStyle.VERTICAL_TOP);

  53. cell2[0].setCellStyle(style02);

  54.  

  55. CellStyle style12 = wb.createCellStyle();

  56. style12.setVerticalAlignment(CellStyle.VERTICAL_CENTER);

  57. cell2[1].setCellStyle(style12);

  58.  

  59. CellStyle style22 = wb.createCellStyle();

  60. style22.setVerticalAlignment(CellStyle.VERTICAL_BOTTOM);

  61. cell2[2].setCellStyle(style22);

  62.  

  63. CellStyle style32 = wb.createCellStyle();

  64. style32.setVerticalAlignment(CellStyle.VERTICAL_JUSTIFY);

  65. cell2[3].setCellStyle(style32);

//横向对齐
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、设置单元格旋转角度

 

Java代码

  1. Row[] row = new Row[4];

  2. Cell[] cell = new Cell[4];

  3.  

  4. for (int i = 0 ; i < 4 ; i++){

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

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

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

  8. }

  9.  

  10. CellStyle style0 = wb.createCellStyle();

  11. style0.setRotation((short)45);

  12. cell[0].setCellStyle(style0);

  13.  

  14. CellStyle style1 = wb.createCellStyle();

  15. style1.setRotation((short)0);

  16. cell[1].setCellStyle(style1);

  17.  

  18. CellStyle style2 = wb.createCellStyle();

  19. style2.setRotation((short)-45);

  20. cell[2].setCellStyle(style2);

  21.  

  22. CellStyle style3 = wb.createCellStyle();

  23. style3.setRotation((short)-90);

  24. cell[3].setCellStyle(style3);

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




34、设置单元格自动折行

 

Java代码

  1. Row[] row = new Row[2];

  2. Cell[] cell = new Cell[2];

  3.  

  4. for (int i = 0 ; i < 2 ; i++){

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

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

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

  8. }

  9.  

  10. CellStyle style0 = wb.createCellStyle();

  11. style0.setWrapText(true);

  12. cell[0].setCellStyle(style0);

  13.  

  14. CellStyle style1 = wb.createCellStyle();

  15. style1.setWrapText(false);

  16. cell[1].setCellStyle(style1);

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




35、设置单元格文字缩进

Java代码

  1. Row[] row = new Row[4];

  2. Cell[] cell = new Cell[4];

  3.  

  4. for (int i = 0 ; i < 4 ; i++){

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

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

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

  8. }

  9.  

  10. CellStyle style1 = wb.createCellStyle();

  11. style1.setIndention((short)1);

  12. style1.setAlignment(CellStyle.ALIGN_LEFT);

  13. cell[1].setCellStyle(style1);

  14.  

  15. CellStyle style2 = wb.createCellStyle();

  16. style2.setIndention((short)2);

  17. style2.setAlignment(CellStyle.ALIGN_LEFT);

  18. cell[2].setCellStyle(style2);

  19.  

  20. CellStyle style3 = wb.createCellStyle();

  21. style3.setIndention((short)3);

  22. style3.setAlignment(CellStyle.ALIGN_LEFT);

  23. cell[3].setCellStyle(style3);

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、自定义格式

Java代码

  1. Row[] rows = new Row[2];

  2. for (int i = 0; i < rows.length; i++) {

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

  4. }

  5. DataFormat format = wb.createDataFormat();

  6.  

  7. CellStyle[] styles = new CellStyle[2];

  8. for (int i = 0; i < styles.length; i++) {

  9. styles[i] = wb.createCellStyle();

  10. }

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

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

  13.  

  14. Cell[] cells = new Cell[2];

  15. for (int i = 0; i < cells.length; i++) {

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

  17. cells[i].setCellValue(1111.25);

  18.  

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

  20. }

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、设置公式

Java代码

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

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

  3.  

  4. Cell cell1_1 = row1.createCell(1);

  5. Cell cell1_2 = row1.createCell(2);

  6. Cell cell1_3 = row1.createCell(3);

  7. Cell cell2_3 = row2.createCell(3);

  8.  

  9. cell1_1.setCellValue(30);

  10. cell1_2.setCellValue(25);

  11. cell1_3.setCellFormula("B2+C2");

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

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

Java代码

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

  2.  

  3. //直线

  4. HSSFClientAnchor clientAnchor1 = new HSSFClientAnchor(0, 0, 0, 0,

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

  6. HSSFSimpleShape shape1 = patriarch.createSimpleShape(clientAnchor1);

  7. shape1.setShapeType(HSSFSimpleShape.OBJECT_TYPE_LINE);

  8.  

  9. //圆圈(椭圆)

  10. HSSFClientAnchor clientAnchor2 = new HSSFClientAnchor(0, 0, 0, 0,

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

  12. HSSFSimpleShape shape2 = patriarch.createSimpleShape(clientAnchor2);

  13. shape2.setShapeType(HSSFSimpleShape.OBJECT_TYPE_OVAL);

  14.  

  15. //正方形(长方形)

  16. HSSFClientAnchor clientAnchor3 = new HSSFClientAnchor(0, 0, 0, 0,

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

  18. HSSFSimpleShape shape3 = patriarch.createSimpleShape(clientAnchor3);

  19. shape3.setShapeType(HSSFSimpleShape.OBJECT_TYPE_RECTANGLE);

  20.  

  21. //Textbox

  22. HSSFClientAnchor clientAnchor4 = new HSSFClientAnchor(0, 0, 0, 0,

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

  24. HSSFTextbox textbox = patriarch.createTextbox(clientAnchor4);

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

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、插入图片

Java代码

  1. //需要commons-codec-1.6.jar

  2. FileInputStream jpeg = new FileInputStream("resource/test.jpg");

  3. byte[] bytes = IOUtils.toByteArray(jpeg);

  4. int pictureIndex = wb.addPicture(bytes, HSSFWorkbook.PICTURE_TYPE_JPEG);

  5. jpeg.close();

  6.  

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

  8.  

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

  10.  

  11. HSSFClientAnchor clientAnchor = helper.createClientAnchor();

  12.  

  13. clientAnchor.setCol1(3);

  14. clientAnchor.setRow1(2);

  15.  

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

  17. picture.resize();

//需要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

Java代码

  1. CellRangeAddressList addressList = new CellRangeAddressList(

  2. 0,

  3. 0,

  4. 0,

  5. 0);

  6.  

  7. final String[] DATA_LIST = new String[] {

  8. "10",

  9. "20",

  10. "30",

  11. };

  12. DVConstraint dvConstraint =

  13. DVConstraint.createExplicitListConstraint(DATA_LIST);

  14.  

  15. HSSFDataValidation dataValidation = new HSSFDataValidation(addressList, dvConstraint);

  16. dataValidation.setSuppressDropDownArrow(false);

  17.  

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

CellRangeAddressList addressList = new CellRangeAddressList(
        0,
        0,
        0,
        0);

final String[] DATA_LIST = new String[] {
        "10",
        "20",
        "30",
};
DVConstraint dvConstraint =
    DVConstraint.createExplicitListConstraint(DATA_LIST);

HSSFDataValidation dataValidation = new HSSFDataValidation(addressList, dvConstraint);
dataValidation.setSuppressDropDownArrow(false);

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




41、设置输入提示信息

Java代码

  1. CellRangeAddressList addressList = new CellRangeAddressList(

  2. 0,

  3. 0,

  4. 0,

  5. 0);

  6.  

  7. final String[] DATA_LIST = new String[] {

  8. "10",

  9. "20",

  10. "30",

  11. };

  12. DVConstraint dvConstraint = DVConstraint.createExplicitListConstraint(DATA_LIST);

  13.  

  14. HSSFDataValidation dataValidation =

  15. new HSSFDataValidation(addressList, dvConstraint);

  16. dataValidation.setSuppressDropDownArrow(false);

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

  18. dataValidation.setShowPromptBox(true);

  19.  

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

CellRangeAddressList addressList = new CellRangeAddressList(
        0,
        0,
        0,
        0);

final String[] DATA_LIST = new String[] {
        "10",
        "20",
        "30",
};
DVConstraint dvConstraint = DVConstraint.createExplicitListConstraint(DATA_LIST);

HSSFDataValidation dataValidation =
    new HSSFDataValidation(addressList, dvConstraint);
dataValidation.setSuppressDropDownArrow(false);
dataValidation.createPromptBox("输入提示", "请从下拉列表中选择!");
dataValidation.setShowPromptBox(true);

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