`
橄榄绿
  • 浏览: 272785 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

生成一个Excel文件POI

 
阅读更多

/**   
     *   生成一个Excel文件POI
     *   @param   inputFile   输入模板文件路径  
     *   @param   outputFile   输入文件存放于服务器路径  
     *   @param   dataList   待导出数据  
     *   @throws   Exception  
     *   @roseuid:  
     */

    public static void exportExcelFile(String inputFile,String outputFile,List dataList) throws Exception{
  //用模板文件构造poi  
  POIFSFileSystem fs = new POIFSFileSystem(new FileInputStream(inputFile));
  //创建模板工作表  
  HSSFWorkbook templatewb = new HSSFWorkbook(fs);
  //直接取模板第一个sheet对象  
  HSSFSheet templateSheet = templatewb.getSheetAt(1);
  //得到模板的第一个sheet的第一行对象   为了得到模板样式  
  HSSFRow templateRow = templateSheet.getRow(0);

  //HSSFSheet   timplateSheet   =   templatewb.getSheetAt(1);  
  //取得Excel文件的总列数  
  int columns = templateSheet.getRow((short) 0)
    .getPhysicalNumberOfCells();
//  Debug.println("columns   is   :   " + columns);  //=========================
  //创建样式数组  
  HSSFCellStyle styleArray[] = new HSSFCellStyle[columns];

  //一次性创建所有列的样式放在数组里  
  for (int s = 0; s < columns; s++) {
   //得到数组实例  
   styleArray[s] = templatewb.createCellStyle();
  }
  //循环对每一个单元格进行赋值    
  //定位行  
  for (int rowId = 1; rowId < dataList.size(); rowId++) {
   //依次取第rowId行数据   每一个数据是valueList  
   List valueList = (List) dataList.get(rowId - 1);
   //定位列  
   for (int columnId = 0; columnId < columns; columnId++) {
    //依次取出对应与colunmId列的值  
    //每一个单元格的值  
    String dataValue = (String) valueList.get(columnId);
    //取出colunmId列的的style  
    //模板每一列的样式  
    HSSFCellStyle style = styleArray[columnId];
    //取模板第colunmId列的单元格对象  
    //模板单元格对象  
    HSSFCell templateCell = templateRow.getCell((short) columnId);
    //创建一个新的rowId行   行对象  
    //新建的行对象    
    HSSFRow hssfRow = templateSheet.createRow(rowId);
    //创建新的rowId行   columnId列   单元格对象  
    //新建的单元格对象  
    HSSFCell cell = hssfRow.createCell((short) columnId);
    //如果对应的模板单元格   样式为非锁定  
    if (templateCell.getCellStyle().getLocked() == false) {
     //设置此列style为非锁定  
     style.setLocked(false);
     //设置到新的单元格上  
     cell.setCellStyle(style);
    }
    //否则样式为锁定  
    else {
     //设置此列style为锁定  
     style.setLocked(true);
     //设置到新单元格上  
     cell.setCellStyle(style);
    }
    //设置编码  
    cell.setEncoding(HSSFCell.ENCODING_UTF_16);
    //Debug.println("dataValue   :   "   +   dataValue);  
    //设置值   统一为String  
    cell.setCellValue(dataValue);
   }
  }
  //设置输入流  
  FileOutputStream fOut = new FileOutputStream(outputFile);
  //将模板的内容写到输出文件上  
  templatewb.write(fOut);
  fOut.flush();

  //操作结束,关闭文件  
  fOut.close();

 }

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics