您的位置:首页 > 编程语言 > Java开发

[个人总结]Java生成Excel文件

2009-10-11 15:09 197 查看
 

个人总结说白了东西就是给我自己看的。

 

 

 

 
//在struts中提供国际化支持
boolean ishk = false;
Locale locale = (Locale) request.getSession().getAttribute(Globals.LOCALE_KEY);
if (locale != null && locale == Locale.TRADITIONAL_CHINESE) {
ishk = true;
}

POIFSFileSystem fis;
HSSFWorkbook book;
HSSFSheet sheet;
HSSFRow row;
HSSFCell cell;
int sheetId = 1;
String sheetName = "sheet1";
String filePath = CoreUtils.getSystemResourceMapped(request);
fis = new POIFSFileSystem(new FileInputStream(filePath+ "excel/bomlist2.xls"));
//读取Excel模板
book = new HSSFWorkbook(fis);
sheet = book.cloneSheet(0);
book.setSheetName(sheetId, sheetName);
//以下为在Excel模板中写入数据前得到Cell的位置 注意这里的getRow 1 creatCell 2 均从0开始
row = sheet.getRow((short) 1);
cell = row.createCell((short)2);
//这里使用create 而不是 getCell 原因为:这个Cell在模板中是空的,就是什么都没有。如果getCell 就会出现问题。
//写入数值
CoreUtils.setCellValue(cell, ishk, bomversion.getPartno());

//在Excel文件中加入JPG图片
ByteArrayOutputStream byteArrayOut = new ByteArrayOutputStream();
BufferedImage bufferImg = ImageIO.read(new File(filePath + "excel/changyi.jpg"));
ImageIO.write(bufferImg, "JPG", byteArrayOut);
HSSFClientAnchor anchor = new HSSFClientAnchor(0, 0, 186, 15,(short) 0, 0, (short) 3,1);
HSSFPatriarch patri = sheet.createDrawingPatriarch();
patri.createPicture(anchor, book.addPicture(byteArrayOut
.toByteArray(), HSSFWorkbook.PICTURE_TYPE_JPEG));


 

 

其中在CoreUtils中静态方法setCellValue的定义:格式转换与中文支持。
public static void setCellValue(HSSFCell cell, boolean ishk, Object val) {
cell.setEncoding(HSSFCell.ENCODING_UTF_16);
if (val instanceof Number) {
cell.setCellValue(((Number) val).doubleValue());
} else if (val instanceof Date) {
cell.setCellValue((Date) val);
} else {
cell.setEncoding(HSSFCell.ENCODING_UTF_16);
if (ishk) {
cell.setCellValue(EncodingTranslate.convertString(CoreUtils.formatString(val), Encoding.GB2312, Encoding.BIG5));
} else {
cell.setCellValue(CoreUtils.formatString(val));
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息