注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

陈钟鸣的博客

独立之精神,自由之思想.

 
 
 

日志

 
 

POI写XLS文件  

2008-07-25 17:32:30|  分类: java |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
package poiWriter;

import java.awt.image.BufferedImage;
import java.io.ByteArrayOutputStream;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

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.HSSFFont;
import org.apache.poi.hssf.usermodel.HSSFPatriarch;
import org.apache.poi.hssf.usermodel.HSSFRichTextString;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;

public class PoiWriter {
    public static void main(String[] args) throws IOException {

        PoiWriter poi = new PoiWriter();

        /* data prepare */
        List list = new ArrayList();
        for (int i = 0; i <= 100; i++) {
            Map map = new HashMap();
            for (int j = 0; j < 10; j++) {

                map.put(String.valueOf(j), "value" + i);

            }

            list.add(map);
        }

        /* insert the list into xls */

        /* create a workbook */
        HSSFWorkbook wb = poi.createWorkBook();
        HSSFSheet sheet = poi.CreateSheet(wb, "sheet1");

        for (int i = 0; i < list.size(); i++) {

            /* add a new row */
            poi.createRow(sheet, (short) i);

            short j = -1;
            HSSFRow row = poi.createRow(sheet, (short) (i));

            Map map = (Map) list.get(i);
            java.util.Set tempkeys = map.keySet();
            java.util.Iterator keys = tempkeys.iterator();

            while (keys.hasNext()) {
                j++;
                String key = (String) keys.next();
                String str = (String) map.get(key);

                HSSFRichTextString text = new HSSFRichTextString(str);

                HSSFFont font = wb.createFont();

                font.setColor(HSSFFont.COLOR_RED);
                font.setFontName("HGP教科書体");
                font.setFontHeight((short) 160);

                text.applyFont(font);

                HSSFCellStyle style = wb.createCellStyle();
                style.setBorderBottom(HSSFCellStyle.BORDER_DOTTED);

                // ... (set it by yourself...)

                /* write a string to xls */
                poi.writeText(row, j, style, text);

            }// map
        }// list

        /* insert a image to workbook */
        FileInputStream fis = new FileInputStream("c:\\1.jpg");
        // 0,0,512,255
        poi.WriteImage(wb, sheet, fis, 0, 0, 512, 255, (short) 2, 30,
                (short) 10, 60);

        /* save as a xls file */
        FileOutputStream fos = new FileOutputStream("c:\\test.xls");
        poi.saveWorkBook(fos, wb);
        fos.flush();
        fos.close();
        fis.close();
    }

    /**
     * create a excle workbook
     *
     * @return
     */
    public HSSFWorkbook createWorkBook() {
        HSSFWorkbook wb = new HSSFWorkbook();
        return wb;
    }

    /**
     * open a xls file.
     *
     * @param fis
     * @return
     * @throws IOException
     */
    public HSSFWorkbook createWorkBook(FileInputStream fis) throws IOException {
        HSSFWorkbook wb = new HSSFWorkbook(fis);
        return wb;
    }

    /**
     * save the workbook to a file.
     *
     * @param fos
     * @param wb
     * @throws IOException
     */
    public void saveWorkBook(OutputStream fos, HSSFWorkbook wb)
            throws IOException {
        if (fos == null || wb == null)
            throw new IOException(
                    "Can not create the file.Because workbook or fileoutputstream is null.");
        wb.write(fos);
    }

    /**
     * create a new sheet in workbook.
     *
     * @param wb
     * @param sheetName
     * @return
     */
    public HSSFSheet CreateSheet(HSSFWorkbook wb, String sheetName) {
        if (wb == null)
            return null;

        HSSFSheet sheet = wb.createSheet(sheetName);
        return sheet;
    }

    /**
     * get a sheet from workbook using sheet name.
     *
     * @param wb
     * @param sheetName
     * @return
     */
    public HSSFSheet getSheet(HSSFWorkbook wb, String sheetName) {
        if (wb == null)
            return null;
        HSSFSheet sheet = wb.getSheet(sheetName);
        return sheet;
    }

    /**
     * write a image to the sheet.
     *
     * @param wb
     * @param sheet
     * @param fisImage
     * @param dx1
     * @param dy1
     * @param dx2
     * @param dy2
     * @param col1
     * @param row1
     * @param col2
     * @param row2
     * @throws IOException
     */
    public void WriteImage(HSSFWorkbook wb, HSSFSheet sheet,
            InputStream fisImage, int dx1, int dy1, int dx2, int dy2,
            short col1, int row1, short col2, int row2) throws IOException {

        BufferedImage bufferImg = null;
        bufferImg = ImageIO.read(fisImage);
        ByteArrayOutputStream byteArrayOut = new ByteArrayOutputStream();

        ImageIO.write(bufferImg, "jpg", byteArrayOut);

        HSSFPatriarch patriarch = sheet.createDrawingPatriarch();
        HSSFClientAnchor anchor = new HSSFClientAnchor(dx1, dy1, dx2, dy2,
                col1, row1, col2, row2);
        anchor.setAnchorType(2);
        wb.addPicture(byteArrayOut.toByteArray(),
                HSSFWorkbook.PICTURE_TYPE_JPEG);
        patriarch.createPicture(anchor, wb.addPicture(byteArrayOut
                .toByteArray(), HSSFWorkbook.PICTURE_TYPE_JPEG));

    }

    /**
     * create a row in a sheet.
     *
     * @param sheet
     * @param row
     * @return
     */
    public HSSFRow createRow(HSSFSheet sheet, int row) {
        HSSFRow sheetRow = sheet.createRow(row);
        return sheetRow;
    }

    /**
     * get a row from sheet.
     *
     * @param sheet
     * @param row
     * @return
     */
    public HSSFRow getRow(HSSFSheet sheet, int row) {
        HSSFRow sheetRow = sheet.getRow(row);
        return sheetRow;
    }

    /**
     * get a column from row
     *
     * @param row
     * @param col
     * @return
     */
    public HSSFCell getCell(HSSFRow row, short col) {
        return row.getCell(col);
    }

    public void writeText(HSSFRow row, short col, HSSFCellStyle style,
            HSSFRichTextString value) {
        // HSSFCell cell = row.getCell(col);
        HSSFCell cell = row.createCell(col);
        if (cell != null) {
            cell.setCellStyle(style);
            cell.setCellValue(value);
        } else {
            System.out.println("");
        }

    }

    /**
     * write a string value to cell
     *
     * @param cell
     * @param style
     * @param value
     */
    public void writeText(HSSFCell cell, HSSFCellStyle style,
            HSSFRichTextString value) {
        // HSSFCell cell = row.getCell(col);
        if (cell != null) {
            cell.setCellStyle(style);
            cell.setCellValue(value);
        } else {
            System.out.println("");
        }

    }

}

  评论这张
 
阅读(101)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017