`

Java之Excel操作 Apache POI

    博客分类:
  • Java
 
阅读更多

转自:http://blog.csdn.net/vacblog/article/details/8237674

 

下载地址:http://poi.apache.org/ 

 

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

 

  • 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 = new HSSFWorkbook();  

添加Worksheet(不添加sheet时生成的xls文件打开时会错):Sheet sheet3 = wb.createSheet("new sheet");

保存为Excel文件: out = new FileOutputStream("c:\\text.xls");   wb.write(out);

打开Workbook:

  方法一:

      in = new FileInputStream(TEST_WORKBOOK_NAME);

      Workbook  wb = WorkbookFactory.create(in);

  方法二:

 

  1. in = new FileInputStream(TEST_WORKBOOK_NAME);  
  2.     POIFSFileSystem fs = new POIFSFileSystem(in);  
  3.     wb = new HSSFWorkbook(fs); 

 

打开加密的Workbook(读加密) 

 

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

 

复制Sheet :wb.cloneSheet(1);

修改Sheet名称:wb.setSheetName(i, "SheetName new"); 

删除Sheet: wb.removeSheetAt(1);  

调整Sheet顺序 :

Java代码  收藏代码
  1. wb.setSheetOrder("SheetName3"1);  
  2. wb.setSheetOrder(wb.getSheetName(4), 0); 

设置当前Sheet:  t.setActiveSheet(); 

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

固定窗口 :wb.getSheet("SheetName4").createFreezePane(22);

 

 

分割窗口

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

 

Sheet缩放 :

 

  1. //扩大(200%)  
  2. wb.getSheet("sheetname1").setZoom(21);  
  3. //缩小(50%)  
  4. wb.getSheet("sheetname2").setZoom(12);  

不显示网格线 

Java代码  收藏代码
  1. //不显示网格线  
  2. wb.getSheet("sheetname8").setDisplayGridlines(false);  


 

23、设置分页 

Java代码  收藏代码
  1. //设置第一页:3行2列 (可以多次设置)  
  2. wb.getSheet("sheetname9").setRowBreak(2);  
  3. 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(1423));  


 

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


 
 

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


 

27、设置单元格边线 

Java代码  收藏代码
  1. wb.getSheet("sheetname2").setColumnWidth(14096);  
  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);  


 

28、设置单元格背景填充 

Java代码  收藏代码
  1. wb.getSheet("sheetname3").setColumnWidth(04096);  
  2. wb.getSheet("sheetname3").setColumnWidth(14096);  
  3. wb.getSheet("sheetname3").setColumnWidth(24096);  
  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);  


 

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(0000,  
  10.         (short42, (short65);  
  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);  



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


 

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:poi@apache.org?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);  



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

Java代码  收藏代码
  1. //横向对齐  
  2. wb.getSheet("sheetname7").setColumnWidth(23072);  
  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);  


 

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


 

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


 

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


 

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. }  


 

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


 

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

Java代码  收藏代码
  1. HSSFPatriarch patriarch = ((HSSFSheet)wb.getSheet("sheetname14")).createDrawingPatriarch();  
  2.   
  3. //直线  
  4. HSSFClientAnchor clientAnchor1 = new HSSFClientAnchor(0000,  
  5.         (short42, (short65);  
  6. HSSFSimpleShape shape1 = patriarch.createSimpleShape(clientAnchor1);  
  7. shape1.setShapeType(HSSFSimpleShape.OBJECT_TYPE_LINE);  
  8.   
  9. //圆圈(椭圆)  
  10. HSSFClientAnchor clientAnchor2 = new HSSFClientAnchor(0000,  
  11.         (short84, (short65);  
  12. HSSFSimpleShape shape2 = patriarch.createSimpleShape(clientAnchor2);  
  13. shape2.setShapeType(HSSFSimpleShape.OBJECT_TYPE_OVAL);  
  14.   
  15. //正方形(长方形)  
  16. HSSFClientAnchor clientAnchor3 = new HSSFClientAnchor(0000,  
  17.         (short126, (short65);  
  18. HSSFSimpleShape shape3 = patriarch.createSimpleShape(clientAnchor3);  
  19. shape3.setShapeType(HSSFSimpleShape.OBJECT_TYPE_RECTANGLE);  
  20.   
  21. //Textbox  
  22. HSSFClientAnchor clientAnchor4 = new HSSFClientAnchor(0000,  
  23.         (short148, (short65);  
  24. HSSFTextbox textbox = patriarch.createTextbox(clientAnchor4);  
  25. 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();  


 

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


 

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


 

分享到:
评论

相关推荐

    java生成Excel库Apache POI3.15

    在"java生成Excel库Apache POI3.15"这个主题中,我们将深入探讨如何利用Apache POI 3.15版本在Java中创建、读取和修改Excel文件。 首先,Apache POI 提供了HSSF(Horizontally Stored SpreadSheet Format)和XSSF...

    java 导出Excel 使用apache POI.jar 包

    Java导出Excel是常见的数据处理任务,...总之,Apache POI是一个强大且灵活的库,能够满足各种Java项目中对Excel文件操作的需求。通过熟练掌握其API,开发者可以轻松地实现Excel的导入和导出功能,提升数据处理的效率。

    Apache POI Excel操作

    总结,Apache POI为Java开发者提供了强大的Excel操作工具,通过理解并熟练掌握其核心概念、API和使用方法,可以轻松地在Java应用中实现Excel文件的读写和处理。在实际项目中,根据需求选择合适的API,配合Maven配置...

    Apache poi 操作 excel 文件压缩包

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

    apache POI文件读写excel

    总结,Apache POI是Java开发中处理Excel文件的强大工具,涵盖了从基本的读写操作到复杂的格式设置和公式计算。通过熟练掌握Apache POI,开发者可以构建灵活且高效的Excel处理程序,满足各种业务需求。

    java excel操作 poi-3.17 可用于jdk1.70

    附件是java poi 3.17的lib库及其依赖库,全部下载引用后,可以进行excel的读写操作,无需引用其他lib库。poi-3.17适用于jdk1.7。 Apache POI是Apache软件基金会的开放源码函式库,POI提供API给Java程序对Microsoft ...

    Apache POI for Android

    在Android开发中,Apache POI 提供了处理Excel文件的能力,使得开发者可以在Android设备上进行Excel的读写操作,无需依赖微软的软件环境。这个库简化了与Excel数据交互的过程,使得在移动应用中处理数据变得更加便捷...

    Java实现Excel读写的poi 5.2.1版本jar

    它将XML文档映射到Java对象,使得POI可以方便地操作Excel文件中的元素。 `poi-ooxml-5.2.1.jar`:此文件包含了处理OOXML文件格式的完整功能,与lite版本相比,它提供了更全面的API和功能。 `poi-scratchpad-5.2.1....

    Apache POI库jar文件

    Apache POI库是一个开源的Java库,可以帮助开发人员处理Microsoft Office格式的文档,例如Word文档、Excel电子表格和PowerPoint演示文稿等。以下是Apache POI库的详细介绍: 支持多种Office格式:Apache POI库支持...

    Apache Poi Excel导出

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

    Apache POI资源包

    Apache POI是一个开源项目,由Apache软件基金会维护,专门用于处理Microsoft Office格式的文件,如Word(.doc/.docx)、Excel(.xls/.xlsx)、PowerPoint(.ppt/.pptx)等。这个资源包是Java开发者在跨平台上读取、...

    java_poi实现excel导入导出

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

    java生成excel文件(poi).rar_POI java_java excel_poi EXCEL模板_poi-3.8-

    Apache POI是一个流行的开源库,它允许开发者使用Java处理Microsoft Office格式的文件,包括Excel(.xlsx和.xls)。在这个“java生成excel文件(poi).rar”压缩包中,我们看到的是一个使用POI库创建Excel文件的示例...

    java Apache poi 对word doc文件进行读写操作

    Apache POI 是一个流行的 Java 库,用于处理 Microsoft Office 格式,如 Word、Excel 和 PowerPoint。在处理 Word .doc 文件时,POI 提供了一个名为 HWPF(Horizontally Written Property Set Files)的模块。这个...

    JAVA操作excel poi

    标题和描述反复提及"JAVA操作excel poi poi.jar",这显然是指使用Apache POI库进行Java操作Excel的过程。标签同样强调了这一主题,表明我们要深入探讨的是如何利用Apache POI处理Excel文件。 Apache POI提供了HSSF...

    java处理Excell Apache POI

    Java处理Excel时,Apache POI是一个非常常用的库,它允许开发者在Java应用程序中创建、修改和显示Microsoft Office格式的文件,尤其是Excel文档。Apache POI项目始于2001年,是一个开源项目,广泛用于数据分析、报表...

    apache-poi-3.17(最新稳定版本)

    Apache POI 是一个开源项目,由Apache软件基金会维护,它主要致力于处理Microsoft Office格式的文件,如Word(.doc和.docx)、Excel(.xls和.xlsx)、PowerPoint(.ppt和.pptx)等。Apache POI 提供了Java API,使得...

    java 通过poi操作excel jar包

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

    Excel操作工具poi3.8

    《使用Apache POI 3.8进行Excel操作的详解》 Apache POI 是一个流行的开源项目,它允许Java开发者创建、修改和显示Microsoft Office格式的文件,尤其是Excel工作簿(.xlsx和.xls)。在给定的标题“Excel操作工具poi...

Global site tag (gtag.js) - Google Analytics