Java使用Apache POI導(dǎo)出Excel

1.POI簡單介紹

Apache POI 是用Java 編寫的免費(fèi)開源的跨平臺(tái)的 Java API面睛,Apache POI提供API給Java程式對 Microsoft Office 格式檔案讀和寫的功能

  • HSSF 提供讀寫Microsoft Excel XLS格式檔案的功能。
  • XSSF 提供讀寫Microsoft Excel OOXML XLSX格式檔案的功能忆某。
  • HWPF 提供讀寫Microsoft Word DOC格式檔案的功能统捶。
  • HSLF 提供讀寫Microsoft PowerPoint格式檔案的功能顶捷。
  • HDGF 提供讀Microsoft Visio格式檔案的功能蝶念。
  • HPBF 提供讀Microsoft Publisher格式檔案的功能。
  • HSMF 提供讀Microsoft Outlook格式檔案的功能堤尾。

2.步驟

  • 1.環(huán)境配置:導(dǎo)入jar包
<dependency>
      <groupId>org.apache.poi</groupId>
      <artifactId>poi</artifactId>
      <version>3.16</version>
</dependency>
  • 2.創(chuàng)建一個(gè)Excel工作簿
 @Test
    public  void test() throws IOException {
        //定義一個(gè)工作蒲
        Workbook wb = new HSSFWorkbook();
        //定義一個(gè)輸出流
        FileOutputStream fileOutputStream = new FileOutputStream("/home/ubuntu/Desktop/Excel工作蒲.xls");
        //寫入在輸出流
        wb.write(fileOutputStream);
        //關(guān)閉輸出流
        fileOutputStream.close();
    }
  • 3.創(chuàng)建一個(gè)sheet頁
   @Test
    public void sheet() throws IOException {
        //定義一個(gè)工作蒲
        Workbook wb = new HSSFWorkbook();
        //創(chuàng)建sheet頁面
        wb.createSheet("第一個(gè)sheet頁");
        wb.createSheet("第二個(gè)sheet頁");

        //定義一個(gè)輸出流
        FileOutputStream fileOutputStream = new FileOutputStream("/home/ubuntu/Desktop/Excel工作蒲帶有sheet頁.xls");
        //寫入在輸出流
        wb.write(fileOutputStream);
        //關(guān)閉輸出流
        fileOutputStream.close();
    }
sheet頁
  • 4.創(chuàng)建行和列
 @Test
    public void row() throws IOException {
        //定義一個(gè)工作蒲
        Workbook wb = new HSSFWorkbook();
        //創(chuàng)建sheet頁面
        Sheet sheet = wb.createSheet("學(xué)生信息sheet頁");
        //創(chuàng)建一行
        Row row = sheet.createRow(0);
        //創(chuàng)建一個(gè)單元格
        Cell cell =null;
        for(int i = 0 ;i<5;i++){
            row.createCell(i).setCellValue("寫入信息:單元格內(nèi)容"+i);
        }
        //定義一個(gè)輸出流
        FileOutputStream fileOutputStream = new FileOutputStream("/home/ubuntu/Desktop/Excel學(xué)生信息.xls");
        //寫入在輸出流
        wb.write(fileOutputStream);
        //關(guān)閉輸出流
        fileOutputStream.close();
    }
  • 5.創(chuàng)建一個(gè)時(shí)間樣式到Excel
 @Test
    public void date() throws IOException {
        //定義一個(gè)工作蒲
        Workbook wb = new HSSFWorkbook();
        //創(chuàng)建sheet頁面
        Sheet sheet = wb.createSheet("時(shí)間sheet頁");
        //創(chuàng)建一行
        Row row = sheet.createRow(0);
        //創(chuàng)建一個(gè)單元格
        Cell cell = row.createCell(0);
        cell.setCellValue(new Date());

        CreationHelper creationHelper = wb.getCreationHelper();
        //設(shè)置單元格樣式
        CellStyle cellStyle = wb.createCellStyle();
        cellStyle.setDataFormat(creationHelper.createDataFormat().getFormat("YYYY-MM-DD hh:mm:ss"));
        cell = row.createCell(1);
        cell.setCellValue(new Date());
        //設(shè)置日期樣式
        cell.setCellStyle(cellStyle);

        //定義一個(gè)輸出流
        FileOutputStream fileOutputStream = new FileOutputStream("/home/ubuntu/Desktop/Excel日期格式.xls");
        //寫入在輸出流
        wb.write(fileOutputStream);
        //關(guān)閉輸出流
        fileOutputStream.close();
    }
  • 6.單元格對其方式及行高
@Test
    public void style() throws IOException {
        //定義一個(gè)工作蒲
        Workbook wb = new HSSFWorkbook();
        //創(chuàng)建sheet頁面
        Sheet sheet = wb.createSheet("第一個(gè)sheet");
        //創(chuàng)建一行
        Row row = sheet.createRow(0);
        //設(shè)置行高
        row.setHeightInPoints(30);
        //創(chuàng)建一個(gè)單元格
        createCell(wb,row,(short)0,HSSFCellStyle.ALIGN_CENTER,HSSFCellStyle.VERTICAL_BOTTOM);
        createCell(wb,row,(short)1,HSSFCellStyle.ALIGN_JUSTIFY,HSSFCellStyle.VERTICAL_CENTER);
        createCell(wb,row,(short)2,HSSFCellStyle.ALIGN_CENTER_SELECTION,HSSFCellStyle.VERTICAL_JUSTIFY);

        //定義一個(gè)輸出流
        FileOutputStream fileOutputStream = new FileOutputStream("/home/ubuntu/Desktop/Excel樣式.xls");
        //寫入在輸出流
        wb.write(fileOutputStream);
        //關(guān)閉輸出流
        fileOutputStream.close();
    }

    /**
     * 創(chuàng)建一個(gè)單元格設(shè)置對應(yīng)的對其方式
     * @param workbook 工作蒲
     * @param row 行
     * @param column 列
     */
    private static void createCell(Workbook workbook, Row row, short column,short halign,short valign){
        Cell cell = row.createCell(column);//創(chuàng)建單元格
        cell.setCellValue(new HSSFRichTextString("我是富文本"));//設(shè)置值
        CellStyle cellStyle = workbook.createCellStyle();//創(chuàng)建樣式
        cellStyle.setAlignment(halign);//設(shè)置單元格水平方向?qū)ζ浞绞?        cellStyle.setVerticalAlignment(valign);//設(shè)置單元格垂直方向?qū)ζ浞绞?        cell.setCellStyle(cellStyle);
    }

合并單元格

 @Test
    public void test1() throws IOException {
        //定義一個(gè)工作蒲
        Workbook wb = new HSSFWorkbook();
        //創(chuàng)建sheet頁面
        Sheet sheet = wb.createSheet("第一個(gè)sheet");
        //創(chuàng)建一行
        Row row = sheet.createRow(1);
        //設(shè)置行高
        row.setHeightInPoints(30);
        //創(chuàng)建一個(gè)單元格
        Cell cell = row.createCell(1);
        cell.setCellValue("合并單元格");
        //合并單元格(起始行,結(jié)束行,起始列,結(jié)束列)
        sheet.addMergedRegion(new CellRangeAddress(1,2,1,2));

        //定義一個(gè)輸出流
        FileOutputStream fileOutputStream = new FileOutputStream("/home/ubuntu/Desktop/Excel樣式.xls");
        //寫入在輸出流
        wb.write(fileOutputStream);
        //關(guān)閉輸出流
        fileOutputStream.close();
    }
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末肝劲,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子郭宝,更是在濱河造成了極大的恐慌辞槐,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,036評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件粘室,死亡現(xiàn)場離奇詭異榄檬,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)衔统,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,046評論 3 395
  • 文/潘曉璐 我一進(jìn)店門鹿榜,熙熙樓的掌柜王于貴愁眉苦臉地迎上來海雪,“玉大人,你說我怎么就攤上這事舱殿“侣悖” “怎么了?”我有些...
    開封第一講書人閱讀 164,411評論 0 354
  • 文/不壞的土叔 我叫張陵怀薛,是天一觀的道長刺彩。 經(jīng)常有香客問我,道長枝恋,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,622評論 1 293
  • 正文 為了忘掉前任嗡害,我火速辦了婚禮焚碌,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘霸妹。我一直安慰自己十电,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,661評論 6 392
  • 文/花漫 我一把揭開白布叹螟。 她就那樣靜靜地躺著鹃骂,像睡著了一般。 火紅的嫁衣襯著肌膚如雪罢绽。 梳的紋絲不亂的頭發(fā)上畏线,一...
    開封第一講書人閱讀 51,521評論 1 304
  • 那天,我揣著相機(jī)與錄音良价,去河邊找鬼寝殴。 笑死,一個(gè)胖子當(dāng)著我的面吹牛明垢,可吹牛的內(nèi)容都是我干的蚣常。 我是一名探鬼主播,決...
    沈念sama閱讀 40,288評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼痊银,長吁一口氣:“原來是場噩夢啊……” “哼抵蚊!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起溯革,我...
    開封第一講書人閱讀 39,200評論 0 276
  • 序言:老撾萬榮一對情侶失蹤贞绳,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后鬓照,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體熔酷,經(jīng)...
    沈念sama閱讀 45,644評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,837評論 3 336
  • 正文 我和宋清朗相戀三年豺裆,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了拒秘。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片号显。...
    茶點(diǎn)故事閱讀 39,953評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖躺酒,靈堂內(nèi)的尸體忽然破棺而出押蚤,到底是詐尸還是另有隱情,我是刑警寧澤羹应,帶...
    沈念sama閱讀 35,673評論 5 346
  • 正文 年R本政府宣布揽碘,位于F島的核電站,受9級特大地震影響园匹,放射性物質(zhì)發(fā)生泄漏雳刺。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,281評論 3 329
  • 文/蒙蒙 一裸违、第九天 我趴在偏房一處隱蔽的房頂上張望掖桦。 院中可真熱鬧,春花似錦供汛、人聲如沸枪汪。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,889評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽雀久。三九已至,卻和暖如春趁舀,著一層夾襖步出監(jiān)牢的瞬間赖捌,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,011評論 1 269
  • 我被黑心中介騙來泰國打工赫编, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留巡蘸,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,119評論 3 370
  • 正文 我出身青樓擂送,卻偏偏與公主長得像悦荒,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子嘹吨,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,901評論 2 355

推薦閱讀更多精彩內(nèi)容