當您輸入電子信箱、訂閱本公司之「電子報」時,我們會向您蒐集、處理、利用的個資為您的「電子信箱」以及「提交日期」,當您輸入電子信箱並送出時,即表示您同意我們使用您的個資,為保障您的權益,關於更多相關政策更新資訊,請務必閱讀我們的「
隱私權政策
」、「
使用條款
」及「
免責聲明
」。如您不同意本網站之「隱私權政策」、「使用條款」及「 免責聲明」,您可以隨時「
取消訂閱
」,謝謝您。
使用Web專案開發,難免會遇到要使用各種Microsoft 文件,處理E
xcel及其他Microsoft文件常用的就是Apache POI
。
載點
http://www.apache.org/dyn/closer.cgi/poi/
POI 3.2-FINAL Released (2008-10-19)是穩定的版本,支援office 2000以下格式
POI 3.5 beta 6, and Office Open XML Support (2009-06-22),支援更新的office及open xml格式
介紹與說明
在此介紹插入圖片有兩種方式
1.插入圖片至座標
public
class
TestExcel{
public
void
insertImage
throws
IOException, WriterException {
OutputStream
outStream
=
null
;
BufferedImage
bufferImg
=
null
;
ByteArrayOutputStream
outByteStream
=
null
;
//excel名稱
String
excelName
=
"pic.xls"
;
//在excel中建立活頁簿
HSSFWorkbook
workbook
=
new
HSSFWorkbook();
//建立新的sheet
HSSFSheet
sheet
=
workbook
.createSheet(
"圖片測試"
);
//建立輸出流stream
ByteArrayOutputStream
byteArrayOut
=
new
ByteArrayOutputStream();
bufferImg
=ImageIO.read(
new
File(
"/Users/zhangjiaxiang/Desktop/cat.jpg"
));
//寫入圖片
ImageIO.write(
bufferImg
,
"png"
,
byteArrayOut
);
byteArrayOut
.flush();
byteArrayOut
.close();
//圖畫的管理器,一個sheet只能獲取一個
HSSFPatriarch
patriarch
=
sheet
.createDrawingPatriarch();
//指定圖片位置
HSSFClientAnchor anchor = new HSSFClientAnchor(0, 0, 0, 0,(short)0, (short)0, (short) 4, (short)4);
//插入圖片
patriarch
.createPicture(
anchor
,
workbook
.addPicture(
byteArrayOut
.toByteArray(), HSSFWorkbook.
PICTURE_TYPE_PNG
));
outByteStream
=
new
ByteArrayOutputStream();
outStream
=
response
.getOutputStream();
response
.setContentType(
"application/ms-excel"
);
workbook
.write(
outStream);
Demo畫面
2.將圖片插入至單元格
// 插入圖片至Excel
String fileName =
/Users/zhangjiaxiang/Desktop/cat.jpg
;
InputStream is = new FileInputStream(fileName);
byte[] bytes = IOUtils.toByteArray(is);
int pictureIdx = workbook.addPicture(bytes, Workbook.PICTURE_TYPE_PNG);
CreationHelper helper = workbook.getCreationHelper();
Drawing drawing = sheet.createDrawingPatriarch();
ClientAnchor anchor = helper.createClientAnchor();
// 圖片插入座標
anchor.setCol1(0);
anchor.setRow1(0);
// 插入圖片
Picture pict = drawing.createPicture(anchor, pictureIdx);
//圖片重新定義大小
pict.resize();