POI+JFreeChart生成报表图片插入到Excel中

<div id="article_details" class="details">
    <div class="article_title">   
         <span class="ico ico_type_Original"></span>

    <h1>
        <span class="link_title"><a href="/edc0228/article/details/52807392">
        POI+JFreeChart生成报表图片插入到Excel中        
           
        </a>
        </span>

         
    </h1>
</div>

   

        <div class="article_manage clearfix">
        <div class="article_r">
            <span class="link_postdate">2016-10-13 15:45</span>
            <span class="link_view" title="阅读次数">795人阅读</span>
            <span class="link_comments" title="评论次数"> <a href="#comments" οnclick="_gaq.push(['_trackEvent','function', 'onclick', 'blog_articles_pinglun'])">评论</a>(0)</span>
            <span class="link_collect tracking-ad" data-mod="popu_171"> <a href="javascript:void(0);" οnclick="javascript:collectArticle('POI%2bJFreeChart%e7%94%9f%e6%88%90%e6%8a%a5%e8%a1%a8%e5%9b%be%e7%89%87%e6%8f%92%e5%85%a5%e5%88%b0Excel%e4%b8%ad','52807392');return false;" title="收藏" target="_blank">收藏</a></span>
             <span class="link_report"> <a href="#report" οnclick="javascript:report(52807392,2);return false;" title="举报">举报</a></span>

        </div>
    </div>    <style type="text/css">        
            .embody{
                padding:10px 10px 10px;
                margin:0 -20px;
                border-bottom:solid 1px #ededed;                
            }
            .embody_b{
                margin:0 ;
                padding:10px 0;
            }
            .embody .embody_t,.embody .embody_c{
                display: inline-block;
                margin-right:10px;
            }
            .embody_t{
                font-size: 12px;
                color:#999;
            }
            .embody_c{
                font-size: 12px;
            }
            .embody_c img,.embody_c em{
                display: inline-block;
                vertical-align: middle;               
            }
             .embody_c img{               
                width:30px;
                height:30px;
            }
            .embody_c em{
                margin: 0 20px 0 10px;
                color:#333;
                font-style: normal;
            }
    </style>
    <script type="text/javascript">
        $(function () {
            try
            {
                var lib = eval("("+$("#lib").attr("value")+")");
                var html = "";
                if (lib.err == 0) {
                    $.each(lib.data, function (i) {
                        var obj = lib.data[i];
                        //html += '<img src="' + obj.logo + '"/>' + obj.name + "  ";
                        html += ' <a href="' + obj.url + '" target="_blank">';
                        html += ' <img src="' + obj.logo + '">';
                        html += ' <em><b>' + obj.name + '</b></em>';
                        html += ' </a>';
                    });
                    if (html != "") {
                        setTimeout(function () {
                            $("#lib").html(html);                      
                            $("#embody").show();
                        }, 100);
                    }
                }      
            } catch (err)
            { }
            
        });
    </script>
      <div class="category clearfix">
        <div class="category_l">
           <img src="http://static.blog.csdn.net/images/category_icon.jpg">
            <span>分类:</span>
        </div>
        <div class="category_r">
                    <label οnclick="GetCategoryArticles('6263340','edc0228','top','52807392');">
                        <span οnclick="_gaq.push(['_trackEvent','function', 'onclick', 'blog_articles_fenlei']);">java<em>(23)</em></span>
                      <img class="arrow-down" src="http://static.blog.csdn.net/images/arrow_triangle _down.jpg" style="display:inline;">
                      <img class="arrow-up" src="http://static.blog.csdn.net/images/arrow_triangle_up.jpg" style="display:none;">
                        <div class="subItem">
                            <div class="subItem_t"><a href="http://blog.csdn.net/edc0228/article/category/6263340" target="_blank">作者同类文章</a><i class="J_close">X</i></div>
                            <ul class="subItem_l" id="top_6263340">                            
                            </ul>
                        </div>
                    </label>                    
        </div>
    </div>
        <div class="bog_copyright">         
            <p class="copyright_p">版权声明:本文为博主原创文章,未经博主允许不得转载。</p>
        </div>

  

  
  
     


<div id="article_content" class="article_content tracking-ad" data-mod="popu_307" data-dsm="post">

<p>javaCode:</p>
<p></p>
<div class="dp-highlighter bg_java"><div class="bar"><div class="tools"><b>[java]</b> <a href="#" class="ViewSource" title="view plain" οnclick="dp.sh.Toolbar.Command('ViewSource',this);return false;" target="_blank">view plain</a><span data-mod="popu_168"> <a href="#" class="CopyToClipboard" title="copy" οnclick="dp.sh.Toolbar.Command('CopyToClipboard',this);return false;" target="_blank">copy</a><div style="position: absolute; left: 485px; top: 526px; width: 18px; height: 18px; z-index: 99;"><embed id="ZeroClipboardMovie_1" src="http://static.blog.csdn.net/scripts/ZeroClipboard/ZeroClipboard.swf" loop="false" menu="false" quality="best" bgcolor="#ffffff" width="18" height="18" name="ZeroClipboardMovie_1" align="middle" allowscriptaccess="always" allowfullscreen="false" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" flashvars="id=1&width=18&height=18" wmode="transparent"></div></span><span data-mod="popu_169"> <a href="#" class="PrintSource" title="print" οnclick="dp.sh.Toolbar.Command('PrintSource',this);return false;" target="_blank">print</a></span><a href="#" class="About" title="?" οnclick="dp.sh.Toolbar.Command('About',this);return false;" target="_blank">?</a></div></div><ol start="1" class="dp-j"><li class="alt"><span><span class="keyword">package</span><span> chart;  </span></span></li><li class=""><span>  </span></li><li class="alt"><span><span class="keyword">import</span><span> java.awt.Font;  </span></span></li><li class=""><span><span class="keyword">import</span><span> java.io.ByteArrayOutputStream;  </span></span></li><li class="alt"><span><span class="keyword">import</span><span> java.io.FileNotFoundException;  </span></span></li><li class=""><span><span class="keyword">import</span><span> java.io.FileOutputStream;  </span></span></li><li class="alt"><span><span class="keyword">import</span><span> java.io.IOException;  </span></span></li><li class=""><span>  </span></li><li class="alt"><span><span class="keyword">import</span><span> org.apache.poi.hssf.usermodel.HSSFCell;  </span></span></li><li class=""><span><span class="keyword">import</span><span> org.apache.poi.hssf.usermodel.HSSFCellStyle;  </span></span></li><li class="alt"><span><span class="keyword">import</span><span> org.apache.poi.hssf.usermodel.HSSFClientAnchor;  </span></span></li><li class=""><span><span class="keyword">import</span><span> org.apache.poi.hssf.usermodel.HSSFPatriarch;  </span></span></li><li class="alt"><span><span class="keyword">import</span><span> org.apache.poi.hssf.usermodel.HSSFRow;  </span></span></li><li class=""><span><span class="keyword">import</span><span> org.apache.poi.hssf.usermodel.HSSFSheet;  </span></span></li><li class="alt"><span><span class="keyword">import</span><span> org.apache.poi.hssf.usermodel.HSSFWorkbook;  </span></span></li><li class=""><span><span class="keyword">import</span><span> org.jfree.chart.ChartFactory;  </span></span></li><li class="alt"><span><span class="keyword">import</span><span> org.jfree.chart.ChartFrame;  </span></span></li><li class=""><span><span class="keyword">import</span><span> org.jfree.chart.ChartUtilities;  </span></span></li><li class="alt"><span><span class="keyword">import</span><span> org.jfree.chart.JFreeChart;  </span></span></li><li class=""><span><span class="keyword">import</span><span> org.jfree.chart.axis.CategoryAxis;  </span></span></li><li class="alt"><span><span class="keyword">import</span><span> org.jfree.chart.axis.ValueAxis;  </span></span></li><li class=""><span><span class="keyword">import</span><span> org.jfree.chart.labels.ItemLabelAnchor;  </span></span></li><li class="alt"><span><span class="keyword">import</span><span> org.jfree.chart.labels.ItemLabelPosition;  </span></span></li><li class=""><span><span class="keyword">import</span><span> org.jfree.chart.labels.StandardCategoryItemLabelGenerator;  </span></span></li><li class="alt"><span><span class="keyword">import</span><span> org.jfree.chart.plot.CategoryPlot;  </span></span></li><li class=""><span><span class="keyword">import</span><span> org.jfree.chart.plot.PlotOrientation;  </span></span></li><li class="alt"><span><span class="keyword">import</span><span> org.jfree.chart.renderer.category.BarRenderer3D;  </span></span></li><li class=""><span><span class="keyword">import</span><span> org.jfree.chart.title.LegendTitle;  </span></span></li><li class="alt"><span><span class="keyword">import</span><span> org.jfree.chart.title.TextTitle;  </span></span></li><li class=""><span><span class="keyword">import</span><span> org.jfree.data.category.CategoryDataset;  </span></span></li><li class="alt"><span><span class="keyword">import</span><span> org.jfree.data.category.DefaultCategoryDataset;  </span></span></li><li class=""><span><span class="keyword">import</span><span> org.jfree.ui.TextAnchor;  </span></span></li><li class="alt"><span>  </span></li><li class=""><span><span class="keyword">import</span><span> util.ChartUtils;  </span></span></li><li class="alt"><span>  </span></li><li class=""><span><span class="comment">/**</span> </span></li><li class="alt"><span><span class="comment"> * 使用poi 和 JFreeChart生成图标插入到excel中</span> </span></li><li class=""><span><span class="comment"> * @author jjc</span> </span></li><li class="alt"><span><span class="comment"> *</span> </span></li><li class=""><span><span class="comment"> */</span><span>  </span></span></li><li class="alt"><span><span class="keyword">public</span><span> </span><span class="keyword">class</span><span> PoiAndJFreeChart {  </span></span></li><li class=""><span>    <span class="keyword">private</span><span> </span><span class="keyword">static</span><span> </span><span class="keyword">void</span><span> setBorder(HSSFCellStyle setBorder){  </span></span></li><li class="alt"><span>        setBorder.setBorderBottom(HSSFCellStyle.BORDER_THIN); <span class="comment">//下边框</span><span>  </span></span></li><li class=""><span>        setBorder.setBorderLeft(HSSFCellStyle.BORDER_THIN);<span class="comment">//左边框</span><span>  </span></span></li><li class="alt"><span>        setBorder.setBorderTop(HSSFCellStyle.BORDER_THIN);<span class="comment">//上边框</span><span>  </span></span></li><li class=""><span>        setBorder.setBorderRight(HSSFCellStyle.BORDER_THIN);<span class="comment">//右边框</span><span>  </span></span></li><li class="alt"><span>        setBorder.setAlignment(HSSFCellStyle.ALIGN_CENTER); <span class="comment">// 设置居中</span><span>  </span></span></li><li class=""><span>    }  </span></li><li class="alt"><span>      </span></li><li class=""><span>    <span class="comment">/**</span> </span></li><li class="alt"><span><span class="comment">     * 单纯使用POI操作Excel</span> </span></li><li class=""><span><span class="comment">     */</span><span>  </span></span></li><li class="alt"><span>    <span class="keyword">private</span><span> </span><span class="keyword">static</span><span> </span><span class="keyword">void</span><span> createExcelByPoi(){  </span></span></li><li class=""><span>        <span class="comment">// 生成一个excel对象</span><span>  </span></span></li><li class="alt"><span>        HSSFWorkbook wb = <span class="keyword">new</span><span> HSSFWorkbook();   </span></span></li><li class=""><span>        <span class="comment">// 生成excel格式对象</span><span>  </span></span></li><li class="alt"><span>        HSSFCellStyle style = wb.createCellStyle();  </span></li><li class=""><span>        setBorder(style);  </span></li><li class="alt"><span>        <span class="comment">// 生成一个名为Demo的sheet</span><span>  </span></span></li><li class=""><span>        HSSFSheet sheet = wb.createSheet(<span class="string">"Demo"</span><span>);  </span></span></li><li class="alt"><span>        <span class="comment">// 创建第一行</span><span>  </span></span></li><li class=""><span>        HSSFRow row = sheet.createRow((<span class="keyword">int</span><span>) </span><span class="number">0</span><span>);  </span></span></li><li class="alt"><span>        <span class="comment">// 创建第一列单元格</span><span>  </span></span></li><li class=""><span>        HSSFCell cell = row.createCell((<span class="keyword">short</span><span>) </span><span class="number">0</span><span>);  </span></span></li><li class="alt"><span>        cell.setCellValue(<span class="string">"这是第一列单元格哦"</span><span>);  </span></span></li><li class=""><span>        cell.setCellStyle(style); <span class="comment">// 设置单元格格式</span><span>  </span></span></li><li class="alt"><span>        <span class="comment">// 设置第一列自适应,此方法对于合并单元格仍然有效,从0开始,一定要先创建列,才能使用,不然没有效果</span><span>  </span></span></li><li class=""><span>        sheet.autoSizeColumn(<span class="number">0</span><span>, </span><span class="keyword">true</span><span>);   </span></span></li><li class="alt"><span>        cell = row.createCell((<span class="keyword">short</span><span>) </span><span class="number">1</span><span>);  </span></span></li><li class=""><span>        cell.setCellValue(<span class="string">"满分人数aaaaaaaaa"</span><span>);  </span></span></li><li class="alt"><span>        cell.setCellStyle(style);  </span></li><li class=""><span>        sheet.autoSizeColumn(<span class="number">1</span><span>, </span><span class="keyword">true</span><span>);   </span></span></li><li class="alt"><span>        cell = row.createCell((<span class="keyword">short</span><span>) </span><span class="number">2</span><span>);  </span></span></li><li class=""><span>        cell.setCellValue(<span class="string">"最高分aaaaabbbbbb"</span><span>);  </span></span></li><li class="alt"><span>        cell.setCellStyle(style);  </span></li><li class=""><span>        sheet.autoSizeColumn(<span class="number">2</span><span>, </span><span class="keyword">true</span><span>);   </span></span></li><li class="alt"><span>        cell = row.createCell((<span class="keyword">short</span><span>) </span><span class="number">3</span><span>);  </span></span></li><li class=""><span>        cell.setCellValue(<span class="string">"最低分aaaaaaaaaa"</span><span>);  </span></span></li><li class="alt"><span>        sheet.autoSizeColumn(<span class="number">3</span><span>, </span><span class="keyword">true</span><span>);   </span></span></li><li class=""><span>        cell.setCellStyle(style);  </span></li><li class="alt"><span>        FileOutputStream fos = <span class="keyword">null</span><span>;  </span></span></li><li class=""><span>        <span class="keyword">try</span><span> {  </span></span></li><li class="alt"><span>            fos = <span class="keyword">new</span><span> FileOutputStream(</span><span class="string">"c://123456.xls"</span><span>);  </span></span></li><li class=""><span>        } <span class="keyword">catch</span><span> (FileNotFoundException e) {  </span></span></li><li class="alt"><span>            e.printStackTrace();  </span></li><li class=""><span>        }  </span></li><li class="alt"><span>        <span class="keyword">try</span><span> {  </span></span></li><li class=""><span>            wb.write(fos); <span class="comment">// 写入到文本输出流中</span><span>  </span></span></li><li class="alt"><span>        } <span class="keyword">catch</span><span> (IOException e) {  </span></span></li><li class=""><span>            e.printStackTrace();  </span></li><li class="alt"><span>        }<span class="keyword">finally</span><span>{  </span></span></li><li class=""><span>            <span class="keyword">if</span><span>(fos!=</span><span class="keyword">null</span><span>){  </span></span></li><li class="alt"><span>                <span class="keyword">try</span><span> {  </span></span></li><li class=""><span>                    fos.close();  </span></li><li class="alt"><span>                } <span class="keyword">catch</span><span> (IOException e) {  </span></span></li><li class=""><span>                    e.printStackTrace();  </span></li><li class="alt"><span>                }  </span></li><li class=""><span>            }  </span></li><li class="alt"><span>        }  </span></li><li class=""><span>    }  </span></li><li class="alt"><span>      </span></li><li class=""><span>    <span class="comment">/**</span> </span></li><li class="alt"><span><span class="comment">     * 生成图表,使用简单柱状图演示</span> </span></li><li class=""><span><span class="comment">     */</span><span>  </span></span></li><li class="alt"><span>    <span class="keyword">public</span><span> </span><span class="keyword">static</span><span> </span><span class="keyword">void</span><span> createBar() {  </span></span></li><li class=""><span>        JFreeChart mBarChart = ChartFactory.createBarChart(<span class="string">"班级分数段分布图"</span><span>, </span><span class="comment">// 图表标题</span><span>  </span></span></li><li class="alt"><span>                <span class="string">"班级"</span><span>, </span><span class="comment">// 横轴</span><span>  </span></span></li><li class=""><span>                <span class="string">"人数"</span><span>,</span><span class="comment">// 纵轴</span><span>  </span></span></li><li class="alt"><span>                GetDatasetBar(), PlotOrientation.VERTICAL, <span class="comment">// 图表方向</span><span>  </span></span></li><li class=""><span>                <span class="keyword">true</span><span>, </span><span class="comment">// 是否显示图例</span><span>  </span></span></li><li class="alt"><span>                <span class="keyword">true</span><span>, </span><span class="comment">// 是否生成提示工具</span><span>  </span></span></li><li class=""><span>                <span class="keyword">false</span><span>); </span><span class="comment">// 是否生成url连接</span><span>  </span></span></li><li class="alt"><span>        <span class="comment">// 图表标题设置</span><span>  </span></span></li><li class=""><span>        TextTitle mTextTitle = mBarChart.getTitle();  </span></li><li class="alt"><span>        mTextTitle.setFont(<span class="keyword">new</span><span> Font(</span><span class="string">"黑体"</span><span>, Font.BOLD, </span><span class="number">20</span><span>));  </span></span></li><li class=""><span>  </span></li><li class="alt"><span>        <span class="comment">// 图表图例设置</span><span>  </span></span></li><li class=""><span>        LegendTitle mLegend = mBarChart.getLegend();  </span></li><li class="alt"><span>        <span class="keyword">if</span><span> (mLegend != </span><span class="keyword">null</span><span>)  </span></span></li><li class=""><span>            mLegend.setItemFont(<span class="keyword">new</span><span> Font(</span><span class="string">"宋体"</span><span>, Font.CENTER_BASELINE, </span><span class="number">15</span><span>));  </span></span></li><li class="alt"><span>        <span class="comment">//设置柱状图轴  </span><span>  </span></span></li><li class=""><span>        CategoryPlot mPlot = (CategoryPlot)mBarChart.getPlot();  </span></li><li class="alt"><span>      <span class="comment">//x轴  </span><span>  </span></span></li><li class=""><span>        CategoryAxis mDomainAxis = mPlot.getDomainAxis();    </span></li><li class="alt"><span>        <span class="comment">//设置x轴标题的字体  </span><span>  </span></span></li><li class=""><span>        mDomainAxis.setLabelFont(<span class="keyword">new</span><span> Font(</span><span class="string">"宋体"</span><span>, Font.PLAIN, </span><span class="number">15</span><span>));    </span></span></li><li class="alt"><span>        <span class="comment">//设置x轴坐标字体  </span><span>  </span></span></li><li class=""><span>        mDomainAxis.setTickLabelFont(<span class="keyword">new</span><span> Font(</span><span class="string">"宋体"</span><span>, Font.PLAIN, </span><span class="number">15</span><span>));    </span></span></li><li class="alt"><span>        <span class="comment">//y轴  </span><span>  </span></span></li><li class=""><span>        ValueAxis mValueAxis = mPlot.getRangeAxis();    </span></li><li class="alt"><span>        <span class="comment">//设置y轴标题字体  </span><span>  </span></span></li><li class=""><span>        mValueAxis.setLabelFont(<span class="keyword">new</span><span> Font(</span><span class="string">"宋体"</span><span>, Font.PLAIN, </span><span class="number">15</span><span>));    </span></span></li><li class="alt"><span>        <span class="comment">//设置y轴坐标字体  </span><span>  </span></span></li><li class=""><span>        mValueAxis.setTickLabelFont(<span class="keyword">new</span><span> Font(</span><span class="string">"宋体"</span><span>, Font.PLAIN, </span><span class="number">15</span><span>));    </span></span></li><li class="alt"><span>        <span class="comment">//柱体显示数值  </span><span>  </span></span></li><li class=""><span>        BarRenderer3D mRenderer = <span class="keyword">new</span><span> BarRenderer3D();  </span></span></li><li class="alt"><span>        mRenderer.setItemLabelGenerator(<span class="keyword">new</span><span> StandardCategoryItemLabelGenerator());  </span></span></li><li class=""><span>        mRenderer.setItemLabelsVisible(<span class="keyword">true</span><span>);  </span></span></li><li class="alt"><span>        mRenderer.setBasePositiveItemLabelPosition(<span class="keyword">new</span><span> ItemLabelPosition(ItemLabelAnchor.OUTSIDE12,TextAnchor.CENTER_LEFT));  </span></span></li><li class=""><span>        mRenderer.setItemLabelAnchorOffset(<span class="number">10</span><span>);   </span></span></li><li class="alt"><span>        mRenderer.setItemLabelFont(<span class="keyword">new</span><span> Font(</span><span class="string">"宋体"</span><span>, Font.BOLD, </span><span class="number">15</span><span>));   </span></span></li><li class=""><span>        mPlot.setRenderer(mRenderer);  </span></li><li class="alt"><span>        ChartFrame mChartFrame = <span class="keyword">new</span><span> ChartFrame(</span><span class="string">"班级分数段分布图"</span><span>, mBarChart);    </span></span></li><li class=""><span>        mChartFrame.pack();    </span></li><li class="alt"><span>        mChartFrame.setVisible(<span class="keyword">true</span><span>);  </span></span></li><li class=""><span>    }  </span></li><li class="alt"><span>      </span></li><li class=""><span>    <span class="keyword">public</span><span> </span><span class="keyword">static</span><span> CategoryDataset GetDatasetBar() {  </span></span></li><li class="alt"><span>          </span></li><li class=""><span>        DefaultCategoryDataset mDataset = <span class="keyword">new</span><span> DefaultCategoryDataset();    </span></span></li><li class="alt"><span>        mDataset.addValue(<span class="number">3</span><span>, </span><span class="string">"不及格人数"</span><span>, </span><span class="string">"02班"</span><span>);    </span></span></li><li class=""><span>        mDataset.addValue(<span class="number">39</span><span>, </span><span class="string">"及格人数"</span><span>, </span><span class="string">"02班"</span><span>);    </span></span></li><li class="alt"><span>        mDataset.addValue(<span class="number">7</span><span>, </span><span class="string">"优秀人数"</span><span>, </span><span class="string">"02班"</span><span>);    </span></span></li><li class=""><span>        mDataset.addValue(<span class="number">5</span><span>, </span><span class="string">"不及格人数"</span><span>, </span><span class="string">"01班"</span><span>);    </span></span></li><li class="alt"><span>        mDataset.addValue(<span class="number">9</span><span>, </span><span class="string">"及格人数"</span><span>, </span><span class="string">"01班"</span><span>);    </span></span></li><li class=""><span>        mDataset.addValue(<span class="number">18</span><span>, </span><span class="string">"优秀人数"</span><span>, </span><span class="string">"01班"</span><span>);  </span></span></li><li class="alt"><span>        <span class="keyword">return</span><span> mDataset;  </span></span></li><li class=""><span>    }  </span></li><li class="alt"><span>      </span></li><li class=""><span>    <span class="comment">/**</span> </span></li><li class="alt"><span><span class="comment">     * 使用poi + JfreeChart 生成图表插入excel,使用柱状图演示</span> </span></li><li class=""><span><span class="comment">     */</span><span>  </span></span></li><li class="alt"><span>    <span class="keyword">private</span><span> </span><span class="keyword">static</span><span> </span><span class="keyword">void</span><span> createByPoiAndJFreeChart(){  </span></span></li><li class=""><span>        <span class="comment">// 生成一个excel对象</span><span>  </span></span></li><li class="alt"><span>        HSSFWorkbook wb = <span class="keyword">new</span><span> HSSFWorkbook();   </span></span></li><li class=""><span>        <span class="comment">// 生成excel格式对象</span><span>  </span></span></li><li class="alt"><span>        HSSFCellStyle style = wb.createCellStyle();  </span></li><li class=""><span>        setBorder(style);  </span></li><li class="alt"><span>        <span class="comment">// 生成一个名为Demo的sheet</span><span>  </span></span></li><li class=""><span>        HSSFSheet sheet = wb.createSheet(<span class="string">"Demo"</span><span>);  </span></span></li><li class="alt"><span>          </span></li><li class=""><span>          </span></li><li class="alt"><span>        JFreeChart mBarChart = ChartFactory.createBarChart(<span class="string">"Demo"</span><span>, </span><span class="comment">// 图表标题</span><span>  </span></span></li><li class=""><span>                <span class="string">"班级"</span><span>, </span><span class="comment">// 横轴</span><span>  </span></span></li><li class="alt"><span>                <span class="string">"人数"</span><span>,</span><span class="comment">// 纵轴</span><span>  </span></span></li><li class=""><span>                GetDatasetBar(),  <span class="comment">// 数据来源</span><span>  </span></span></li><li class="alt"><span>                PlotOrientation.VERTICAL, <span class="comment">// 图表方向</span><span>  </span></span></li><li class=""><span>                <span class="keyword">true</span><span>, </span><span class="comment">// 是否显示图例</span><span>  </span></span></li><li class="alt"><span>                <span class="keyword">true</span><span>, </span><span class="comment">// 是否生成提示工具</span><span>  </span></span></li><li class=""><span>                <span class="keyword">false</span><span>); </span><span class="comment">// 是否生成url连接</span><span>  </span></span></li><li class="alt"><span>        <span class="comment">// 图表标题设置</span><span>  </span></span></li><li class=""><span>        TextTitle mTextTitle = mBarChart.getTitle();  </span></li><li class="alt"><span>        mTextTitle.setFont(<span class="keyword">new</span><span> Font(</span><span class="string">"黑体"</span><span>, Font.BOLD, </span><span class="number">25</span><span>));  </span></span></li><li class=""><span>  </span></li><li class="alt"><span>        <span class="comment">// 图表图例设置</span><span>  </span></span></li><li class=""><span>        LegendTitle mLegend = mBarChart.getLegend();  </span></li><li class="alt"><span>        <span class="keyword">if</span><span> (mLegend != </span><span class="keyword">null</span><span>)  </span></span></li><li class=""><span>            mLegend.setItemFont(<span class="keyword">new</span><span> Font(</span><span class="string">"宋体"</span><span>, Font.CENTER_BASELINE, </span><span class="number">15</span><span>));  </span></span></li><li class="alt"><span>        <span class="comment">// 设置柱状图轴</span><span>  </span></span></li><li class=""><span>        CategoryPlot mPlot = (CategoryPlot) mBarChart.getPlot();  </span></li><li class="alt"><span>        <span class="comment">// 3:设置抗锯齿,防止字体显示不清楚</span><span>  </span></span></li><li class=""><span>        ChartUtils.setAntiAlias(mBarChart);<span class="comment">// 抗锯齿</span><span>  </span></span></li><li class="alt"><span>        <span class="comment">// x轴</span><span>  </span></span></li><li class=""><span>        CategoryAxis mDomainAxis = mPlot.getDomainAxis();  </span></li><li class="alt"><span>        <span class="comment">// 设置x轴标题的字体</span><span>  </span></span></li><li class=""><span>        mDomainAxis.setLabelFont(<span class="keyword">new</span><span> Font(</span><span class="string">"宋体"</span><span>, Font.PLAIN, </span><span class="number">15</span><span>));  </span></span></li><li class="alt"><span>        <span class="comment">// 设置x轴坐标字体</span><span>  </span></span></li><li class=""><span>        mDomainAxis.setTickLabelFont(<span class="keyword">new</span><span> Font(</span><span class="string">"宋体"</span><span>, Font.PLAIN, </span><span class="number">15</span><span>));  </span></span></li><li class="alt"><span>        <span class="comment">// y轴</span><span>  </span></span></li><li class=""><span>        ValueAxis mValueAxis = mPlot.getRangeAxis();  </span></li><li class="alt"><span>        <span class="comment">// 设置y轴标题字体</span><span>  </span></span></li><li class=""><span>        mValueAxis.setLabelFont(<span class="keyword">new</span><span> Font(</span><span class="string">"宋体"</span><span>, Font.PLAIN, </span><span class="number">15</span><span>));  </span></span></li><li class="alt"><span>        <span class="comment">// 设置y轴坐标字体</span><span>  </span></span></li><li class=""><span>        mValueAxis.setTickLabelFont(<span class="keyword">new</span><span> Font(</span><span class="string">"宋体"</span><span>, Font.PLAIN, </span><span class="number">15</span><span>));  </span></span></li><li class="alt"><span>        <span class="comment">// 柱体显示数值</span><span>  </span></span></li><li class=""><span>        BarRenderer3D mRenderer = <span class="keyword">new</span><span> BarRenderer3D();  </span></span></li><li class="alt"><span>        mRenderer.setItemLabelGenerator(<span class="keyword">new</span><span> StandardCategoryItemLabelGenerator());  </span></span></li><li class=""><span>        mRenderer.setItemLabelsVisible(<span class="keyword">true</span><span>);  </span></span></li><li class="alt"><span>        mRenderer.setBasePositiveItemLabelPosition(<span class="keyword">new</span><span> ItemLabelPosition(ItemLabelAnchor.OUTSIDE12,TextAnchor.CENTER_LEFT));  </span></span></li><li class=""><span>        <span class="comment">// 柱体显示数值向上偏移一点点</span><span>  </span></span></li><li class="alt"><span>        mRenderer.setItemLabelAnchorOffset(<span class="number">10</span><span>);    </span></span></li><li class=""><span>        <span class="comment">// 设置柱体显示数字格式</span><span>  </span></span></li><li class="alt"><span>        mRenderer.setItemLabelFont(<span class="keyword">new</span><span> Font(</span><span class="string">"宋体"</span><span>, Font.BOLD, </span><span class="number">15</span><span>));    </span></span></li><li class=""><span>        mPlot.setRenderer(mRenderer);  </span></li><li class="alt"><span>        ByteArrayOutputStream bos = <span class="keyword">new</span><span> ByteArrayOutputStream();  </span></span></li><li class=""><span>        <span class="keyword">try</span><span> {  </span></span></li><li class="alt"><span>             <span class="comment">// 将图表写入到ByteArrayOutputStream流中</span><span>  </span></span></li><li class=""><span>            ChartUtilities.writeChartAsJPEG(bos, mBarChart, <span class="number">800</span><span>, </span><span class="number">700</span><span>);  </span></span></li><li class="alt"><span>        } <span class="keyword">catch</span><span> (IOException e) {  </span></span></li><li class=""><span>            e.printStackTrace();  </span></li><li class="alt"><span>        }  </span></li><li class=""><span>          </span></li><li class="alt"><span>          </span></li><li class=""><span>        <span class="comment">// 先把读进来的图片放到一个ByteArrayOutputStream中,以便产生ByteArray</span><span>  </span></span></li><li class="alt"><span>        <span class="keyword">try</span><span> {  </span></span></li><li class=""><span>            <span class="comment">// 画图的顶级管理器,一个sheet只能获取一个(一定要注意这点)</span><span>  </span></span></li><li class="alt"><span>            HSSFPatriarch patriarch = sheet.createDrawingPatriarch();  </span></li><li class=""><span>            <span class="comment">// anchor主要用于设置图片的属性(1,1 表示图片左上角,15,31表示图片右下角,通过这个可以控制图片的大小)</span><span>  </span></span></li><li class="alt"><span>            HSSFClientAnchor anchor = <span class="keyword">new</span><span> HSSFClientAnchor(</span><span class="number">0</span><span>, </span><span class="number">0</span><span>, </span><span class="number">255</span><span>, </span><span class="number">255</span><span>, (</span><span class="keyword">short</span><span>) </span><span class="number">1</span><span>, </span><span class="number">1</span><span>, (</span><span class="keyword">short</span><span>) </span><span class="number">15</span><span>, </span><span class="number">31</span><span>);  </span></span></li><li class=""><span>            anchor.setAnchorType(<span class="number">3</span><span>);  </span></span></li><li class="alt"><span>            <span class="comment">// 插入图片</span><span>  </span></span></li><li class=""><span>            patriarch.createPicture(anchor,  </span></li><li class="alt"><span>                    wb.addPicture(bos.toByteArray(), HSSFWorkbook.PICTURE_TYPE_JPEG));  </span></li><li class=""><span>        } <span class="keyword">catch</span><span> (Exception e) {  </span></span></li><li class="alt"><span>            e.printStackTrace();  </span></li><li class=""><span>        }<span class="keyword">finally</span><span>{  </span></span></li><li class="alt"><span>            <span class="keyword">if</span><span>(bos != </span><span class="keyword">null</span><span>){  </span></span></li><li class=""><span>                <span class="keyword">try</span><span> {  </span></span></li><li class="alt"><span>                    bos.close();  </span></li><li class=""><span>                } <span class="keyword">catch</span><span> (IOException e) {  </span></span></li><li class="alt"><span>                    e.printStackTrace();  </span></li><li class=""><span>                }  </span></li><li class="alt"><span>            }  </span></li><li class=""><span>        }  </span></li><li class="alt"><span>        FileOutputStream fos = <span class="keyword">null</span><span>;  </span></span></li><li class=""><span>        <span class="keyword">try</span><span> {  </span></span></li><li class="alt"><span>            fos = <span class="keyword">new</span><span> FileOutputStream(</span><span class="string">"c://测试.xls"</span><span>);  </span></span></li><li class=""><span>            <span class="keyword">try</span><span> {  </span></span></li><li class="alt"><span>                wb.write(fos);  </span></li><li class=""><span>            } <span class="keyword">catch</span><span> (IOException e) {  </span></span></li><li class="alt"><span>                e.printStackTrace();  </span></li><li class=""><span>            }  </span></li><li class="alt"><span>        } <span class="keyword">catch</span><span> (FileNotFoundException e) {  </span></span></li><li class=""><span>            e.printStackTrace();  </span></li><li class="alt"><span>        }  </span></li><li class=""><span>        <span class="keyword">if</span><span>(fos!=</span><span class="keyword">null</span><span>){  </span></span></li><li class="alt"><span>            <span class="keyword">try</span><span> {  </span></span></li><li class=""><span>                fos.close();  </span></li><li class="alt"><span>            } <span class="keyword">catch</span><span> (IOException e) {  </span></span></li><li class=""><span>                e.printStackTrace();  </span></li><li class="alt"><span>            }  </span></li><li class=""><span>        }  </span></li><li class="alt"><span>    }  </span></li><li class=""><span>      </span></li><li class="alt"><span>    <span class="keyword">public</span><span> </span><span class="keyword">static</span><span> </span><span class="keyword">void</span><span> main(String[] args) {  </span></span></li><li class=""><span><span class="comment">//      createExcelByPoi(); // 单纯使用POI创建excel</span><span>  </span></span></li><li class="alt"><span><span class="comment">//      createBar(); // 单纯使用JfreeChart生成图表</span><span>  </span></span></li><li class=""><span><span class="comment">//      createByPoiAndJFreeChart(); // 使用POI+ JfreeChart 生成图表写入Excel</span><span>  </span></span></li><li class="alt"><span>    }  </span></li><li class=""><span>}  </span></li></ol></div><pre code_snippet_id="1927118" snippet_file_name="blog_20161013_1_830243" name="code" class="java" style="display: none;">package chart;

import java.awt.Font;
import java.io.ByteArrayOutputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

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.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartFrame;
import org.jfree.chart.ChartUtilities;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.axis.CategoryAxis;
import org.jfree.chart.axis.ValueAxis;
import org.jfree.chart.labels.ItemLabelAnchor;
import org.jfree.chart.labels.ItemLabelPosition;
import org.jfree.chart.labels.StandardCategoryItemLabelGenerator;
import org.jfree.chart.plot.CategoryPlot;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.chart.renderer.category.BarRenderer3D;
import org.jfree.chart.title.LegendTitle;
import org.jfree.chart.title.TextTitle;
import org.jfree.data.category.CategoryDataset;
import org.jfree.data.category.DefaultCategoryDataset;
import org.jfree.ui.TextAnchor;

import util.ChartUtils;

/**
 * 使用poi 和 JFreeChart生成图标插入到excel中
 * @author jjc
 *
 */
public class PoiAndJFreeChart {
	private static void setBorder(HSSFCellStyle setBorder){
		setBorder.setBorderBottom(HSSFCellStyle.BORDER_THIN); //下边框
		setBorder.setBorderLeft(HSSFCellStyle.BORDER_THIN);//左边框
		setBorder.setBorderTop(HSSFCellStyle.BORDER_THIN);//上边框
		setBorder.setBorderRight(HSSFCellStyle.BORDER_THIN);//右边框
		setBorder.setAlignment(HSSFCellStyle.ALIGN_CENTER); // 设置居中
	}
	
	/**
	 * 单纯使用POI操作Excel
	 */
	private static void createExcelByPoi(){
		// 生成一个excel对象
		HSSFWorkbook wb = new HSSFWorkbook(); 
		// 生成excel格式对象
		HSSFCellStyle style = wb.createCellStyle();
		setBorder(style);
		// 生成一个名为Demo的sheet
		HSSFSheet sheet = wb.createSheet("Demo");
		// 创建第一行
		HSSFRow row = sheet.createRow((int) 0);
		// 创建第一列单元格
		HSSFCell cell = row.createCell((short) 0);
		cell.setCellValue("这是第一列单元格哦");
		cell.setCellStyle(style); // 设置单元格格式
		// 设置第一列自适应,此方法对于合并单元格仍然有效,从0开始,一定要先创建列,才能使用,不然没有效果
		sheet.autoSizeColumn(0, true); 
		cell = row.createCell((short) 1);
		cell.setCellValue("满分人数aaaaaaaaa");
		cell.setCellStyle(style);
		sheet.autoSizeColumn(1, true); 
		cell = row.createCell((short) 2);
		cell.setCellValue("最高分aaaaabbbbbb");
		cell.setCellStyle(style);
		sheet.autoSizeColumn(2, true); 
		cell = row.createCell((short) 3);
		cell.setCellValue("最低分aaaaaaaaaa");
		sheet.autoSizeColumn(3, true); 
		cell.setCellStyle(style);
		FileOutputStream fos = null;
		try {
			fos = new FileOutputStream("c://123456.xls");
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		}
		try {
			wb.write(fos); // 写入到文本输出流中
		} catch (IOException e) {
			e.printStackTrace();
		}finally{
			if(fos!=null){
				try {
					fos.close();
				} catch (IOException e) {
					e.printStackTrace();
				}
			}
		}
	}
	
	/**
	 * 生成图表,使用简单柱状图演示
	 */
	public static void createBar() {
		JFreeChart mBarChart = ChartFactory.createBarChart("班级分数段分布图", // 图表标题
				"班级", // 横轴
				"人数",// 纵轴
				GetDatasetBar(), PlotOrientation.VERTICAL, // 图表方向
				true, // 是否显示图例
				true, // 是否生成提示工具
				false); // 是否生成url连接
		// 图表标题设置
		TextTitle mTextTitle = mBarChart.getTitle();
		mTextTitle.setFont(new Font("黑体", Font.BOLD, 20));

		// 图表图例设置
		LegendTitle mLegend = mBarChart.getLegend();
		if (mLegend != null)
			mLegend.setItemFont(new Font("宋体", Font.CENTER_BASELINE, 15));
		//设置柱状图轴  
        CategoryPlot mPlot = (CategoryPlot)mBarChart.getPlot();
      //x轴  
        CategoryAxis mDomainAxis = mPlot.getDomainAxis();  
        //设置x轴标题的字体  
        mDomainAxis.setLabelFont(new Font("宋体", Font.PLAIN, 15));  
        //设置x轴坐标字体  
        mDomainAxis.setTickLabelFont(new Font("宋体", Font.PLAIN, 15));  
        //y轴  
        ValueAxis mValueAxis = mPlot.getRangeAxis();  
        //设置y轴标题字体  
        mValueAxis.setLabelFont(new Font("宋体", Font.PLAIN, 15));  
        //设置y轴坐标字体  
        mValueAxis.setTickLabelFont(new Font("宋体", Font.PLAIN, 15));  
        //柱体显示数值  
		BarRenderer3D mRenderer = new BarRenderer3D();
		mRenderer.setItemLabelGenerator(new StandardCategoryItemLabelGenerator());
		mRenderer.setItemLabelsVisible(true);
		mRenderer.setBasePositiveItemLabelPosition(new ItemLabelPosition(ItemLabelAnchor.OUTSIDE12,TextAnchor.CENTER_LEFT));
		mRenderer.setItemLabelAnchorOffset(10); 
		mRenderer.setItemLabelFont(new Font("宋体", Font.BOLD, 15)); 
		mPlot.setRenderer(mRenderer);
        ChartFrame mChartFrame = new ChartFrame("班级分数段分布图", mBarChart);  
        mChartFrame.pack();  
        mChartFrame.setVisible(true);
	}
	
	public static CategoryDataset GetDatasetBar() {
		
		DefaultCategoryDataset mDataset = new DefaultCategoryDataset();  
		mDataset.addValue(3, "不及格人数", "02班");  
		mDataset.addValue(39, "及格人数", "02班");  
		mDataset.addValue(7, "优秀人数", "02班");  
		mDataset.addValue(5, "不及格人数", "01班");  
		mDataset.addValue(9, "及格人数", "01班");  
		mDataset.addValue(18, "优秀人数", "01班");
		return mDataset;
	}
	
	/**
	 * 使用poi + JfreeChart 生成图表插入excel,使用柱状图演示
	 */
	private static void createByPoiAndJFreeChart(){
		// 生成一个excel对象
		HSSFWorkbook wb = new HSSFWorkbook(); 
		// 生成excel格式对象
		HSSFCellStyle style = wb.createCellStyle();
		setBorder(style);
		// 生成一个名为Demo的sheet
		HSSFSheet sheet = wb.createSheet("Demo");
		
		
		JFreeChart mBarChart = ChartFactory.createBarChart("Demo", // 图表标题
				"班级", // 横轴
				"人数",// 纵轴
				GetDatasetBar(),  // 数据来源
				PlotOrientation.VERTICAL, // 图表方向
				true, // 是否显示图例
				true, // 是否生成提示工具
				false); // 是否生成url连接
		// 图表标题设置
		TextTitle mTextTitle = mBarChart.getTitle();
		mTextTitle.setFont(new Font("黑体", Font.BOLD, 25));

		// 图表图例设置
		LegendTitle mLegend = mBarChart.getLegend();
		if (mLegend != null)
			mLegend.setItemFont(new Font("宋体", Font.CENTER_BASELINE, 15));
		// 设置柱状图轴
		CategoryPlot mPlot = (CategoryPlot) mBarChart.getPlot();
		// 3:设置抗锯齿,防止字体显示不清楚
		ChartUtils.setAntiAlias(mBarChart);// 抗锯齿
		// x轴
		CategoryAxis mDomainAxis = mPlot.getDomainAxis();
		// 设置x轴标题的字体
		mDomainAxis.setLabelFont(new Font("宋体", Font.PLAIN, 15));
		// 设置x轴坐标字体
		mDomainAxis.setTickLabelFont(new Font("宋体", Font.PLAIN, 15));
		// y轴
		ValueAxis mValueAxis = mPlot.getRangeAxis();
		// 设置y轴标题字体
		mValueAxis.setLabelFont(new Font("宋体", Font.PLAIN, 15));
		// 设置y轴坐标字体
		mValueAxis.setTickLabelFont(new Font("宋体", Font.PLAIN, 15));
		// 柱体显示数值
		BarRenderer3D mRenderer = new BarRenderer3D();
		mRenderer.setItemLabelGenerator(new StandardCategoryItemLabelGenerator());
		mRenderer.setItemLabelsVisible(true);
		mRenderer.setBasePositiveItemLabelPosition(new ItemLabelPosition(ItemLabelAnchor.OUTSIDE12,TextAnchor.CENTER_LEFT));
		// 柱体显示数值向上偏移一点点
		mRenderer.setItemLabelAnchorOffset(10);  
		// 设置柱体显示数字格式
		mRenderer.setItemLabelFont(new Font("宋体", Font.BOLD, 15));  
		mPlot.setRenderer(mRenderer);
		ByteArrayOutputStream bos = new ByteArrayOutputStream();
		try {
			 // 将图表写入到ByteArrayOutputStream流中
			ChartUtilities.writeChartAsJPEG(bos, mBarChart, 800, 700);
		} catch (IOException e) {
			e.printStackTrace();
		}
		
		
		// 先把读进来的图片放到一个ByteArrayOutputStream中,以便产生ByteArray
		try {
			// 画图的顶级管理器,一个sheet只能获取一个(一定要注意这点)
			HSSFPatriarch patriarch = sheet.createDrawingPatriarch();
			// anchor主要用于设置图片的属性(1,1 表示图片左上角,15,31表示图片右下角,通过这个可以控制图片的大小)
			HSSFClientAnchor anchor = new HSSFClientAnchor(0, 0, 255, 255, (short) 1, 1, (short) 15, 31);
			anchor.setAnchorType(3);
			// 插入图片
			patriarch.createPicture(anchor,
					wb.addPicture(bos.toByteArray(), HSSFWorkbook.PICTURE_TYPE_JPEG));
		} catch (Exception e) {
			e.printStackTrace();
		}finally{
			if(bos != null){
				try {
					bos.close();
				} catch (IOException e) {
					e.printStackTrace();
				}
			}
		}
		FileOutputStream fos = null;
		try {
			fos = new FileOutputStream("c://测试.xls");
			try {
				wb.write(fos);
			} catch (IOException e) {
				e.printStackTrace();
			}
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		}
		if(fos!=null){
			try {
				fos.close();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
	}
	
	public static void main(String[] args) {
//		createExcelByPoi();	// 单纯使用POI创建excel
//		createBar(); // 单纯使用JfreeChart生成图表
//		createByPoiAndJFreeChart(); // 使用POI+ JfreeChart 生成图表写入Excel
	}
}
</pre><br>
以上使用了柱状图演示,其他图形请下载代码。<a target="_blank" href="http://download.csdn.net/detail/edc0228/9652888">点击打开链接</a>
<p></p>
   
</div>




<!-- Baidu Button BEGIN -->




<div class="bdsharebuttonbox tracking-ad bdshare-button-style0-16" style="float: right;" data-mod="popu_172" data-bd-bind="1505379805393">
<a href="#" class="bds_more" data-cmd="more" style="background-position:0 0 !important; background-image: url(http://bdimg.share.baidu.com/static/api/img/share/icons_0_16.png?v=d754dcc0.png) !important" target="_blank"></a>
<a href="#" class="bds_qzone" data-cmd="qzone" title="分享到QQ空间" style="background-position:0 -52px !important" target="_blank"></a>
<a href="#" class="bds_tsina" data-cmd="tsina" title="分享到新浪微博" style="background-position:0 -104px !important" target="_blank"></a>
<a href="#" class="bds_tqq" data-cmd="tqq" title="分享到腾讯微博" style="background-position:0 -260px !important" target="_blank"></a>
<a href="#" class="bds_renren" data-cmd="renren" title="分享到人人网" style="background-position:0 -208px !important" target="_blank"></a>
<a href="#" class="bds_weixin" data-cmd="weixin" title="分享到微信" style="background-position:0 -1612px !important" target="_blank"></a>
</div>
<script>window._bd_share_config = { "common": { "bdSnsKey": {}, "bdText": "", "bdMini": "1", "bdMiniList": false, "bdPic": "", "bdStyle": "0", "bdSize": "16" }, "share": {} }; with (document) 0[(getElementsByTagName('head')[0] || body).appendChild(createElement('script')).src = 'http://bdimg.share.baidu.com/static/api/js/share.js?v=89860593.js?cdnversion=' + ~(-new Date() / 36e5)];</script>
<!-- Baidu Button END -->

   

<!--172.16.140.12-->

<!-- Baidu Button BEGIN -->
<script type="text/javascript" id="bdshare_js" data="type=tools&uid=1536434" src="http://bdimg.share.baidu.com/static/js/bds_s_v2.js?cdnversion=418162"></script>

<script type="text/javascript">
    document.getElementById("bdshell_js").src = "http://bdimg.share.baidu.com/static/js/shell_v2.js?cdnversion=" + Math.ceil(new Date()/3600000)
</script>
<!-- Baidu Button END -->



 


        <div id="digg" articleid="52807392">
            <dl id="btnDigg" class="digg digg_disable" οnclick="btndigga();">
               
                 <dt>顶</dt>
                <dd>1</dd>
            </dl>
           
              
            <dl id="btnBury" class="digg digg_disable" οnclick="btnburya();">
              
                  <dt>踩</dt>
                <dd>0</dd>               
            </dl>
            
        </div>
     <div class="tracking-ad" data-mod="popu_222"><a href="javascript:void(0);" target="_blank"> </a>   </div>
    <div class="tracking-ad" data-mod="popu_223"> <a href="javascript:void(0);" target="_blank"> </a></div>
    <script type="text/javascript">
        function btndigga() {
            $(".tracking-ad[data-mod='popu_222'] a").click();
        }
        function btnburya() {
            $(".tracking-ad[data-mod='popu_223'] a").click();
        }
            </script>

   <ul class="article_next_prev">
                <li class="prev_article"><span οnclick="_gaq.push(['_trackEvent','function', 'onclick', 'blog_articles_shangyipian']);location.href='http://blog.csdn.net/edc0228/article/details/52788395';">上一篇</span><a href="http://blog.csdn.net/edc0228/article/details/52788395" οnclick="_gaq.push(['_trackEvent','function', 'onclick', 'blog_articles_shangyipian'])">Linux常用命令</a></li>
                <li class="next_article"><span οnclick="_gaq.push(['_trackEvent','function', 'onclick', 'blog_articles_xiayipian']);location.href='http://blog.csdn.net/edc0228/article/details/53080880';">下一篇</span><a href="http://blog.csdn.net/edc0228/article/details/53080880" οnclick="_gaq.push(['_trackEvent','function', 'onclick', 'blog_articles_xiayipian'])">jfreechart调整线条颜色</a></li>
    </ul>

    <div style="clear:both; height:10px;"></div>


            <div class="similar_article">
                    <h4></h4>
                    <div class="similar_c" style="margin:20px 0px 0px 0px">
                        <div class="similar_c_t">
                            相关文章推荐
                        </div>
                   
                        <div class="similar_wrap tracking-ad" data-mod="popu_36" style="max-height:250px">                       
                            <ul class="similar_list fl">    
                                   <li>
                                       <em>•</em>
                                       <a href="http://blog.csdn.net/tuzongxun/article/details/52584103" title="使用poi和jfreechart生成excel图表图片" strategy="BlogCommendFromBaidu_0" target="_blank">使用poi和jfreechart生成excel图表图片</a>
                                   </li>
                                   <li>
                                       <em>•</em>
                                       <a href="http://edu.csdn.net/huiyiCourse/series_detail/66?utm_source=blog7" title="SDCC 2017之区块链技术实战线上峰会" strategy="undefined" target="_blank">SDCC 2017之区块链技术实战线上峰会</a>
                                   </li>
                                   <li>
                                       <em>•</em>
                                       <a href="http://blog.csdn.net/siyemuzi/article/details/23839547" title="POI导出excel+JFreeChart生成图表(柱状图和折线图)" strategy="BlogCommendFromBaidu_1" target="_blank">POI导出excel+JFreeChart生成图表(柱状图和折线图)</a>
                                   </li>
                                   <li>
                                       <em>•</em>
                                       <a href="http://edu.csdn.net/huiyiCourse/series_detail/61?utm_source=blog7" title="30天系统掌握机器学习" strategy="undefined" target="_blank">30天系统掌握机器学习</a>
                                   </li>
                                   <li>
                                       <em>•</em>
                                       <a href="http://download.csdn.net/download/edc0228/9652888" title="JFreeChart" strategy="BlogCommendFromBaidu_2" target="_blank">JFreeChart</a>
                                   </li>
                                   <li>
                                       <em>•</em>
                                       <a href="http://edu.csdn.net/course/detail/3338?utm_source=blog7" title="Python大型网络爬虫项目开发实战" strategy="undefined" target="_blank">Python大型网络爬虫项目开发实战</a>
                                   </li>
                                   <li>
                                       <em>•</em>
                                       <a href="http://download.csdn.net/download/lenovo00728/8340591" title="POI和JFreeChart框架实现生成Excel文件(生成 统计图)" strategy="BlogCommendFromBaidu_3" target="_blank">POI和JFreeChart框架实现生成Excel文件(生成 统计图)</a>
                                   </li>
                                   <li>
                                       <em>•</em>
                                       <a href="http://edu.csdn.net/course/detail/5680?utm_source=blog7" title="ReactNative全教程合集" strategy="undefined" target="_blank">ReactNative全教程合集</a>
                                   </li>
                            </ul>
                              <ul class="similar_list fr">      
                                   <li>
                                       <em>•</em>
                                       <a href="http://blog.csdn.net/baiyangok/article/details/41956859" title="教你如何利用POI和JFreeChart框架实现生成Excel文件(生成 统计图)" strategy="BlogCommendFromBaidu_4" target="_blank">教你如何利用POI和JFreeChart框架实现生成Excel文件(生成 统计图)</a>
                                   </li>
                                   <li>
                                       <em>•</em>
                                       <a href="http://edu.csdn.net/course/detail/1441?utm_source=blog7" title="Shader开发入门实战" strategy="undefined" target="_blank">Shader开发入门实战</a>
                                   </li>
                                   <li>
                                       <em>•</em>
                                       <a href="http://blog.csdn.net/YYZhQ/article/details/47441461" title="在项目中使用ExtJS" strategy="BlogCommendFromBaidu_5" target="_blank">在项目中使用ExtJS</a>
                                   </li>
                                   <li>
                                       <em>•</em>
                                       <a href="http://edu.csdn.net/course/detail/3506?utm_source=blog7" title="深度学习框架Caffe详解" strategy="undefined" target="_blank">深度学习框架Caffe详解</a>
                                   </li>
                                   <li>
                                       <em>•</em>
                                       <a href="http://blog.csdn.net/qq_33212500/article/details/73274799" title="echarts图表导出excel示例" strategy="BlogCommendFromBaidu_6" target="_blank">echarts图表导出excel示例</a>
                                   </li>
                                   <li>
                                       <em>•</em>
                                       <a href="http://blog.csdn.net/u010132933/article/details/51083321" title="ExtJS前端在项目中使用" strategy="BlogCommendFromBaidu_7" target="_blank">ExtJS前端在项目中使用</a>
                                   </li>
                                   <li>
                                       <em>•</em>
                                       <a href="http://blog.csdn.net/sushengmiyan/article/details/38331347" title="[ExtJS5学习笔记]第四节 欢迎来到extjs5-手把手教你实现你的第一个应用" strategy="BlogCommendFromBaidu_8" target="_blank">[ExtJS5学习笔记]第四节 欢迎来到extjs5-手把手教你实现你的第一个应用</a>
                                   </li>
                                   <li>
                                       <em>•</em>
                                       <a href="http://blog.csdn.net/name_liweibin/article/details/12840365" title="Extjs 项目中常用的小技巧" strategy="BlogCommendFromBaidu_9" target="_blank">Extjs 项目中常用的小技巧</a>
                                   </li>
                            </ul>
                        </div>
                    </div>
                </div>   
      
</div>

项目想实现excel表但POI不支持所以想到了这个方法。放上来抛砖引玉,感兴趣的欢迎大家交流 注:-------------------------------------------------------------------------- 其实现原理和利用JavaScript实现客户端绘完全一样。后台代码将输入 写入特定区域,前端脚本在页面载入时执行脚本绘。大家都是做B/S开发 的,这方面的只是不需要我多说了吧。 如果我们让一个HTML页面在载入时显示一个提示框用后台编程是不现实的 所以我们就动态生成一段JS: window.onload=function(){ ...... } 用Java输出表的场景和这个一样,POI、JXL对操作Excel表无能为力 但Excel支持脚本的,也有工作表载入事件,所以也可以用同样的原理实现 只不过这次客户端不再是浏览器而是Excel应用程序。 这样交代的应该比较明白了吧,请不要再留言抱怨没有Java代码了,因为 这根本跟java代码没多大关系,后台的代码所做的工作仅仅是写入必要的 数据,数据的解析和绘操作是在VBA完成的 ---2009-12-18 今天查找资料翻出来了这段代码,发现里边的类确实是空的,我说怎么总挨骂 呢,当时肯定打包的时候晕透了把另一个本该删除的类打包进去了。我无法 替换文件只能把java代码贴上来了,请自己修改模板文件的路径。 package com.test.poi; import java.io.FileInputStream; import java.io.FileOutputStream; import org.apache.poi.hssf.usermodel.HSSFRow; import org.apache.poi.hssf.usermodel.HSSFSheet; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.poifs.filesystem.POIFSFileSystem; public class PoiChart { public static void main(String[] args){ try{ POIFSFileSystem fs=new POIFSFileSystem(new FileInputStream("E:/王建波_bak/我的练习/Module.xls")); HSSFWorkbook wb=new HSSFWorkbook(fs); HSSFSheet sheet=wb.getSheetAt(0); HSSFRow row; //写入表头 String[] aTblHeaders=new String[]{ "姓名","语文","数学","英语" }; row=sheet.createRow(0); for(int i=0,len=aTblHeaders.length;i<len;i++){ row.createCell((short)i).setCellValue(aTblHeaders[i]); } //向模板写入数据 String[] aNames=new String[]{ "张飞","刘备","关羽","曹操","孙权","吕布" }; for(int i=0,nRowLen=aNames.length;i<nRowLen;i++){ row=sheet.createRow(i+1); row.createCell((short)0).setCellValue(aNames[i]); for(int j=1,nColLen=aTblHeaders.length;j<nColLen;j++){ row.createCell((short)j).setCellValue(Math.floor(Math.random()*100)); } } //输出文件 FileOutputStream fout=new FileOutputStream("d:/chart.xls"); wb.write(fout); fout.close(); }catch(Exception e){ e.printStackTrace(); } } }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值