poi笔记(1)--java操作excel文件

来源:互联网 发布:淘宝回收相机哪家可靠 编辑:程序博客网 时间:2024/06/09 16:22

1.POI介绍

  1.        Apache POI 是用Java编写的免费开源的跨平台的 Java API,Apache POI提供API给Java程式对Microsoft Office格式档案读和写的功能。POI为“Poor Obfuscation Implementation”的首字母缩写,意为“可怜的模糊实现”。
  2.        Apache POI 是创建和维护操作各种符合Office Open XML(OOXML)标准和微软的OLE 2复合文档格式(OLE2)的Java API。用它可以使用Java读取和创建,修改MS Excel文件.而且,还可以使用Java读取和创建MS Word和MSPowerPoint文件。Apache POI 提供Java操作Excel解决方案(适用于Excel97-2008)。
  3.        HSSF是Horrible SpreadSheet Format的缩写,也即“讨厌的电子表格格式”
  4. This is most developed for Excel workbooks (SS=HSSF+XSSF). Work is progressing for Word documents (HWPF+XWPF) and PowerPoint presentations (HSLF+XSLF)
  5. wps/office 2013 必须使用OOXML,2003版本会部分内容显示不正常。(表格线、隐藏列)
  6.         Apache POI 是创建和维护操作各种符合Office Open XML(OOXML)标准和微软的OLE 2复合文档格式(OLE2)的Java API。用它可以使用Java读取和创建,修改MS Excel文件.而且,还可以使用Java读取和创建MS Word和MSPowerPoint文件。Apache POI 提供Java操作Excel解决方案(适用于Excel97-2008)。
  7. HSSF是Horrible SpreadSheet Format的缩写,也即“讨厌的电子表格格式”
  8.          This is most developed for Excel workbooks (SS=HSSF+XSSF). Work is progressing for Word documents (HWPF+XWPF) and PowerPoint presentations (HSLF+XSLF)
  9.        wps/office 2013 必须使用OOXML,2003版本会部分内容显示不正常。(表格线、隐藏列)
  10. Excel 不同版本的最大行列数:
Excel2003      2007
列      255            16384
      65535      1048576

2.POI的运用

  1. 生产厂家批量导出,通用
  2. 出货表月统计,读取模板,读取样式

3.POI宏观的操作步骤

public void export1() throws IOException{
/* 操作步骤:
* 1、创建工作簿对象workbook
* 2、创建工作表对象sheet
* 3、创建行对象 row
* 4、创建单元格对象,赋列值
* 5、写入内容
* 6、设置样式(可以没有)
* 7、写入文件
* 8、关闭文件 */

HSSFWorkbook wb = new HSSFWorkbook();//新建工作簿
HSSFSheet sheet = wb.createSheet();//新建工作表
HSSFRow nRow = sheet.createRow(3);//创建行对象,起始值为0
HSSFCell nCell = nRow.createCell((short)4);//创建单元格对象

nCell.setCellValue("无悔_一叶扁舟");//3.9版本放开

FileOutputStream fOut = new FileOutputStream("d:\\test.xls");//创建xls文件,无内容 0字节
wb.write(fOut);//写内容,xls文件已经可以打开
fOut.flush(); //刷新缓冲区
fOut.close(); //关闭
}

package poi;import java.io.FileOutputStream;import org.apache.poi.hssf.usermodel.HSSFCell;import org.apache.poi.hssf.usermodel.HSSFCellStyle;import org.apache.poi.hssf.usermodel.HSSFFont;import org.apache.poi.hssf.usermodel.HSSFRow;import org.apache.poi.hssf.usermodel.HSSFSheet;import org.apache.poi.hssf.usermodel.HSSFWorkbook;/** * @ClassName: Test1HFFS * @Description 类的作用: 需要导入的jar包 * dom4j-1.6.1.jar * poi-3.9-20121203.jar *poi-ooxml-3.9-20121203.jar  * poi-ooxml-schemas-3.9-20121203.jar * stax-api-1.0.1.jar  *xmlbeans-2.3.0.jar * @author 作者:一叶扁舟(skiff) * @date 2017年4月8日 下午5:26:12 *  */public class Test1HFFS {public static void main(String[] args) throws Exception {Test1HFFS tm = new Test1HFFS();tm.print();}/** * @Title: print * @author:一叶扁舟(skiff)* @Description: TODO* @param @throws Exception    * @return void    * @throws */public void print() throws Exception{String xlsFile = "d:\\poiHFFS.xls";//STEP 1:打开excel文件HSSFWorkbook wb = new HSSFWorkbook();//创建excel文件//HSSFWorkbook wb = new HSSFWorkbook(new FileInputStream(xlsFile));//打开已存在的excel文件//STEP 2:打开当前工作簿HSSFSheet sheet = wb.createSheet("我的第一个工作簿");//建立新的sheet对象//HSSFSheet sheet = wb.getSheetAt(0);//选择第一个工作簿//wb.setSheetName(0, "我的第一个工作簿");//设置工作簿的名称HSSFRow nRow = null;HSSFCell nCell   = null;//STEP 3:创建行对象nRow = sheet.createRow((short)1);//第2行//STEP 4:指定列 创建单元格对象nCell = nRow.createCell((short)(2));//第3列//STEP 5:指定列 创建单元格对象nCell.setCellValue("我是单元格");//STEP 6:设置样式nCell.setCellStyle(leftStyle(wb));//STEP 7:关闭保存excel文件FileOutputStream fOut = new FileOutputStream(xlsFile);wb.write(fOut);fOut.flush();fOut.close();System.out.println("finish.");}/** * @Title: leftStyle * @author:一叶扁舟(skiff)* @Description: 设置单元格样式* @param @param wb* @param @return    * @return HSSFCellStyle    * @throws */private HSSFCellStyle leftStyle(HSSFWorkbook wb){HSSFCellStyle curStyle = wb.createCellStyle();HSSFFont curFont = wb.createFont();//设置字体//curFont.setFontName("Times New Roman");//设置英文字体curFont.setFontName("微软雅黑");//设置英文字体curFont.setCharSet(HSSFFont.DEFAULT_CHARSET);//设置中文字体,那必须还要再对单元格进行编码设置curFont.setFontHeightInPoints((short)10);//字体大小curStyle.setFont(curFont);curStyle.setBorderTop(HSSFCellStyle.BORDER_THICK);//粗实线curStyle.setBorderBottom(HSSFCellStyle.BORDER_THIN);//实线curStyle.setBorderLeft(HSSFCellStyle.BORDER_MEDIUM);//比较粗实线curStyle.setBorderRight(HSSFCellStyle.BORDER_THIN);//实线curStyle.setWrapText(true);  //换行   curStyle.setAlignment(HSSFCellStyle.ALIGN_RIGHT);//横向具右对齐curStyle.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);//单元格垂直居中return curStyle;}}


0 0
原创粉丝点击