亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

EXCEL文件軟件利用POI模板導出

發布時間:2020-12-02 15:07:13 來源:億速云 閱讀:260 作者:Leah 欄目:編程語言

本篇文章給大家分享的是有關EXCEL文件軟件利用POI模板導出,小編覺得挺實用的,因此分享給大家學習,希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。

一般的EXCEL導出使用POI先創建一個HSSFWorkbook,然后通過不斷創建HSSFRow,HSSFCell后設置單元格內容便可以完成導出。

這次在項目中需要用到模板,導出的內容包括(1.模板中的內容、樣式。2.自己需要新增的內容、樣式。),還需要設置單元格的樣式,在網上搜了一些blog,完成后記錄一下。

分析這次需求,最關鍵的就是如何獲取到填充了模板的新HSSFWorkbook,如果獲取到它,我們可以熟練的往里面添加內容。

File fi = new File("F:/usr/user.xls");
POIFSFileSystem fs = new POIFSFileSystem(new FileInputStream(fi)); 
HSSFWorkbook wb = new HSSFWorkbook(fs);

這樣便可以獲取到我們熟悉的HSSFWorkbook對象了,操作熟悉的HSSFWorkbook對象想必爽歪歪了。這里還有一個需求,就是需要設置一些單元格的樣式,這在之前我也沒有接觸到過,記錄下來。

//生成單元格樣式
HSSFCellStyle cellStyle = wb.createCellStyle(); //wb是上一步創建的HSSFWorkbook對象
//設置背景顏色
cellStyle.setFillForegroundColor(HSSFColor.RED.index);
//solid 填充 foreground 前景色
cellStyle.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);

這樣便創建完成了一個單元格的樣式,接下來便是在特定的單元格添加樣式。

//獲取特定的單元格
HSSFCell cell = sheet.getRow(rowIndex).getCell(cellnum); 
//設置樣式
cell.setCellStyle(cellStyle); //cellStyle是上一步創建的HSSFCellStyle對象 

如此,整個需求基本完成。對于整個過程中需要用到的其他方法,這里寫了一個封裝類。

**  有些方法可能只適用此項目,使用時需要修改。

package com.pole.educate.excel;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Calendar;
import java.util.Date;

import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFCellStyle;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.hssf.util.HSSFColor;
import org.apache.poi.poifs.filesystem.POIFSFileSystem;
import org.apache.poi.ss.usermodel.RichTextString; 
/** 
 * 共分為六部完成根據模板導出excel操作:<br/> 
 * 第一步、設置excel模板路徑(setSrcPath)<br/> 
 * 第二步、設置要生成excel文件路徑(setDesPath)<br/> 
 * 第三步、設置模板中哪個Sheet列(setSheetName)<br/> 
 * 第四步、獲取所讀取excel模板的對象(getSheet)<br/> 
 * 第五步、設置數據(分為6種類型數據:setCellStrValue、setCellDateValue、setCellDoubleValue、setCellBoolValue、setCellCalendarValue、setCellRichTextStrValue)<br/> 
 * 第六步、完成導出 (exportToNewFile)<br/> 
 * 
 * @author Administrator 
 * 
 */ 
public class ExcelWriter {
  POIFSFileSystem fs = null; 
  HSSFWorkbook wb = null; 
  HSSFSheet sheet = null;
  HSSFCellStyle cellStyle = null;
  
  private String srcXlsPath = "";// excel模板路徑 
  private String desXlsPath = ""; // 生成路徑
  private String sheetName = ""; 

  /** 
   * 第一步、設置excel模板路徑 
   * @param srcXlsPaths 
   */ 
  public void setSrcPath(String srcXlsPaths) { 
    this.srcXlsPath = srcXlsPaths; 
  } 
 
  /** 
   * 第二步、設置要生成excel文件路徑 
   * @param desXlsPaths
   * @throws FileNotFoundException 
   */ 
  public void setDesPath(String desXlsPaths) throws FileNotFoundException { 
    this.desXlsPath = desXlsPaths;
  } 
 
  /** 
   * 第三步、設置模板中哪個Sheet列 
   * @param sheetName 
   */ 
  public void setSheetName(String sheetName) { 
    this.sheetName = sheetName; 
  } 
 
  /** 
   * 第四步、獲取所讀取excel模板的對象 
   */ 
  public void getSheet() { 
    try { 
      File fi = new File(srcXlsPath); 
      if(!fi.exists()){ 
        //System.out.println("模板文件:"+srcXlsPath+"不存在!"); 
        return; 
      } 
      fs = new POIFSFileSystem(new FileInputStream(fi)); 
      wb = new HSSFWorkbook(fs);
      sheet = wb.getSheet(sheetName); 
      
      //生成單元格樣式
      cellStyle = wb.createCellStyle();
      //設置背景顏色
      cellStyle.setFillForegroundColor(HSSFColor.RED.index);
      //solid 填充 foreground 前景色
      cellStyle.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);
      
    } catch (FileNotFoundException e) { 
      e.printStackTrace(); 
    } catch (IOException e) { 
      e.printStackTrace(); 
    } 
  } 
  /**
   * 
   */
  public HSSFRow createRow(int rowIndex) {
    HSSFRow row = sheet.createRow(rowIndex);
    return row;
  }
  /**
   * 
   */
  public void createCell(HSSFRow row,int colIndex) {
    row.createCell(colIndex);
  }
  /** 
   * 第五步、設置單元格的樣式 
   * @param rowIndex  行值 
   * @param cellnum  列值 
   */ 
  public void setCellStyle(int rowIndex, int cellnum) { 
    HSSFCell cell = sheet.getRow(rowIndex).getCell(cellnum); 
    cell.setCellStyle(cellStyle);
  }
  
  /** 
   * 第五步、設置字符串類型的數據 
   * @param rowIndex  行值 
   * @param cellnum  列值 
   * @param value    字符串類型的數據 
   */ 
  public void setCellStrValue(int rowIndex, int cellnum, String value) {
    if(value != null) {
      HSSFCell cell = sheet.getRow(rowIndex).getCell(cellnum); 
      cell.setCellValue(value);
    }
  } 
 
  /** 
   * 第五步、設置日期/時間類型的數據 
   * @param rowIndex  行值 
   * @param cellnum  列值 
   * @param value    日期/時間類型的數據 
   */ 
  public void setCellDateValue(int rowIndex, int cellnum, Date value) { 
    HSSFCell cell = sheet.getRow(rowIndex).getCell(cellnum); 
    cell.setCellValue(value); 
  } 
 
  /** 
   * 第五步、設置浮點類型的數據 
   * @param rowIndex  行值 
   * @param cellnum  列值 
   * @param value    浮點類型的數據 
   */ 
  public void setCellDoubleValue(int rowIndex, int cellnum, double value) { 
    HSSFCell cell = sheet.getRow(rowIndex).getCell(cellnum); 
    cell.setCellValue(value); 
  } 
 
  /** 
   * 第五步、設置Bool類型的數據 
   * @param rowIndex  行值 
   * @param cellnum  列值 
   * @param value    Bool類型的數據 
   */ 
  public void setCellBoolValue(int rowIndex, int cellnum, boolean value) { 
    HSSFCell cell = sheet.getRow(rowIndex).getCell(cellnum); 
    cell.setCellValue(value); 
  } 
 
  /** 
   * 第五步、設置日歷類型的數據 
   * @param rowIndex  行值 
   * @param cellnum  列值 
   * @param value    日歷類型的數據 
   */ 
  public void setCellCalendarValue(int rowIndex, int cellnum, Calendar value) { 
    HSSFCell cell = sheet.getRow(rowIndex).getCell(cellnum); 
    cell.setCellValue(value); 
  } 
 
  /** 
   * 第五步、設置富文本字符串類型的數據。可以為同一個單元格內的字符串的不同部分設置不同的字體、顏色、下劃線 
   * @param rowIndex  行值 
   * @param cellnum  列值 
   * @param value    富文本字符串類型的數據 
   */ 
  public void setCellRichTextStrValue(int rowIndex, int cellnum, 
      RichTextString value) { 
    HSSFCell cell = sheet.getRow(rowIndex).getCell(cellnum); 
    cell.setCellValue(value); 
  } 
  
  /** 
   * 第六步、完成導出 
   */ 
  public void exportToNewFile() { 
    FileOutputStream out; 
    try { 
      out = new FileOutputStream(desXlsPath); 
      wb.write(out);
      out.close(); 
    } catch (FileNotFoundException e) { 
      e.printStackTrace(); 
    } catch (IOException e) { 
      e.printStackTrace(); 
    } 
  } 

}

以上就是EXCEL文件軟件利用POI模板導出,小編相信有部分知識點可能是我們日常工作會見到或用到的。希望你能通過這篇文章學到更多知識。更多詳情敬請關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

梓潼县| 滦南县| 昂仁县| 天峻县| 察隅县| 龙陵县| 陇西县| 临高县| 育儿| 拉萨市| 原阳县| 商都县| 兴隆县| 澄江县| 青神县| 蓬溪县| 沙田区| 霍林郭勒市| 仁怀市| 根河市| 邹城市| 滨海县| 哈尔滨市| 奉贤区| 科技| 邮箱| 岳普湖县| 思南县| 调兵山市| 泾川县| 安新县| 晋州市| 百色市| 南昌县| 龙南县| 泊头市| 济阳县| 龙海市| 云浮市| 讷河市| 沙雅县|