1. 程式人生 > >POI對EXCEL的操作【重點:如何設定CELL格式為文字格式】

POI對EXCEL的操作【重點:如何設定CELL格式為文字格式】

轉載至:http://javacrazyer.iteye.com/blog/894758

實際開發過程中通常用到的就是從資料庫匯出EXCEL表格了,JXL可以這樣做,其實POI也可以(關於JXL與POI的異同可訪問我之前總結的文章),之前寫過POI對七種文件(當然也包括EXCEL)的內容讀取操作的文章,這次要寫的就非常重要了,就是開發中經常會用到的POI讀取資料庫匯出EXCEL的操作,所謂匯出EXCEL也就是生成帶資料內容的新的EXCEL檔案

目前的POI版本是3.7

下載地址:http://poi.apache.org/download.html#POI-3.7

 必須包只有一個:poi-3.7-20101029.jar


 整理思路:1)資料庫中的欄位對應EXCEL的最頂層一行各個CELL名稱[也就是上面圖片中序號版本...的]

                2)將每個資料一次插入到對應名稱CELL的對應記錄位置

                3)為了方便操作,頂層的cell各個名稱可以抽取出來成為一個單獨類

具體程式碼

   第一部分:單獨的EXCEL表頭類

 public class Cachetable {

Java程式碼  收藏程式碼
  1. // Fields  
  2. private int recnum;  
  3. private String devIp;  
  4. private String srcaddr;  
  5. private String dstaddr;  
  6. private String nexthop;  
  7. private String input;  
  8. private String output;  
  9. private String dpkts;  
  10. private String doctets;  
  11. private String sstart;  
  12. private String dstport;  
  13. private String prot;  
  14. private String tos;  
  15. private String srcas;  
  16. private String dstas;  
  17. private
     String pduversion;  
  18. /** default constructor */  
  19. public Cachetable() {  
  20. }  
  21. /** full constructor */  
  22. public Cachetable(int recnum, String devIp, String srcaddr, String dstaddr, String nexthop, String input, String output, String dpkts, String doctets, String sstart, String dstport, String prot, String tos, String srcas, String dstas,String pduversion) {  
  23.     this.recnum = recnum;  
  24.     this.devIp = devIp;  
  25.     this.srcaddr = srcaddr;  
  26.     this.dstaddr = dstaddr;  
  27.     this.nexthop = nexthop;  
  28.     this.input = input;  
  29.     this.output = output;  
  30.     this.dpkts = dpkts;  
  31.     this.doctets = doctets;  
  32.     this.sstart = sstart;  
  33.     this.dstport = dstport;  
  34.     this.prot = prot;  
  35.     this.tos = tos;  
  36.     this.srcas = srcas;  
  37.     this.dstas = dstas;  
  38.     this.pduversion = pduversion;  
  39. }  
  40. public int getRecnum() {  
  41.     return this.recnum;  
  42. }  
  43. public void setRecnum(int recnum) {  
  44.     this.recnum= recnum;  
  45. }  
  46. public String getDevIp() {  
  47.     return this.devIp;  
  48. }  
  49. public void setDevIp(String devIp) {  
  50.     this.devIp = devIp;  
  51. }  
  52. public String getSrcaddr() {  
  53.     return this.srcaddr;  
  54. }  
  55. public void setSrcaddr(String srcaddr) {  
  56.     this.srcaddr = srcaddr;  
  57. }  
  58. public String getDstaddr() {  
  59.     return this.dstaddr;  
  60. }  
  61. public void setDstaddr(String dstaddr) {  
  62.     this.dstaddr = dstaddr;  
  63. }  
  64. public String getNexthop() {  
  65.     return this.nexthop;  
  66. }  
  67. public void setNexthop(String nexthop) {  
  68.     this.nexthop = nexthop;  
  69. }  
  70. public String getInput() {  
  71.     return this.input;  
  72. }  
  73. public void setInput(String input) {  
  74.     this.input = input;  
  75. }  
  76. public String getOutput() {  
  77.     return this.output;  
  78. }  
  79. public void setOutput(String output) {  
  80.     this.output = output;  
  81. }  
  82. public String getDpkts() {  
  83.     return this.dpkts;  
  84. }  
  85. public void setDpkts(String dpkts) {  
  86.     this.dpkts = dpkts;  
  87. }  
  88. public String getDoctets() {  
  89.     return this.doctets;  
  90. }  
  91. public void setDoctets(String doctets) {  
  92.     this.doctets = doctets;  
  93. }  
  94. public String getSstart() {  
  95.     return this.sstart;  
  96. }  
  97. public void setSstart(String sstart) {  
  98.     this.sstart = sstart;  
  99. }  
  100. public String getDstport() {  
  101.     return this.dstport;  
  102. }  
  103. public void setDstport(String dstport) {  
  104.     this.dstport = dstport;  
  105. }  
  106. public String getProt() {  
  107.     return this.prot;  
  108. }  
  109. public void setProt(String prot) {  
  110.     this.prot = prot;  
  111. }  
  112. public String getTos() {  
  113.     return this.tos;  
  114. }  
  115. public void setTos(String tos) {  
  116.     this.tos = tos;  
  117. }  
  118. public String getSrcas() {  
  119.     return this.srcas;  
  120. }  
  121. public void setSrcas(String srcas) {  
  122.     this.srcas = srcas;  
  123. }  
  124. public String getDstas() {  
  125.     return this.dstas;  
  126. }  
  127. public void setDstas(String dstas) {  
  128.     this.dstas = dstas;  
  129. }  
  130. public String getPduversion() {  
  131.     return this.pduversion;  
  132. }  
  133. public void setPduversion(String pduversion) {  
  134.     this.pduversion = pduversion;  
  135. }  

第二部分:具體的POI操作生成EXCEL類

【我這裡只是個示例,沒連資料庫,直接執行即可,如果想連,稍微變動一點即可】

Java程式碼  收藏程式碼
  1. package com.zkyy.flow.excel;  
  2. import java.io.FileOutputStream;  
  3. import java.io.IOException;  
  4. import java.io.OutputStream;  
  5. import java.sql.SQLException;  
  6. import java.util.ArrayList;  
  7. import java.util.List;  
  8. import javax.swing.JOptionPane;  
  9. import org.apache.poi.hssf.usermodel.HSSFCell;  
  10. import org.apache.poi.hssf.usermodel.HSSFCellStyle;  
  11. import org.apache.poi.hssf.usermodel.HSSFDataFormat;  
  12. import org.apache.poi.hssf.usermodel.HSSFFooter;  
  13. import org.apache.poi.hssf.usermodel.HSSFHeader;  
  14. import org.apache.poi.hssf.usermodel.HSSFRow;  
  15. import org.apache.poi.hssf.usermodel.HSSFSheet;  
  16. import org.apache.poi.hssf.usermodel.HSSFWorkbook;  
  17. import com.kk.flow.webapp.util.Cachetable;  
  18. public class ExcelOut {     
  19.     //表頭     
  20.     public static final String[] tableHeader = {"序號","版本","接收時刻","裝置","入介面","出介面",     
  21.         "源IP","目的IP","下一跳","協議","埠","對端埠","TOS","源AS","目的AS","TCP_FLAG","pad1","pad2"};     
  22.     //建立工作本   TOS  
  23.     public static HSSFWorkbook demoWorkBook = new HSSFWorkbook();     
  24.     //建立表     
  25.     public static HSSFSheet demoSheet = demoWorkBook.createSheet("The World's 500 Enterprises");     
  26.     //表頭的單元格個數目     
  27.     public static final short cellNumber = (short)tableHeader.length;     
  28.     //資料庫表的列數     
  29.     public static final int columNumber = 1;     
  30.     /**   
  31.      * 建立表頭   
  32.      * @return   
  33.      */    
  34.     public static void createTableHeader()     
  35.     {     
  36.         HSSFHeader header = demoSheet.getHeader();     
  37.         header.setCenter("世界五百強企業名次表");     
  38.         HSSFRow headerRow = demoSheet.createRow((short0);     
  39.         for(int i = 0;i < cellNumber;i++)     
  40.         {     
  41.             HSSFCell headerCell = headerRow.createCell((short) i);    
  42.             headerCell.setCellType(HSSFCell.CELL_TYPE_STRING);  
  43.             headerCell.setCellValue(tableHeader[i]);     
  44.         }     
  45.     }     
  46.     /**   
  47.      * 建立行   
  48.      * @param cells   
  49.      * @param rowIndex   
  50.      */    
  51.     public static void createTableRow(List<String> cells,short rowIndex)     
  52.     {     
  53.         //建立第rowIndex行     
  54.         HSSFRow row = demoSheet.createRow((short) rowIndex);     
  55.         for(int i = 0;i < cells.size();i++)     
  56.         {     
  57.             //建立第i個單元格     
  58.             HSSFCell cell = row.createCell(i);   
  59.             if(cell.getCellType()!=1){  
  60.                 cell.setCellType(HSSFCell.CELL_TYPE_STRING);    
  61.             }  
  62.             //新增的四句話,設定CELL格式為文字格式  
  63.             HSSFCellStyle cellStyle2 = demoWorkBook.createCellStyle();  
  64.             HSSFDataFormat format = demoWorkBook.createDataFormat();  
  65.             cellStyle2.setDataFormat(format.getFormat("@"));  
  66.             cell.setCellStyle(cellStyle2);  
  67.             cell.setCellValue(cells.get(i));   
  68.             cell.setCellType(HSSFCell.CELL_TYPE_STRING);  
  69.         }    
  70.     }     
  71.     /** 
  72.      * USE:用於獲取Cachetable的資料。。。假資料。到時候:你連線資料庫的到List<Cachetable>的資料就行了。 共生成 
  73.      * 100條資料.相當於100行 
  74.      *  
  75.      * @return 
  76.      */  
  77.     public List<Cachetable> getDate() {  
  78.         List<Cachetable> cacheList = new ArrayList<Cachetable>();  
  79.         for (int j = 0; j < 300; j++) {  
  80.             Cachetable tb = new Cachetable();  
  81.             tb.setRecnum(j + 1);  
  82.             tb.setDevIp("JavaCrazyer");  
  83.             tb.setSrcaddr("北京");  
  84.             tb.setDstaddr("xxx");  
  85. 相關推薦

    POIEXCEL操作重點如何設定CELL格式文字格式

    轉載至:http://javacrazyer.iteye.com/blog/894758 實際開發過程中通常用到的就是從資料庫匯出EXCEL表格了,JXL可以這樣做,其實POI也可以(關於JXL與POI的異同可訪問我之前總結的文章),之前寫過POI對七種文件(當然也

    Web使用Apache poiEXCEL操作(匯入)

    第一次嘗試Web專案上傳Excel資料進行匯入 如果有哪裡做的不對不好或者有更好的方法請聯絡我,謝謝 pom.xml中新增         <!-- https://mvnrepository.com/artifact/org.apache.poi/poi --&

    Java POIExcel操作,專案開發中遇到的問題,及解決方案

    java POI官網地址,裡面有介紹POI的使用,以及各種例子程式碼:說下在專案開發中遇到的java操作Excel的棘手問題,以及解決方案:首先記下2007版及以上Excel版本(.xlsx)的檔案讀取、輸出程式碼:讀取:public static Workbook getT

    POIExcel操作——java儲存資料到Excel

    1、常見的java操作Excel API介紹 1.1 Java Aspose Cells Java Aspose Cells是一種純粹的Java授權的Excel API,開發和供應商Aspose釋出。這個API的最新版本是8.1.2,是一個豐富而厚重的API

    POIExcel進行讀取操作,工具類,便於操作資料

    一:首先POI對Excel 操作進行了一系列的封裝,匯入,匯出Excel這裡藉助於POI提供的jar包 專案當中匯入POI提供的Jar包,這裡使用Maven管理   進行匯入jar包   <!-- https://mvnrepository.c

    POI excel表格基本操作Demo

    今天熟悉了一下POI對excel的一些基本操作與大家分享一下 import java.io.FileOutputStream; import java.io.IOException; import org.apache.poi.hssf.usermodel.HSSFC

    使用poiexcel條件格式設定字型顏色使用自定義的顏色

    在poi中設定條件格式也是使用如下程式碼 XSSFSheetConditionalFormatting scf = target.getSheetConditionalFormatting(); //獲得條件格式物件 //紅色格式 XSSFConditionalFo

    POIExcel單元格進行顏色設置

    dex .so nbsp set exceptio except www span 單元格 POI對Excel單元格進行顏色設置 學習了:http://www.myexception.cn/program/1932587.html HSSFWorkbook workboo

    pythonexcel操作

    emp 取數 org sys 一個 sheet 索引 根據 通過 學習一下:原文鏈接:http://www.cnblogs.com/lhj588/archive/2012/01/06/2314181.html 一、安裝xlrd模塊 到python官網下載http://

    POIExcel自定義日期格式的讀取

    大數 -i ride 字符串 所有 sfc ats http 錯誤 cell.getCellStyle().getDataFormat();根據這個值進行時間、日期格式的判斷;POI讀取出來的結果也是有些變化的;需要在實際項目中進行確認; 時間格式的遍歷:

    POIExcel單元格內容修改

    // XLSX版本 const in= new Packages.java.io.FileInputStream("C:\\LJT\\test.xlsx"); const wb= Packages.org.apache.poi.xssf.usermodel.XSSFWorkbook("in"

    pythonexcel操作加分系統學生加分

    #這是一個給學生加分的小程式。需要提前把學生序號、姓名輸入到excel中,儲存為py.xls #每次可以輸入多個同學姓名,自動在表格內加1分。 import xlrd import xlwt from xlutils.copy import copy # as cp import time

    對於nutz框架的學習入門級使用——資料庫操作(例子數)

    在前三篇文章的基礎上 新建一個數據庫的操作類: package nutz.xyh.Module; import javax.servlet.http.HttpServletRequest; import org.nutz.dao.Dao; import org.nutz.ioc.loader

    poi設定excel預設格式文字

    /**設定單元格格式為文字格式*/ HSSFCellStyle textStyle = workBook.createCellStyle(); HSSFDataFormat format = workB

    poiExcel報表的自動化

           工作中經常會有一些daily的報告,每次的格式都是一樣的,來源也基本都是資料庫的表,每次要自己去貼上很麻煩。       嘗試過python以及sas等工具或者包,python的xlrd等系列不支援07以後的excel檔案,openpyxl在替換資料後容易莫名的

    JavaWEB--POIEXCEL操作、優化、封裝詳解系列(一)--概述與原理

    鑑於現在部落格混雜臃腫,對POI技術講解得十分不不充分,讓本博主在開發優化時遭遇諸多大坑,為了讓後人更好製作企業級報表,我將在這一系列詳細解說這個以及羅列我所遇到的諸多問題。並且基於強大的POI技術寫一個輔助工具庫給大家。 本系列的所有程式碼均可以直接執行,請

    POIEXCEL中時間格式資料的讀取

          1、Excel儲存日期、時間均以數值型別進行儲存,讀取時POI先判斷是是否是數值型別,再進行判斷,判斷數值:                 HSSFCell.CELL_TYPE_NUMERIC==cell.getCellType()        2.日期

    Python Pandas.DataFrameExcel操作

    對原文的精簡 感謝原文博主 讀入: 輸出是dataframe import pandas as pd excelFile = r’TEMP.xlsx’ df = pd.DataFrame(pd.read_excel(excelFile)) pri

    POIExcel的單元格格式區分

    圖中的資料有數值、貨幣、時間、日期、文字等格式。這些資料格式在POI中的HSSFDataFormat類裡都有相應的定義。 HSSFDataFormat是HSSF子專案裡面定義的一個類。類HSSFDataFormat允許使用者新建資料格式型別。HSSFDataFormat類包含靜態方法static java.

    使用poiExcel表的寫入修改,再匯出

    本文介紹將一個Excel檔案上傳後,修改Excel表中資料,再從新寫入到新的Excel表 1.使用myeclipse建立web工程, 2.新增struts2 使用struts2的分裝工具將檔案 上傳 3.匯入poi-3.0.2-FINAL-20080204.jar 4