关于POI
来源:互联网 发布:老外的网络用语 编辑:程序博客网 时间:2024/06/06 02:30
关于POI
由于jxl.jar,不支持图片导入,除了png格式的 使用起来有时候不是很方便,但poi就可以支持很多图片格式
使用poi jar包那是必须下载的,一定要下3.0以上版本的,2.5版本不支持一些方法
工具小类
import java.awt.image.BufferedImage;
import java.io.ByteArrayOutputStream;
import javax.imageio.ImageIO;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFCellStyle;
import org.apache.poi.hssf.usermodel.HSSFClientAnchor;
import org.apache.poi.hssf.usermodel.HSSFPatriarch;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
public class PoiUtils {
public void cteateCell(HSSFWorkbook wb,HSSFRow row,short col,String val){
HSSFCell cell=row.createCell(col);
cell.setEncoding(HSSFCell.ENCODING_UTF_16);
cell.setCellValue(val);
cell.setCellStyle(fontstyle_six(wb));
}
// 自定义的方法,插入某个图片到指定索引的位置 column--列, index--几个格
public static void insertImage(HSSFWorkbook wb, HSSFPatriarch pa,
byte[] data, short col1, int row1, short col2, int row2) {
HSSFClientAnchor anchor = new HSSFClientAnchor(0, 0, 1023, 255, col1, row1, col2, row2);
anchor.setAnchorType(2);
pa.createPicture(anchor, wb.addPicture(data, HSSFWorkbook.PICTURE_TYPE_JPEG));
}
//从图片里面得到字节数组
public static byte[] getImageData(BufferedImage bi){
try{
ByteArrayOutputStream bout=new ByteArrayOutputStream();
ImageIO.write(bi,"PNG",bout);
return bout.toByteArray();
}catch(Exception exe){
exe.printStackTrace();
return null;
}
}
//填充颜色以及设置边框样式
public HSSFCellStyle fontstyle_six(HSSFWorkbook wb){
//设置样式
HSSFCellStyle style = wb.createCellStyle();
style.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);//垂直
style.setAlignment(HSSFCellStyle.ALIGN_CENTER);//水平
style.setFillForegroundColor(HSSFColor.TEAL.index);
style.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);
style.setBorderBottom(HSSFCellStyle.BORDER_THIN);
style.setBottomBorderColor(HSSFColor.GREY_25_PERCENT.index);
style.setBorderLeft(HSSFCellStyle.BORDER_THIN);
style.setLeftBorderColor(HSSFColor.GREY_25_PERCENT.index);
style.setBorderRight(HSSFCellStyle.BORDER_THIN);
style.setRightBorderColor(HSSFColor.GREY_25_PERCENT.index);
style.setBorderTop(HSSFCellStyle.BORDER_THIN);
style.setTopBorderColor(HSSFColor.GREY_25_PERCENT.index);
style.setAlignment(HSSFCellStyle.ALIGN_CENTER);
//生成一个字体样式
HSSFFont font = wb.createFont();
font.setColor(HSSFColor.BLACK.index);//字体颜色黑色
font.setFontHeightInPoints((short)12);//字体size
font.setFontName("宋体");//字体为宋体
style.setFont(font);
return style;
}
}
//下载excel 方法
public ActionForward down(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
String fname = new String("信息查询".getBytes("GB2312"), "ISO_8859_1")+MyTools.getSimpleDate(); //导出的文件名,使用转换,不会乱码
List<Map> glst = gDao.quertdown_o(map);//数据库查出的一个list集合
OutputStream os = response.getOutputStream();// 取得输出流
response.reset();// 清空输出流
response.setHeader("Content-disposition", "attachment; filename="+ fname + ".xls");// 设定输出文件头,该方法有两个参数,分别表示应答头的名字和值。
response.setContentType("application/msexcel");// 定义输出类型
HSSFWorkbook wb = new HSSFWorkbook();
HSSFSheet sheet=wb.createSheet("sheet");
HSSFPatriarch patriarch = sheet.createDrawingPatriarch();
HSSFRow row = sheet.createRow((short)0);
sheet.createFreezePane(0,1);
PoiUtils poiutils = new PoiUtils();
poiutils.cteateCell(wb,row,(short)0,"商品图");
poiutils.cteateCell(wb,row,(short)1,"库存编号");
poiutils.cteateCell(wb,row,(short)2,"商品名");
poiutils.cteateCell(wb,row,(short)3,"单位");
poiutils.cteateCell(wb,row,(short)4,"库存数量");
poiutils.cteateCell(wb,row,(short)5,"零售价");
poiutils.cteateCell(wb,row,(short)6,"金额总计");
for(int i = 0; i< glst.size();i++){
HSSFRow row2 = sheet.createRow((short)(i+1));
row2.setHeightInPoints(70);//excel行高
sheet.setDefaultColumnWidth((short) (15));//excel行宽
Iterator iter = glst.get(i).entrySet().iterator();
int j = 0;
while (iter.hasNext()) {
Map.Entry entry = (Map.Entry) iter.next();
if(j == 0){
File file = new File(servlet.getServletContext().getRealPath("/")+"/"+entry.getValue().toString());
if(file.exists()){
poiutils.insertImage(wb,patriarch,poiutils.getImageData(ImageIO.read(file)), (short)0, i+1, (short) 0, i+1);
}else{
poiutils.cteateCell(wb,row2,(short)j,"");
}
}else{
poiutils.cteateCell(wb,row2,(short)j,(entry.getValue().toString()));
}
j = j+1;
}
}
wb.write(os);
os.flush();
os.close();
}
}
- 关于POI
- 关于POI的使用方法
- 关于Apache POI
- 关于poi导出Excel
- 关于POI操作Excel
- 关于POI处理EXCEL
- 关于POI导出表格
- 关于POI读取excel
- 关于POI导入导出Excel
- 关于POI和JXL复制新体验
- 关于java POI包的相关操作
- 关于POI设置背景色的问题
- 关于POI的介绍请google一下!
- 关于java POI读取Excel2007流关不掉问题
- 关于使用POI实现excel导出
- POI中关于背景色的使用
- 关于POI读取EXCEL2003----2007问题
- 关于JAVA 用POI 导出Excel
- USB接口ID卡读卡器oem软件/读写卡测试程序及源代码/VB源代码
- 创建Oracle10g ASM数据库--创建ASM实例
- 去掉eclipse中的语法检查
- Mondrian初涉入门--运行自带演示程序FoodMart配置步骤
- 爱情
- 关于POI
- 编译FORTRAN程序提示:“编译器内部错误:段错误 请提交一份完整的错误报告”
- 走过那些是是非非
- 2011.6.18 图的理解
- 怎样把e.printStackTrace()这个异常保存到一个字符串变量中如:String str;
- CodeFile与CodeBehind的区别
- DOCTYPE html PUBLIC 指定了 HTML 文档遵循的文档类型定义
- frameset, iframe, frame框架页面出现横向滚动条bug的隐藏方法
- 纯CSS的下拉菜单 支持IE6 IE7 Firefox