博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java -- POI -- 入门使用以及简单介绍
阅读量:6586 次
发布时间:2019-06-24

本文共 20652 字,大约阅读时间需要 68 分钟。

1.创建工作簿 (WORKBOOK)
HSSFWorkbook wb = new HSSFWorkbook();          FileOutputStream fileOut = new FileOutputStream("workbook.xls");          wb.write(fileOut);          fileOut.close();
2.创建工作表(SHEET)
HSSFWorkbook wb = new HSSFWorkbook();          HSSFSheet sheet1 = wb.createSheet("new sheet");          HSSFSheet sheet2 = wb.createSheet("second sheet");          FileOutputStream fileOut = new FileOutputStream("workbook.xls");          wb.write(fileOut);          fileOut.close();
3.创建单元格(CELL)
HSSFWorkbook wb = new HSSFWorkbook();          HSSFSheet sheet = wb.createSheet("new sheet");          // Create a row and put some cells in it. Rows are 0 based.          HSSFRow row = sheet.createRow((short)0);          // Create a cell and put a value in it.          HSSFCell cell = row.createCell((short)0);          cell.setCellValue(1);          // Or do it on one line.          row.createCell((short)1).setCellValue(1.2);          row.createCell((short)2).setCellValue("This is a string");          row.createCell((short)3).setCellValue(true);          // Write the output to a file          FileOutputStream fileOut = new FileOutputStream("workbook.xls");          wb.write(fileOut);          fileOut.close();
4.创建指定单元格式的单元格
HSSFWorkbook wb = new HSSFWorkbook();          HSSFSheet sheet = wb.createSheet("new sheet");          // Create a row and put some cells in it. Rows are 0 based.          HSSFRow row = sheet.createRow((short)0);          // Create a cell and put a date value in it.  The first cell is not styled          // as a date.          HSSFCell cell = row.createCell((short)0);          cell.setCellValue(new Date());          // we style the second cell as a date (and time).  It is important to          // create a new cell style from the workbook otherwise you can end up          // modifying the built in style and effecting not only this cell but other cells.          HSSFCellStyle cellStyle = wb.createCellStyle();          cellStyle.setDataFormat(HSSFDataFormat.getBuiltinFormat("m/d/yy h:mm"));          cell = row.createCell((short)1);          cell.setCellValue(new Date());          cell.setCellStyle(cellStyle);          // Write the output to a file          FileOutputStream fileOut = new FileOutputStream("workbook.xls");          wb.write(fileOut);          fileOut.close();
5. 单元格的不同格式
HSSFWorkbook wb = new HSSFWorkbook();          HSSFSheet sheet = wb.createSheet("new sheet");          HSSFRow row = sheet.createRow((short)2);          row.createCell((short) 0).setCellValue(1.1);          row.createCell((short) 1).setCellValue(new Date());          row.createCell((short) 2).setCellValue("a string");          row.createCell((short) 3).setCellValue(true);          row.createCell((short) 4).setCellType(HSSFCell.CELL_TYPE_ERROR);          // Write the output to a file          FileOutputStream fileOut = new FileOutputStream("workbook.xls");          wb.write(fileOut);          fileOut.close();
6.单元格的不通对齐方式
public static void main(String[] args)                  throws IOException          {              HSSFWorkbook wb = new HSSFWorkbook();              HSSFSheet sheet = wb.createSheet("new sheet");              HSSFRow row = sheet.createRow((short) 2);              createCell(wb, row, (short) 0, HSSFCellStyle.ALIGN_CENTER);              createCell(wb, row, (short) 1, HSSFCellStyle.ALIGN_CENTER_SELECTION);              createCell(wb, row, (short) 2, HSSFCellStyle.ALIGN_FILL);              createCell(wb, row, (short) 3, HSSFCellStyle.ALIGN_GENERAL);              createCell(wb, row, (short) 4, HSSFCellStyle.ALIGN_JUSTIFY);              createCell(wb, row, (short) 5, HSSFCellStyle.ALIGN_LEFT);              createCell(wb, row, (short) 6, HSSFCellStyle.ALIGN_RIGHT);              // Write the output to a file              FileOutputStream fileOut = new FileOutputStream("workbook.xls");              wb.write(fileOut);              fileOut.close();          }          /**          * Creates a cell and aligns it a certain way.          *          * @param wb        the workbook          * @param row       the row to create the cell in          * @param column    the column number to create the cell in          * @param align     the alignment for the cell.          */          private static void createCell(HSSFWorkbook wb, HSSFRow row, short column, short align)          {              HSSFCell cell = row.createCell(column);              cell.setCellValue("Align It");              HSSFCellStyle cellStyle = wb.createCellStyle();              cellStyle.setAlignment(align);              cell.setCellStyle(cellStyle);          }
7.单元格的边框设置
HSSFWorkbook wb = new HSSFWorkbook();          HSSFSheet sheet = wb.createSheet("new sheet");          // Create a row and put some cells in it. Rows are 0 based.          HSSFRow row = sheet.createRow((short) 1);          // Create a cell and put a value in it.          HSSFCell cell = row.createCell((short) 1);          cell.setCellValue(4);          // Style the cell with borders all around.          HSSFCellStyle style = wb.createCellStyle();          style.setBorderBottom(HSSFCellStyle.BORDER_THIN);          style.setBottomBorderColor(HSSFColor.BLACK.index);          style.setBorderLeft(HSSFCellStyle.BORDER_THIN);          style.setLeftBorderColor(HSSFColor.GREEN.index);          style.setBorderRight(HSSFCellStyle.BORDER_THIN);          style.setRightBorderColor(HSSFColor.BLUE.index);          style.setBorderTop(HSSFCellStyle.BORDER_MEDIUM_DASHED);          style.setTopBorderColor(HSSFColor.BLACK.index);          cell.setCellStyle(style);          // Write the output to a file          FileOutputStream fileOut = new FileOutputStream("workbook.xls");          wb.write(fileOut);          fileOut.close();
8.填充和颜色设置
HSSFWorkbook wb = new HSSFWorkbook();          HSSFSheet sheet = wb.createSheet("new sheet");          // Create a row and put some cells in it. Rows are 0 based.          HSSFRow row = sheet.createRow((short) 1);          // Aqua background          HSSFCellStyle style = wb.createCellStyle();          style.setFillBackgroundColor(HSSFColor.AQUA.index);          style.setFillPattern(HSSFCellStyle.BIG_SPOTS);          HSSFCell cell = row.createCell((short) 1);          cell.setCellValue("X");          cell.setCellStyle(style);          // Orange "foreground", foreground being the fill foreground not the font color.          style = wb.createCellStyle();          style.setFillForegroundColor(HSSFColor.ORANGE.index);          style.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);          cell = row.createCell((short) 2);          cell.setCellValue("X");          cell.setCellStyle(style);          // Write the output to a file          FileOutputStream fileOut = new FileOutputStream("workbook.xls");          wb.write(fileOut);          fileOut.close();
9.合并单元格操作
HSSFWorkbook wb = new HSSFWorkbook();          HSSFSheet sheet = wb.createSheet("new sheet");          HSSFRow row = sheet.createRow((short) 1);          HSSFCell cell = row.createCell((short) 1);          cell.setCellValue("This is a test of merging");          sheet.addMergedRegion(new Region(1,(short)1,1,(short)2));          // Write the output to a file          FileOutputStream fileOut = new FileOutputStream("workbook.xls");          wb.write(fileOut);          fileOut.close();
10.字体设置
HSSFWorkbook wb = new HSSFWorkbook();          HSSFSheet sheet = wb.createSheet("new sheet");          // Create a row and put some cells in it. Rows are 0 based.          HSSFRow row = sheet.createRow((short) 1);          // Create a new font and alter it.          HSSFFont font = wb.createFont();          font.setFontHeightInPoints((short)24);          font.setFontName("Courier New");          font.setItalic(true);          font.setStrikeout(true);          // Fonts are set into a style so create a new one to use.          HSSFCellStyle style = wb.createCellStyle();          style.setFont(font);          // Create a cell and put a value in it.          HSSFCell cell = row.createCell((short) 1);          cell.setCellValue("This is a test of fonts");          cell.setCellStyle(style);          // Write the output to a file          FileOutputStream fileOut = new FileOutputStream("workbook.xls");          wb.write(fileOut);          fileOut.close();
11.自定义颜色
HSSFWorkbook wb = new HSSFWorkbook();          HSSFSheet sheet = wb.createSheet();          HSSFRow row = sheet.createRow((short) 0);          HSSFCell cell = row.createCell((short) 0);          cell.setCellValue("Default Palette");          //apply some colors from the standard palette,          // as in the previous examples.          //we'll use red text on a lime background          HSSFCellStyle style = wb.createCellStyle();          style.setFillForegroundColor(HSSFColor.LIME.index);          style.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);          HSSFFont font = wb.createFont();          font.setColor(HSSFColor.RED.index);          style.setFont(font);          cell.setCellStyle(style);          //save with the default palette          FileOutputStream out = new FileOutputStream("default_palette.xls");          wb.write(out);          out.close();          //now, let's replace RED and LIME in the palette          // with a more attractive combination          // (lovingly borrowed from freebsd.org)          cell.setCellValue("Modified Palette");          //creating a custom palette for the workbook          HSSFPalette palette = wb.getCustomPalette();          //replacing the standard red with freebsd.org red          palette.setColorAtIndex(HSSFColor.RED.index,                  (byte) 153,  //RGB red (0-255)                  (byte) 0,    //RGB green                  (byte) 0     //RGB blue          );          //replacing lime with freebsd.org gold          palette.setColorAtIndex(HSSFColor.LIME.index, (byte) 255, (byte) 204, (byte) 102);          //save with the modified palette          // note that wherever we have previously used RED or LIME, the          // new colors magically appear          out = new FileOutputStream("modified_palette.xls");          wb.write(out);          out.close();
12.读和重写EXCEL文件
POIFSFileSystem fs = new POIFSFileSystem(new FileInputStream("workbook.xls"));          HSSFWorkbook wb = new HSSFWorkbook(fs);          HSSFSheet sheet = wb.getSheetAt(0);          HSSFRow row = sheet.getRow(2);          HSSFCell cell = row.getCell((short)3);          if (cell == null)              cell = row.createCell((short)3);          cell.setCellType(HSSFCell.CELL_TYPE_STRING);          cell.setCellValue("a test");          // Write the output to a file          FileOutputStream fileOut = new FileOutputStream("workbook.xls");          wb.write(fileOut);          fileOut.close();
13.在EXCEL单元格中使用自动换行
HSSFWorkbook wb = new HSSFWorkbook();          HSSFSheet s = wb.createSheet();          HSSFRow r = null;          HSSFCell c = null;          HSSFCellStyle cs = wb.createCellStyle();          HSSFFont f = wb.createFont();          HSSFFont f2 = wb.createFont();          cs = wb.createCellStyle();          cs.setFont( f2 );          //Word Wrap MUST be turned on          cs.setWrapText( true );          r = s.createRow( (short) 2 );          r.setHeight( (short) 0x349 );          c = r.createCell( (short) 2 );          c.setCellType( HSSFCell.CELL_TYPE_STRING );          c.setCellValue( "Use /n with word wrap on to create a new line" );          c.setCellStyle( cs );          s.setColumnWidth( (short) 2, (short) ( ( 50 * 8 ) / ( (double) 1 / 20 ) ) );          FileOutputStream fileOut = new FileOutputStream( "workbook.xls" );          wb.write( fileOut );          fileOut.close();
14.数字格式自定义
HSSFWorkbook wb = new HSSFWorkbook();          HSSFSheet sheet = wb.createSheet("format sheet");          HSSFCellStyle style;          HSSFDataFormat format = wb.createDataFormat();          HSSFRow row;          HSSFCell cell;          short rowNum = 0;          short colNum = 0;          row = sheet.createRow(rowNum++);          cell = row.createCell(colNum);          cell.setCellValue(11111.25);          style = wb.createCellStyle();          style.setDataFormat(format.getFormat("0.0"));          cell.setCellStyle(style);          row = sheet.createRow(rowNum++);          cell = row.createCell(colNum);          cell.setCellValue(11111.25);          style = wb.createCellStyle();          style.setDataFormat(format.getFormat("#,##0.0000"));          cell.setCellStyle(style);          FileOutputStream fileOut = new FileOutputStream("workbook.xls");          wb.write(fileOut);          fileOut.close();
15.调整工作单位置
HSSFWorkbook wb = new HSSFWorkbook();          HSSFSheet sheet = wb.createSheet("format sheet");          HSSFPrintSetup ps = sheet.getPrintSetup();          sheet.setAutobreaks(true);          ps.setFitHeight((short)1);          ps.setFitWidth((short)1);           // Create various cells and rows for spreadsheet.          FileOutputStream fileOut = new FileOutputStream("workbook.xls");          wb.write(fileOut);          fileOut.close();
16.设置打印区域
HSSFWorkbook wb = new HSSFWorkbook();          HSSFSheet sheet = wb.createSheet("Sheet1");          wb.setPrintArea(0, "$A$1:$C$2");          //sets the print area for the first sheet          //Alternatively:          //wb.setPrintArea(0, 0, 1, 0, 0) is equivalent to using the name reference (See the JavaDocs for more details)          // Create various cells and rows for spreadsheet.          FileOutputStream fileOut = new FileOutputStream("workbook.xls");          wb.write(fileOut);          fileOut.close();
17.标注脚注
HSSFWorkbook wb = new HSSFWorkbook();          HSSFSheet sheet = wb.createSheet("format sheet");          HSSFFooter footer = sheet.getFooter()          footer.setRight( "Page " + HSSFFooter.page() + " of " + HSSFFooter.numPages() );          // Create various cells and rows for spreadsheet.          FileOutputStream fileOut = new FileOutputStream("workbook.xls");          wb.write(fileOut);          fileOut.close();
18.使用方便的内部提供的函数
HSSFWorkbook wb = new HSSFWorkbook();          HSSFSheet sheet1 = wb.createSheet( "new sheet" );          // Create a merged region          HSSFRow row = sheet1.createRow( (short) 1 );          HSSFRow row2 = sheet1.createRow( (short) 2 );          HSSFCell cell = row.createCell( (short) 1 );          cell.setCellValue( "This is a test of merging" );          Region region = new Region( 1, (short) 1, 4, (short) 4 );          sheet1.addMergedRegion( region );          // Set the border and border colors.          final short borderMediumDashed = HSSFCellStyle.BORDER_MEDIUM_DASHED;          HSSFRegionUtil.setBorderBottom( borderMediumDashed,              region, sheet1, wb );          HSSFRegionUtil.setBorderTop( borderMediumDashed,              region, sheet1, wb );          HSSFRegionUtil.setBorderLeft( borderMediumDashed,              region, sheet1, wb );          HSSFRegionUtil.setBorderRight( borderMediumDashed,              region, sheet1, wb );          HSSFRegionUtil.setBottomBorderColor(HSSFColor.AQUA.index, region, sheet1, wb);          HSSFRegionUtil.setTopBorderColor(HSSFColor.AQUA.index, region, sheet1, wb);          HSSFRegionUtil.setLeftBorderColor(HSSFColor.AQUA.index, region, sheet1, wb);          HSSFRegionUtil.setRightBorderColor(HSSFColor.AQUA.index, region, sheet1, wb);          // Shows some usages of HSSFCellUtil          HSSFCellStyle style = wb.createCellStyle();          style.setIndention((short)4);          HSSFCellUtil.createCell(row, 8, "This is the value of the cell", style);          HSSFCell cell2 = HSSFCellUtil.createCell( row2, 8, "This is the value of the cell");          HSSFCellUtil.setAlignment(cell2, wb, HSSFCellStyle.ALIGN_CENTER);          // Write out the workbook          FileOutputStream fileOut = new FileOutputStream( "workbook.xls" );          wb.write( fileOut );          fileOut.close();
19.在工作单中移动行,调整行的上下位置
HSSFWorkbook wb = new HSSFWorkbook();          HSSFSheet sheet = wb.createSheet("row sheet");          // Create various cells and rows for spreadsheet.          // Shift rows 6 - 11 on the spreadsheet to the top (rows 0 - 5)          sheet.shiftRows(5, 10, -5);          FileOutputStream fileOut = new FileOutputStream("workbook.xls");          wb.write(fileOut);          fileOut.close();
20.选种指定的工作单
HSSFWorkbook wb = new HSSFWorkbook();          HSSFSheet sheet = wb.createSheet("row sheet");          sheet.setSelected(true);          // Create various cells and rows for spreadsheet.          FileOutputStream fileOut = new FileOutputStream("workbook.xls");          wb.write(fileOut);          fileOut.close();
21.工作单的放大缩小
HSSFWorkbook wb = new HSSFWorkbook();          HSSFSheet sheet1 = wb.createSheet("new sheet");          sheet1.setZoom(3,4);   // 75 percent magnification          FileOutputStream fileOut = new FileOutputStream("workbook.xls");          wb.write(fileOut);          fileOut.close();
22.头注和脚注
HSSFWorkbook wb = new HSSFWorkbook();          HSSFSheet sheet = wb.createSheet("new sheet");          HSSFHeader header = sheet.getHeader();          header.setCenter("Center Header");          header.setLeft("Left Header");          header.setRight(HSSFHeader.font("Stencil-Normal", "Italic") +                          HSSFHeader.fontSize((short) 16) + "Right w/ Stencil-Normal Italic font and size 16");          FileOutputStream fileOut = new FileOutputStream("workbook.xls");          wb.write(fileOut);          fileOut.close();

三、重点介绍

一个excel文档必备的内容都有什么呢:

1、文档的名字和保存的位置。(文档以xls结尾)

2、sheet页,一个excel文档可以包括多个sheet页

3、行

4、单元格(有些单元格是合并的)

5、单元格样式(包括背景颜色、对其方式等)

HSSFWorkbook wb = new HSSFWorkbook();  //创建excel      HSSFSheet sheet1 = wb.createSheet("new sheet");  //创建多个sheet页      HSSFSheet sheet2 = wb.createSheet("second sheet");        HSSFCellStyle style = wb.createCellStyle();  //设置单元格背景颜色      style.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);      style.setFillForegroundColor(HSSFColor.YELLOW.index);      HSSFRow row = sheet1.createRow((short)0);//创建一行数据,      row.createCell((short)0).setCellValue(1);  //给第一行数据赋值      row.createCell((short)1).setCellValue(1.2);        row.createCell((short)2).setCellValue("This is a string");        HSSFCell cell =  row.createCell((short)3);      cell.setCellValue(true);      cell.setCellStyle(style);//设置单元格背景颜色      sheet1.addMergedRegion(new Region(0,(short)1,1,(short)1));  //合并单元格   HSSFCellStyle style_green = wb.createCellStyle();  //设置单元格背景颜色      style_green.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);       style_green.setFillForegroundColor(HSSFColor.LIME.index);       style_green.setBorderBottom(HSSFCellStyle.BORDER_THIN); //下边框        style_green.setBorderLeft(HSSFCellStyle.BORDER_THIN);//左边框        style_green.setBorderTop(HSSFCellStyle.BORDER_THIN);//上边框        style_green.setBorderRight(HSSFCellStyle.BORDER_THIN);//右边框        style_green.setWrapText( true );//自动回车      style_green.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);//设置竖直方向居中      style_green.setAlignment(HSSFCellStyle.ALIGN_CENTER);//设置水平方向居中  sheet.setColumnWidth( (short) k, (short) ( ( 50 * 4 ) / ( (double) 1 / 20 ) ) );//设置单元格宽度row1.setHeight((short) 0x220 );//设置行高度

页面弹出保存位置:

req.setCharacterEncoding("UTF-8");      resp.setCharacterEncoding("UTF-8");      resp.setContentType("application/x-download");      SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd-HH-mm-ss");      String filedisplay = sdf.format(new Date())+".xls";      filedisplay = URLEncoder.encode(filedisplay, "UTF-8");      resp.addHeader("Content-Disposition", "attachment;filename="+ filedisplay);      OutputStream out = resp.getOutputStream();      wb.write(out);

背景颜色:

HSSFColor.ROYAL_BLUE     HSSFColor.TEAL   HSSFColor.LIME   HSSFColor.PALE_BLUE      HSSFColor.AQUA   HSSFColor.GREEN      HSSFColor.TURQUOISE      HSSFColor.DARK_BLUE      HSSFColor.CORNFLOWER_BLUE    HSSFColor.OLIVE_GREEN    HSSFColor.WHITE      HSSFColor.LIGHT_TURQUOISE    HSSFColor.LEMON_CHIFFON      HSSFColor.LIGHT_GREEN    HSSFColor.BLUE   HSSFColor.DARK_RED   HSSFColor.CORAL      HSSFColor.RED    HSSFColor.LIGHT_YELLOW   HSSFColor.SKY_BLUE   HSSFColor.BROWN      HSSFColor.SEA_GREEN      HSSFColor.INDIGO     HSSFColor.MAROON     HSSFColor.GREY_80_PERCENT    HSSFColor.GREY_25_PERCENT    HSSFColor.DARK_GREEN     HSSFColor.YELLOW     HSSFColor.GOLD   HSSFColor.GREY_40_PERCENT    HSSFColor.DARK_TEAL      HSSFColor.PINK   HSSFColor.ORCHID     HSSFColor.LIGHT_BLUE     HSSFColor.LIGHT_CORNFLOWER_BLUE      HSSFColor.BLACK      HSSFColor.DARK_YELLOW    HSSFColor.VIOLET     HSSFColor.LAVENDER   HSSFColor.ROSE   HSSFColor.BLUE_GREY      HSSFColor.LIGHT_ORANGE   HSSFColor.ORANGE     HSSFColor.GREY_50_PERCENT

啦啦啦

啦啦啦

转载地址:http://jjhno.baihongyu.com/

你可能感兴趣的文章
C# 判断远程文件是否存在
查看>>
backbone学习笔记:集合(Collection)
查看>>
[C#基础]说说委托+=和-=的那些事
查看>>
SSH原理与运用(一):远程登录
查看>>
Spring Framework 4.2 中的新功能和增强功能
查看>>
动态代理解决网站字符集编码
查看>>
C#中Encoding.Unicode与Encoding.UTF8的区别
查看>>
Spring中的AOP(二)——AOP基本概念和Spring对AOP的支持
查看>>
MarkDown的使用
查看>>
图像处理------简单脸谱检测算法
查看>>
在新美大“创业”:KTV预定业务演进之路
查看>>
Swap in C C++ C# Java
查看>>
简单高效的云服务器单元化扩容方案
查看>>
ubuntu开机直接进入命令行模式
查看>>
重读《JavaScript DOM编程艺术》(第一版)
查看>>
Shell脚本监控CPU、内存和硬盘利用率
查看>>
任务记录:OEA 框架中的多类型树控件
查看>>
x264代码剖析(四):vs2010编译x264错误集锦
查看>>
SQL*Plus环境下创建PLUSTRACE角色
查看>>
我所想的GIX4的权限
查看>>