天天看點

關于用POI和EXCEL互動的問題

廢話不多說,直接通過例子來說明poi的使用:

1.一個建立excel并寫入資料的小例子,參照網上的一個例子:

2.自己project中用到的

---------------------------------------------------------------------------------------------------------------------------------------------

總結如下:

1.想下載下傳前詢問(是打開檔案還是儲存到計算機)和通過ie浏覽器直接選擇相關應用程式插件打開兩種方式:

  ①response.setheader("content-disposition","attachment;filename="+

"example.xls" );

  ②response.setheader("content-disposition",

"inline; filename=" + fliename)

  目前用過的是第一種,第二種有待測試。

2.為防止導出的檔案名出現亂碼,需要對檔案名進行uri解碼,可以添加如下設定

httpservletresponse response = servletactioncontext.getresponse();

     string name = new string(filename.getbytes("gbk"),

"iso8859_1");

     response.setheader("content-disposition",

"attachment;filename=" + name );

  上面的第二行string()的函數檢視api用法如下:

<code>(byte[] bytes,  charset)</code> 

          通過使用指定的  解碼指定的 byte 數組,構造一個新的 <code>string</code>。

3.導出的excel格式的設定問題,今天下午想把導出的excel的第一行第一列單元格的背景色設定顔色,試了好多次,确實有點坑爹,設定如下:

     hssfcellstyle

cellstyle =

workbook.createcellstyle();

cellstyle.setfillbackgroundcolor(hssfcolor.light_turquoise.index);//設定背景色

   cell.setcellstyle(cellstyle);

除了添加上面幾句,别忘了,需要在第二條語句下面添加下面的一句來将單元格填充,要不然沒效果:

   

cellstyle.setfillpattern(hssfcellstyle.solid_foreground);

但是設定成這樣子後,導出的excel單元格是黑色。試了好多次,發現了,用錯方法了,第二條語句不應該是背景色,而是前景色!

   cellstyle.setfillforegroundcolor(hssfcolor.light_green.index);//設定前景色

 ok,這樣子導出後,excel單元格有背景色了。但是,我想把某一列的寬度設定大一點

     

sheet.setcolumnwidth(0, 4000);

   感覺4000資料太大?但展示出來後不大,單元格寬度變長了,滿足需求。也算是提供一個參考值。第一個參數表示設定第幾列(從0開始),第二個參數表示設定的寬度大小。也不知道 這個數值設定大小有什麼規律,反正我是沒找出來,設定為負數結果寬度變的很大很大。

    

當然也可以将所有列的寬度都設定大一點,可以用下面的方法

sheet.setdefaultcolumnwidth(12);  //設定為12位元組的寬度

但我是隻是把某一列的寬度設定大點,是以上面的方法不合适。

參考文檔連接配接: