highchar導出excel

highchar交互圖表導出excel
1.頁面獲取svg
Highcharts.SVGElement.prototype.fillSetter = Highcharts.SVGElement.prototype.strokeSetter = function (value, key, element) {
var colorObject;

        if (typeof value === 'string') {
            if (value.indexOf('rgba') === 0) {
                // Split it up
                colorObject = Highcharts.Color(value);
                element.setAttribute(key + '-opacity', colorObject.get('a'));
                element.setAttribute(key, colorObject.get('rgb'));
            } else {
                element.removeAttribute(key + '-opacity');
                element.setAttribute(key, value);
            }
        } else {
            this.colorGradient(value, key, element);
        }
    };

var chars = (‘#container’).highcharts();  
var svg = chars.getSVG();
(‘#svgVal’).val(svg);

2.後臺轉換爲jpg,生成臨時文件
public void svgToJpg(HttpServletRequest request, HttpServletResponse response, String name) throws Exception{
String svgCode = request.getParameter(“svg”);//highcharts圖表svgCode
String picName = name+”.png”;
/*response.addHeader(“Content-Disposition”, “attachment; filename=”+ picName);
response.addHeader(“Content-Type”, “image/png”);*/

    File tempPath = new File(request.getSession().getServletContext().getRealPath("/") + "temp/");
    if(!tempPath.exists() || !tempPath.isDirectory())
    {
        tempPath.mkdir();
    }
    FileOutputStream fos = new FileOutputStream(tempPath.getAbsoluteFile()+ File.separator + picName);
    Transcoder t =  new PNGTranscoder();
    TranscoderInput input = new TranscoderInput(new StringReader(svgCode));
    TranscoderOutput output = new TranscoderOutput(fos);

    try {
        t.transcode(input, output);
    } catch (TranscoderException e) {
        System.out.print("Problem transcoding stream. See the web logs for more details.");
        e.printStackTrace();
    } finally {
        if (fos != null){
            fos.close();
        }
    }

    ajaxReturn(response, "1");
}

3.讀寫臨時文件寫入excel

// 定義輸出類型
response.setContentType(“application/msexcel”);
String picName = ticketMoneyAnalysisVO.getYear() + “-” + ticketMoneyAnalysisVO.getMonth()+”.png”;

    FileOutputStream fileOut = null;
    BufferedImage bufferImg = null;
    Result result = null;
    //先把讀進來的圖片放到一個ByteArrayOutputStream中,以便產生ByteArray
    ByteArrayOutputStream byteArrayOut = new ByteArrayOutputStream();
    File f  = new File(request.getSession().getServletContext().getRealPath("/") + "temp/" + picName);
    try {
        bufferImg = ImageIO.read(f);
        ImageIO.write(bufferImg, "png", byteArrayOut);
        result = ticketMoneyAnalysisService.getExel(ticketMoneyAnalysisVO, out, byteArrayOut);
        if (f.isFile() && f.exists()) {
            f.delete();
         }
    } catch (Exception e) {
        e.printStackTrace();
    }finally{
        if(fileOut != null){
            try {
                fileOut.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }

// 生成一個表格
HSSFSheet sheet = workbook.createSheet(titleBuff.toString());
sheet.autoSizeColumn(1);

    //畫圖的頂級管理器,一個sheet只能獲取一個(一定要注意這點)
    HSSFPatriarch patriarch = sheet.createDrawingPatriarch();
    //anchor主要用於設置圖片的屬性
    HSSFClientAnchor anchor = new HSSFClientAnchor(0, 0, 1023,100,(short) 1, 15, (short)26, 46);
    anchor.setAnchorType(3);
    //插入圖片
    patriarch.createPicture(anchor, workbook.addPicture(byteArrayOut.toByteArray(), HSSFWorkbook.PICTURE_TYPE_JPEG));
發佈了22 篇原創文章 · 獲贊 3 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章