关于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();
}
}
color | org.apache.poi.hssf.util.HSSFColor$GREY_80_PERCENT@1aadbf7 |
color | org.apache.poi.hssf.util.HSSFColor$INDIGO@4f4458 |
color | org.apache.poi.hssf.util.HSSFColor$PLUM@100c56 |
color | org.apache.poi.hssf.util.HSSFColor$BROWN@19a1fae |
color | org.apache.poi.hssf.util.HSSFColor$OLIVE_GREEN@1960c9e |
color | org.apache.poi.hssf.util.HSSFColor$DARK_GREEN@168f39 |
color | org.apache.poi.hssf.util.HSSFColor$SEA_GREEN@11525cd |
color | org.apache.poi.hssf.util.HSSFColor$DARK_TEAL@164e67f |
color | org.apache.poi.hssf.util.HSSFColor$GREY_40_PERCENT@158cfda |
color | org.apache.poi.hssf.util.HSSFColor$BLUE_GREY@1b613c0 |
color | org.apache.poi.hssf.util.HSSFColor$ORANGE@cae1b3 |
color | org.apache.poi.hssf.util.HSSFColor$LIGHT_ORANGE@1a7e798 |
color | org.apache.poi.hssf.util.HSSFColor$GOLD@55d1ef |
color | org.apache.poi.hssf.util.HSSFColor$LIME@49b9ad |
color | org.apache.poi.hssf.util.HSSFColor$AQUA@3d0f0e |
color | org.apache.poi.hssf.util.HSSFColor$LIGHT_BLUE@a7624e |
color | org.apache.poi.hssf.util.HSSFColor$TAN@1271218 |
color | org.apache.poi.hssf.util.HSSFColor$LAVENDER@150b2d |
color | org.apache.poi.hssf.util.HSSFColor$ROSE@190c9dc |
color | org.apache.poi.hssf.util.HSSFColor$PALE_BLUE@b4bc8e |
color | org.apache.poi.hssf.util.HSSFColor$LIGHT_YELLOW@1c74456 |
color | org.apache.poi.hssf.util.HSSFColor$LIGHT_GREEN@15783a2 |
color | org.apache.poi.hssf.util.HSSFColor$LIGHT_TURQUOISE@830993 |
color | org.apache.poi.hssf.util.HSSFColor$SKY_BLUE@e99642 |
color | org.apache.poi.hssf.util.HSSFColor$BLUE@187f194 |
color | org.apache.poi.hssf.util.HSSFColor$TEAL@55f9f |
color | org.apache.poi.hssf.util.HSSFColor$DARK_RED@c8e08f |
color | org.apache.poi.hssf.util.HSSFColor$VIOLET@edd19 |
color | org.apache.poi.hssf.util.HSSFColor$TURQUOISE@1d5c7a1 |
color | org.apache.poi.hssf.util.HSSFColor$YELLOW@252119 |
color | org.apache.poi.hssf.util.HSSFColor$PINK@19ff062 |
color | org.apache.poi.hssf.util.HSSFColor$DARK_BLUE@15eb4d0 |
color | org.apache.poi.hssf.util.HSSFColor$LIGHT_CORNFLOWER_BLUE@b0e84b |
color | org.apache.poi.hssf.util.HSSFColor$ROYAL_BLUE@62a19d |
color | org.apache.poi.hssf.util.HSSFColor$CORAL@16075b3 |
color | org.apache.poi.hssf.util.HSSFColor$ORCHID@1cf46c2 |
color | org.apache.poi.hssf.util.HSSFColor$LIGHT_TURQUOISE@12e8a41 |
color | org.apache.poi.hssf.util.HSSFColor$LEMON_CHIFFON@76ec7a |
color | org.apache.poi.hssf.util.HSSFColor$PLUM@19f7952 |
color | org.apache.poi.hssf.util.HSSFColor$CORNFLOWER_BLUE@d60cdd |
color | org.apache.poi.hssf.util.HSSFColor$GREY_50_PERCENT@e6bc11 |
color | org.apache.poi.hssf.util.HSSFColor$GREY_25_PERCENT@452267 |
color | org.apache.poi.hssf.util.HSSFColor$TEAL@d5b614 |
color | org.apache.poi.hssf.util.HSSFColor$VIOLET@a4e3ae |
color | org.apache.poi.hssf.util.HSSFColor$DARK_YELLOW@15fd4a3 |
color | org.apache.poi.hssf.util.HSSFColor$DARK_BLUE@8137c9 |
color | org.apache.poi.hssf.util.HSSFColor$GREEN@1757596 |
color | org.apache.poi.hssf.util.HSSFColor$DARK_RED@7ad4d5 |
color | org.apache.poi.hssf.util.HSSFColor$TURQUOISE@2aee3f |
color | org.apache.poi.hssf.util.HSSFColor$PINK@7f788b |
color | org.apache.poi.hssf.util.HSSFColor$YELLOW@c311d5 |
color | org.apache.poi.hssf.util.HSSFColor$BLUE@c7e580 |
color | org.apache.poi.hssf.util.HSSFColor$BRIGHT_GREEN@1ac55ac |
color | org.apache.poi.hssf.util.HSSFColor$RED@12cc460 |
color | org.apache.poi.hssf.util.HSSFColor$WHITE@10ad7e |
color | org.apache.poi.hssf.util.HSSFColor$BLACK@ee336f |