zoukankan      html  css  js  c++  java
  • 用POI的HSSF来控制EXCEL的研究

    1.创建工作簿 (WORKBOOK) 

    1     HSSFWorkbook wb = new HSSFWorkbook();
    2 FileOutputStream fileOut = new FileOutputStream("workbook.xls");
    3 wb.write(fileOut);
    4 fileOut.close();


    2.创建工作表(SHEET)

    1     HSSFWorkbook wb = new HSSFWorkbook();
    2 HSSFSheet sheet1 = wb.createSheet("new sheet");
    3 HSSFSheet sheet2 = wb.createSheet("second sheet");
    4 FileOutputStream fileOut = new FileOutputStream("workbook.xls");
    5 wb.write(fileOut);
    6 fileOut.close();

    3.创建单元格(CELL) 

     1     HSSFWorkbook wb = new HSSFWorkbook();
    2 HSSFSheet sheet = wb.createSheet("new sheet");
    3 // Create a row and put some cells in it. Rows are 0 based.
    4 HSSFRow row = sheet.createRow((short)0);
    5 // Create a cell and put a value in it.
    6 HSSFCell cell = row.createCell((short)0);
    7 cell.setCellValue(1);
    8 // Or do it on one line.
    9 row.createCell((short)1).setCellValue(1.2);
    10 row.createCell((short)2).setCellValue("This is a string");
    11 row.createCell((short)3).setCellValue(true);
    12 // Write the output to a file
    13 FileOutputStream fileOut = new FileOutputStream("workbook.xls");
    14 wb.write(fileOut);
    15 fileOut.close();

    4.创建指定单元格式的单元格 

     1     HSSFWorkbook wb = new HSSFWorkbook();
    2 HSSFSheet sheet = wb.createSheet("new sheet");
    3 // Create a row and put some cells in it. Rows are 0 based.
    4 HSSFRow row = sheet.createRow((short)0);
    5 // Create a cell and put a date value in it. The first cell is not styled
    6 // as a date.
    7 HSSFCell cell = row.createCell((short)0);
    8 cell.setCellValue(new Date());
    9 // we style the second cell as a date (and time). It is important to
    10 // create a new cell style from the workbook otherwise you can end up
    11 // modifying the built in style and effecting not only this cell but other cells.
    12 HSSFCellStyle cellStyle = wb.createCellStyle();
    13 cellStyle.setDataFormat(HSSFDataFormat.getBuiltinFormat("m/d/yy h:mm"));
    14 cell = row.createCell((short)1);
    15 cell.setCellValue(new Date());
    16 cell.setCellStyle(cellStyle);
    17 // Write the output to a file
    18 FileOutputStream fileOut = new FileOutputStream("workbook.xls");
    19 wb.write(fileOut);
    20 fileOut.close();

    5. 单元格的不同格式 

     1     HSSFWorkbook wb = new HSSFWorkbook();
    2 HSSFSheet sheet = wb.createSheet("new sheet");
    3 HSSFRow row = sheet.createRow((short)2);
    4 row.createCell((short) 0).setCellValue(1.1);
    5 row.createCell((short) 1).setCellValue(new Date());
    6 row.createCell((short) 2).setCellValue("a string");
    7 row.createCell((short) 3).setCellValue(true);
    8 row.createCell((short) 4).setCellType(HSSFCell.CELL_TYPE_ERROR);
    9 // Write the output to a file
    10 FileOutputStream fileOut = new FileOutputStream("workbook.xls");
    11 wb.write(fileOut);
    12 fileOut.close();

    6.单元格的不通对齐方式 

     1     public static void main(String[] args)
    2 throws IOException
    3 {
    4 HSSFWorkbook wb = new HSSFWorkbook();
    5 HSSFSheet sheet = wb.createSheet("new sheet");
    6 HSSFRow row = sheet.createRow((short) 2);
    7 createCell(wb, row, (short) 0, HSSFCellStyle.ALIGN_CENTER);
    8 createCell(wb, row, (short) 1, HSSFCellStyle.ALIGN_CENTER_SELECTION);
    9 createCell(wb, row, (short) 2, HSSFCellStyle.ALIGN_FILL);
    10 createCell(wb, row, (short) 3, HSSFCellStyle.ALIGN_GENERAL);
    11 createCell(wb, row, (short) 4, HSSFCellStyle.ALIGN_JUSTIFY);
    12 createCell(wb, row, (short) 5, HSSFCellStyle.ALIGN_LEFT);
    13 createCell(wb, row, (short) 6, HSSFCellStyle.ALIGN_RIGHT);
    14 // Write the output to a file
    15 FileOutputStream fileOut = new FileOutputStream("workbook.xls");
    16 wb.write(fileOut);
    17 fileOut.close();
    18 }
    19 /**
    20 * Creates a cell and aligns it a certain way.
    21 *
    22 * @param wb the workbook
    23 * @param row the row to create the cell in
    24 * @param column the column number to create the cell in
    25 * @param align the alignment for the cell.
    26 */
    27 private static void createCell(HSSFWorkbook wb, HSSFRow row, short column, short align)
    28 {
    29 HSSFCell cell = row.createCell(column);
    30 cell.setCellValue("Align It");
    31 HSSFCellStyle cellStyle = wb.createCellStyle();
    32 cellStyle.setAlignment(align);
    33 cell.setCellStyle(cellStyle);
    34 }

    7.单元格的边框设置 

     1 Working with borders
    2 HSSFWorkbook wb = new HSSFWorkbook();
    3 HSSFSheet sheet = wb.createSheet("new sheet");
    4 // Create a row and put some cells in it. Rows are 0 based.
    5 HSSFRow row = sheet.createRow((short) 1);
    6 // Create a cell and put a value in it.
    7 HSSFCell cell = row.createCell((short) 1);
    8 cell.setCellValue(4);
    9 // Style the cell with borders all around.
    10 HSSFCellStyle style = wb.createCellStyle();
    11 style.setBorderBottom(HSSFCellStyle.BORDER_THIN);
    12 style.setBottomBorderColor(HSSFColor.BLACK.index);
    13 style.setBorderLeft(HSSFCellStyle.BORDER_THIN);
    14 style.setLeftBorderColor(HSSFColor.GREEN.index);
    15 style.setBorderRight(HSSFCellStyle.BORDER_THIN);
    16 style.setRightBorderColor(HSSFColor.BLUE.index);
    17 style.setBorderTop(HSSFCellStyle.BORDER_MEDIUM_DASHED);
    18 style.setTopBorderColor(HSSFColor.BLACK.index);
    19 cell.setCellStyle(style);
    20 // Write the output to a file
    21 FileOutputStream fileOut = new FileOutputStream("workbook.xls");
    22 wb.write(fileOut);
    23 fileOut.close();

    8.填充和颜色设置 

     1     HSSFWorkbook wb = new HSSFWorkbook();
    2 HSSFSheet sheet = wb.createSheet("new sheet");
    3 // Create a row and put some cells in it. Rows are 0 based.
    4 HSSFRow row = sheet.createRow((short) 1);
    5 // Aqua background
    6 HSSFCellStyle style = wb.createCellStyle();
    7 style.setFillBackgroundColor(HSSFColor.AQUA.index);
    8 style.setFillPattern(HSSFCellStyle.BIG_SPOTS);
    9 HSSFCell cell = row.createCell((short) 1);
    10 cell.setCellValue("X");
    11 cell.setCellStyle(style);
    12 // Orange "foreground", foreground being the fill foreground not the font color.
    13 style = wb.createCellStyle();
    14 style.setFillForegroundColor(HSSFColor.ORANGE.index);
    15 style.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);
    16 cell = row.createCell((short) 2);
    17 cell.setCellValue("X");
    18 cell.setCellStyle(style);
    19 // Write the output to a file
    20 FileOutputStream fileOut = new FileOutputStream("workbook.xls");
    21 wb.write(fileOut);
    22 fileOut.close();

    9.合并单元格操作 

     1     HSSFWorkbook wb = new HSSFWorkbook();
    2 HSSFSheet sheet = wb.createSheet("new sheet");
    3 HSSFRow row = sheet.createRow((short) 1);
    4 HSSFCell cell = row.createCell((short) 1);
    5 cell.setCellValue("This is a test of merging");
    6 sheet.addMergedRegion(new Region(1,(short)1,1,(short)2));
    7 // Write the output to a file
    8 FileOutputStream fileOut = new FileOutputStream("workbook.xls");
    9 wb.write(fileOut);
    10 fileOut.close();

    10.字体设置

     1     HSSFWorkbook wb = new HSSFWorkbook();
    2 HSSFSheet sheet = wb.createSheet("new sheet");
    3 // Create a row and put some cells in it. Rows are 0 based.
    4 HSSFRow row = sheet.createRow((short) 1);
    5 // Create a new font and alter it.
    6 HSSFFont font = wb.createFont();
    7 font.setFontHeightInPoints((short)24);
    8 font.setFontName("Courier New");
    9 font.setItalic(true);
    10 font.setStrikeout(true);
    11 // Fonts are set into a style so create a new one to use.
    12 HSSFCellStyle style = wb.createCellStyle();
    13 style.setFont(font);
    14 // Create a cell and put a value in it.
    15 HSSFCell cell = row.createCell((short) 1);
    16 cell.setCellValue("This is a test of fonts");
    17 cell.setCellStyle(style);
    18 // Write the output to a file
    19 FileOutputStream fileOut = new FileOutputStream("workbook.xls");
    20 wb.write(fileOut);
    21 fileOut.close();

    11.自定义颜色 

     1     HSSFWorkbook wb = new HSSFWorkbook();
    2 HSSFSheet sheet = wb.createSheet();
    3 HSSFRow row = sheet.createRow((short) 0);
    4 HSSFCell cell = row.createCell((short) 0);
    5 cell.setCellValue("Default Palette");
    6 //apply some colors from the standard palette,
    7 // as in the previous examples.
    8 //we'll use red text on a lime background
    9 HSSFCellStyle style = wb.createCellStyle();
    10 style.setFillForegroundColor(HSSFColor.LIME.index);
    11 style.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);
    12 HSSFFont font = wb.createFont();
    13 font.setColor(HSSFColor.RED.index);
    14 style.setFont(font);
    15 cell.setCellStyle(style);
    16 //save with the default palette
    17 FileOutputStream out = new FileOutputStream("default_palette.xls");
    18 wb.write(out);
    19 out.close();
    20 //now, let's replace RED and LIME in the palette
    21 // with a more attractive combination
    22 // (lovingly borrowed from freebsd.org)
    23 cell.setCellValue("Modified Palette");
    24 //creating a custom palette for the workbook
    25 HSSFPalette palette = wb.getCustomPalette();
    26 //replacing the standard red with freebsd.org red
    27 palette.setColorAtIndex(HSSFColor.RED.index,
    28 (byte) 153, //RGB red (0-255)
    29 (byte) 0, //RGB green
    30 (byte) 0 //RGB blue
    31 );
    32 //replacing lime with freebsd.org gold
    33 palette.setColorAtIndex(HSSFColor.LIME.index, (byte) 255, (byte) 204, (byte) 102);
    34 //save with the modified palette
    35 // note that wherever we have previously used RED or LIME, the
    36 // new colors magically appear
    37 out = new FileOutputStream("modified_palette.xls");
    38 wb.write(out);
    39 out.close();

    12.读和重写EXCEL文件 

     1     POIFSFileSystem fs      =
    2 new POIFSFileSystem(new FileInputStream("workbook.xls"));
    3 HSSFWorkbook wb = new HSSFWorkbook(fs);
    4 HSSFSheet sheet = wb.getSheetAt(0);
    5 HSSFRow row = sheet.getRow(2);
    6 HSSFCell cell = row.getCell((short)3);
    7 if (cell == null)
    8 cell = row.createCell((short)3);
    9 cell.setCellType(HSSFCell.CELL_TYPE_STRING);
    10 cell.setCellValue("a test");
    11 // Write the output to a file
    12 FileOutputStream fileOut = new FileOutputStream("workbook.xls");
    13 wb.write(fileOut);
    14 fileOut.close();

    13.在EXCEL单元格中使用自动换行 

     1     HSSFWorkbook wb = new HSSFWorkbook();
    2 HSSFSheet s = wb.createSheet();
    3 HSSFRow r = null;
    4 HSSFCell c = null;
    5 HSSFCellStyle cs = wb.createCellStyle();
    6 HSSFFont f = wb.createFont();
    7 HSSFFont f2 = wb.createFont();
    8 cs = wb.createCellStyle();
    9 cs.setFont( f2 );
    10 //Word Wrap MUST be turned on
    11 cs.setWrapText( true );
    12 r = s.createRow( (short) 2 );
    13 r.setHeight( (short) 0x349 );
    14 c = r.createCell( (short) 2 );
    15 c.setCellType( HSSFCell.CELL_TYPE_STRING );
    16 c.setCellValue( "Use \n with word wrap on to create a new line" );
    17 c.setCellStyle( cs );
    18 s.setColumnWidth( (short) 2, (short) ( ( 50 * 8 ) / ( (double) 1 / 20 ) ) );
    19 FileOutputStream fileOut = new FileOutputStream( "workbook.xls" );
    20 wb.write( fileOut );
    21 fileOut.close();

    14.数字格式自定义 

     1     HSSFWorkbook wb = new HSSFWorkbook();
    2 HSSFSheet sheet = wb.createSheet("format sheet");
    3 HSSFCellStyle style;
    4 HSSFDataFormat format = wb.createDataFormat();
    5 HSSFRow row;
    6 HSSFCell cell;
    7 short rowNum = 0;
    8 short colNum = 0;
    9 row = sheet.createRow(rowNum++);
    10 cell = row.createCell(colNum);
    11 cell.setCellValue(11111.25);
    12 style = wb.createCellStyle();
    13 style.setDataFormat(format.getFormat("0.0"));
    14 cell.setCellStyle(style);
    15 row = sheet.createRow(rowNum++);
    16 cell = row.createCell(colNum);
    17 cell.setCellValue(11111.25);
    18 style = wb.createCellStyle();
    19 style.setDataFormat(format.getFormat("#,##0.0000"));
    20 cell.setCellStyle(style);
    21 FileOutputStream fileOut = new FileOutputStream("workbook.xls");
    22 wb.write(fileOut);
    23 fileOut.close();

    15.调整工作单位置 

     1     HSSFWorkbook wb = new HSSFWorkbook();
    2 HSSFSheet sheet = wb.createSheet("format sheet");
    3 HSSFPrintSetup ps = sheet.getPrintSetup();
    4 sheet.setAutobreaks(true);
    5 ps.setFitHeight((short)1);
    6 ps.setFitWidth((short)1);
    7 // Create various cells and rows for spreadsheet.
    8 FileOutputStream fileOut = new FileOutputStream("workbook.xls");
    9 wb.write(fileOut);
    10 fileOut.close();

    16.设置打印区域 

     1     HSSFWorkbook wb = new HSSFWorkbook();
    2 HSSFSheet sheet = wb.createSheet("Sheet1");
    3 wb.setPrintArea(0, "$A$1:$C$2");
    4 //sets the print area for the first sheet
    5 //Alternatively:
    6 //wb.setPrintArea(0, 0, 1, 0, 0) is equivalent to using the name reference (See the JavaDocs for more details)
    7 // Create various cells and rows for spreadsheet.
    8 FileOutputStream fileOut = new FileOutputStream("workbook.xls");
    9 wb.write(fileOut);
    10 fileOut.close();

    17.标注脚注 

    1     HSSFWorkbook wb = new HSSFWorkbook();
    2 HSSFSheet sheet = wb.createSheet("format sheet");
    3 HSSFFooter footer = sheet.getFooter()
    4 footer.setRight( "Page " + HSSFFooter.page() + " of " + HSSFFooter.numPages() );
    5
    6 // Create various cells and rows for spreadsheet.
    7 FileOutputStream fileOut = new FileOutputStream("workbook.xls");
    8 wb.write(fileOut);
    9 fileOut.close();

    18.使用方便的内部提供的函数 

     1     HSSFWorkbook wb = new HSSFWorkbook();
    2 HSSFSheet sheet1 = wb.createSheet( "new sheet" );
    3 // Create a merged region
    4 HSSFRow row = sheet1.createRow( (short) 1 );
    5 HSSFRow row2 = sheet1.createRow( (short) 2 );
    6 HSSFCell cell = row.createCell( (short) 1 );
    7 cell.setCellValue( "This is a test of merging" );
    8 Region region = new Region( 1, (short) 1, 4, (short) 4 );
    9 sheet1.addMergedRegion( region );
    10 // Set the border and border colors.
    11 final short borderMediumDashed = HSSFCellStyle.BORDER_MEDIUM_DASHED;
    12 HSSFRegionUtil.setBorderBottom( borderMediumDashed,
    13 region, sheet1, wb );
    14 HSSFRegionUtil.setBorderTop( borderMediumDashed,
    15 region, sheet1, wb );
    16 HSSFRegionUtil.setBorderLeft( borderMediumDashed,
    17 region, sheet1, wb );
    18 HSSFRegionUtil.setBorderRight( borderMediumDashed,
    19 region, sheet1, wb );
    20 HSSFRegionUtil.setBottomBorderColor(HSSFColor.AQUA.index, region, sheet1, wb);
    21 HSSFRegionUtil.setTopBorderColor(HSSFColor.AQUA.index, region, sheet1, wb);
    22 HSSFRegionUtil.setLeftBorderColor(HSSFColor.AQUA.index, region, sheet1, wb);
    23 HSSFRegionUtil.setRightBorderColor(HSSFColor.AQUA.index, region, sheet1, wb);
    24 // Shows some usages of HSSFCellUtil
    25 HSSFCellStyle style = wb.createCellStyle();
    26 style.setIndention((short)4);
    27 HSSFCellUtil.createCell(row, 8, "This is the value of the cell", style);
    28 HSSFCell cell2 = HSSFCellUtil.createCell( row2, 8, "This is the value of the cell");
    29 HSSFCellUtil.setAlignment(cell2, wb, HSSFCellStyle.ALIGN_CENTER);
    30 // Write out the workbook
    31 FileOutputStream fileOut = new FileOutputStream( "workbook.xls" );
    32 wb.write( fileOut );
    33 fileOut.close();

    19.在工作单中移动行,调整行的上下位置 

    1     HSSFWorkbook wb = new HSSFWorkbook();
    2 HSSFSheet sheet = wb.createSheet("row sheet");
    3 // Create various cells and rows for spreadsheet.
    4 // Shift rows 6 - 11 on the spreadsheet to the top (rows 0 - 5)
    5 sheet.shiftRows(5, 10, -5);
    6 FileOutputStream fileOut = new FileOutputStream("workbook.xls");
    7 wb.write(fileOut);
    8 fileOut.close();

    20.选种指定的工作单 

    1     HSSFWorkbook wb = new HSSFWorkbook();
    2 HSSFSheet sheet = wb.createSheet("row sheet");
    3 sheet.setSelected(true);
    4 // Create various cells and rows for spreadsheet.
    5 FileOutputStream fileOut = new FileOutputStream("workbook.xls");
    6 wb.write(fileOut);
    7 fileOut.close();

    21.工作单的放大缩小 

    1     HSSFWorkbook wb = new HSSFWorkbook();
    2 HSSFSheet sheet1 = wb.createSheet("new sheet");
    3 sheet1.setZoom(3,4); // 75 percent magnification
    4 FileOutputStream fileOut = new FileOutputStream("workbook.xls");
    5 wb.write(fileOut);
    6 fileOut.close();

    22.头注和脚注 

     1     HSSFWorkbook wb = new HSSFWorkbook();
    2 HSSFSheet sheet = wb.createSheet("new sheet");
    3 HSSFHeader header = sheet.getHeader();
    4 header.setCenter("Center Header");
    5 header.setLeft("Left Header");
    6 header.setRight(HSSFHeader.font("Stencil-Normal", "Italic") +
    7 HSSFHeader.fontSize((short) 16) + "Right w/ Stencil-Normal Italic font and size 16");
    8 FileOutputStream fileOut = new FileOutputStream("workbook.xls");
    9 wb.write(fileOut);
    10 fileOut.close();
    11 //-------------------------------以上实例代码均来自官方网站
    12 //-------------------------------POI中使用的颜色是用颜色索引来实现,如下:
    13 /*
    14 * 颜色对照表 数字代表颜色索引
    15 8: BLACK
    16 60: BROWN
    17 59: OLIVE_GREEN
    18 58: DARK_GREEN
    19 56: DARK_TEAL
    20 18: DARK_BLUE
    21 32: DARK_BLUE
    22 62: INDIGO
    23 63: GREY_80_PERCENT
    24 53: ORANGE
    25 19: DARK_YELLOW
    26 17: GREEN
    27 21: TEAL
    28 38: TEAL
    29 12: BLUE
    30 39: BLUE
    31 54: BLUE_GREY
    32 23: GREY_50_PERCENT
    33 10: RED
    34 52: LIGHT_ORANGE
    35 50: LIME
    36 57: SEA_GREEN
    37 49: AQUA
    38 48: LIGHT_BLUE
    39 20: VIOLET
    40 36: VIOLET
    41 55: GREY_40_PERCENT
    42 14: PINK
    43 33: PINK
    44 51: GOLD
    45 13: YELLOW
    46 34: YELLOW
    47 11: BRIGHT_GREEN
    48 35: BRIGHT_GREEN
    49 15: TURQUOISE
    50 35: TURQUOISE
    51 16: DARK_RED
    52 37: DARK_RED
    53 40: SKY_BLUE
    54 61: PLUM
    55 25: PLUM
    56 22: GREY_25_PERCENT
    57 45: ROSE
    58 43: LIGHT_YELLOW
    59 42: LIGHT_GREEN
    60 41: LIGHT_TURQUOISE
    61 27:LIGHT_TURQUOISE
    62 44: PALE_BLUE
    63 46: LAVENDER
    64 9: WHITE
    65 24: CORNFLOWER_BLUE
    66 26: LEMON_CHIFFON
    67 25: MAROON
    68 28: ORCHID
    69 29: CORAL
    70 30: ROYAL_BLUE
    71 31: LIGHT_CORNFLOWER_BLUE
    72 */
    73 //----------------------------------------------------你可以按上面的方法来自定义颜色
    74 /*
    75 * 自定义颜色,去掉注释,贴加,其他则查看颜色对照表
    76 HSSFPalette palette = this.getCustomPalette();
    77 palette.setColorAtIndex(idx,
    78 i, //RGB red (0-255)
    79 j, //RGB green
    80 k //RGB blue
    81 );
    82 */
    83 //---------------------------------------------------用以上的基础知识我们就可以制作复杂的多表头,控制元/
    84 //格样式的操作了,具体的代码考虑到公司资产,所以隐去。

    官方网站:http://jakarta.apache.org/poi/



















  • 相关阅读:
    考勤助手——基于CS三层结构的子系统设计
    淘宝网架构分析——反向代理
    软件架构风格——解释器风格详析
    软件架构风格
    考勤助手类图的设计
    任课教师管理考勤子系统之用例图
    考勤助手ER图2.0版本所存在的问题
    关于“考勤助手”体系架构风格的选取
    浅谈CDN技术的性能与优势
    软件体系结构——解释器风格的浅解
  • 原文地址:https://www.cnblogs.com/macula/p/2294387.html
Copyright © 2011-2022 走看看