📄 mschart.java
字号:
package com.trulytech.mantis.util;import javax.servlet.http.*;import javax.servlet.*;import java.io.PrintWriter;import java.util.ArrayList;import com.trulytech.mantis.system.ActionServlet;import com.trulytech.mantis.system.logWriter;import com.trulytech.mantis.result.DBResult;import com.trulytech.mantis.result.DBColumn;/** * <p>Title: Chart</p> * <p>Description: 作图类 [生成Microsoft WebChart]</p> * <p>Copyright: Copyright (c) 2002</p> * <p>Company: </p> * @author WangXian * @version 1.2 */public class MSChart { static final private String CONTENT_TYPE = "text/html";//宽度 protected String Width="640";//高度 protected String Height="480";//类型 0-柱状图 3-栏状图 6-平滑曲线图 18-饼行图 29-面积图 private String Type="0";//记录集 private DBResult Result=null;//Http Response private HttpServletResponse response=null;//标题在Result中的字段数 private int Label=0;//数值在Result中的字段数 private int Value=1;//总标题 private String Title="";//子标题 private String SubTitle="";//纵轴标题 private String AxisTitle="";//是否需要图例 private boolean HasLegend=true;//图例标题 private String LegendTitle="";//背景色 private String BGColor="#FFFFFF";//背景图象 private String BGURL=""; public MSChart(HttpServletResponse response,String Width,String Height,String Type,String Title,DBResult Result) { this.response=response; this.Width=Width; this.Height=Height; this.Type=Type; this.Title=Title; this.Result=Result; } /** * 设置子标题 * @param SubTitle 子标题 */ public void setSubTitle(String SubTitle) { this.SubTitle=SubTitle; } /** * 设置纵轴标题 * @param AxisTitle 纵轴标题 */ public void setAxisTitle(String AxisTitle) { this.AxisTitle=AxisTitle; } /** * 设置是否需要图例 * @param HasLegend 是否需要图例 */ public void setHasLegend(boolean HasLegend) { this.HasLegend=HasLegend; } /** * 设置背景色 * @param BGColor 背景色 */ public void setBGColor(String BGColor) { this.BGColor=BGColor; } /** * 设置背景图象 * @param BGURL 背景图象 */ public void setBGURL(String BGURL) { this.BGURL=BGURL; } /** * 设置图例标题 * @param LegendTitle 图例标题 */ public void setLegendTitle(String LegendTitle) { this.LegendTitle=LegendTitle; } /** * 执行doChart操作 * @return String * @throws Exception */ public String drawChart() throws Exception {//写日志 logWriter.Info("开始创建Microsoft图形 (" + this.getClass().getName() + ")"); response.setContentType(CONTENT_TYPE); PrintWriter out = response.getWriter(); try { out.println("<html>"); out.println("<head><title></title>"); out.println("<script language=\"vbscript\">"); out.println("sub window_onload()"); out.println("Dim categories(" + Result.ResultBuffer.size() + ")"); out.println("Dim values(" + Result.ResultBuffer.size() + ")"); int nSize=Result.ResultBuffer.size(); for (int i=0;i<nSize;i++) { ArrayList Rec=(ArrayList)Result.ResultBuffer.get(i); out.println("categories(" + i + ")=\"" + new String(((DBColumn)Rec.get(Label)).Value.getBytes("GBK"),"ISO8859_1") + "\""); } out.println("ChartSpace1.Charts.Add"); out.println("Set c = ChartSpace1.Constants"); out.println("ChartSpace1.Charts(0).hastitle=true"); out.println(new String("ChartSpace1.Charts(0).Title.Font.Name = \"仿宋_GB231280\"".getBytes("GBK"),"ISO8859_1")); out.println("ChartSpace1.Charts(0).Title.Font.size=11"); out.println("ChartSpace1.Charts(0).Title.Font.color=\"blue\""); out.println("ChartSpace1.Charts(0).Title.caption=\"" + new String(SubTitle.getBytes("GBK"),"ISO8859_1") + "\""); if (HasLegend) out.println("ChartSpace1.Charts(0).HasLegend = True"); else out.println("ChartSpace1.Charts(0).HasLegend = True"); out.println("ChartSpace1.Charts(0).Title.caption=\"" + new String(SubTitle.getBytes("GBK"),"ISO8859_1") + "\""); out.println("ChartSpace1.Charts(0).type=" + Type); out.println("ChartSpace1.Charts(0).SetData c.chDimCategories, c.chDataLiteral,categories"); for (int i=0;i<nSize;i++) { ArrayList Rec=(ArrayList)Result.ResultBuffer.get(i); out.println("values(" + i + ")=\"" + ((DBColumn)Rec.get(Value)).Value + "\""); } out.println("ChartSpace1.Charts(0).SeriesCollection(0).SetData c.chDimValues, c.chDataLiteral, values"); if (!Type.equalsIgnoreCase("18")) { out.println("ChartSpace1.Charts(0).axes(c.chAxisPositionLeft).hastitle=true"); out.println(new String("ChartSpace1.Charts(0).axes(c.chAxisPositionLeft).title.Font.Name = \"黑体\"".getBytes("GBK"),"ISO8859_1")); out.println("ChartSpace1.Charts(0).axes(c.chAxisPositionLeft).title.Font.size = 11"); out.println("ChartSpace1.Charts(0).axes(c.chAxisPositionLeft).title.caption=\"" + new String(AxisTitle.getBytes("GBK"),"ISO8859_1") + "\""); if (!Type.equalsIgnoreCase("3")) out.println("ChartSpace1.Charts(0).Axes(c.chAxisPositionLeft).NumberFormat = \"0.##\""); else out.println("ChartSpace1.Charts(0).Axes(c.chAxisPositionBottom).NumberFormat = \"0.##\""); out.println("ChartSpace1.Charts(0).axes(c.chAxisPositionBottom).hastitle=true"); out.println(new String("ChartSpace1.Charts(0).axes(c.chAxisPositionBottom).title.Font.Name = \"黑体\"".getBytes("GBK"),"ISO8859_1")); out.println("ChartSpace1.Charts(0).axes(c.chAxisPositionBottom).title.Font.size = 12"); out.println("ChartSpace1.Charts(0).axes(c.chAxisPositionLeft).title.Font.size = 11"); out.println("ChartSpace1.Charts(0).axes(c.chAxisPositionBottom).title.caption=\"" + new String(Title.getBytes("GBK"),"ISO8859_1") + "\""); out.println("ChartSpace1.Charts(0).axes(c.chAxisPositionBottom).Font.size = 9"); out.println("ChartSpace1.Charts(0).axes(c.chAxisPositionLeft).Font.size = 9"); } out.println("ChartSpace1.Charts(0).Legend.Font.size=9"); out.println("ChartSpace1.Charts(0).SeriesCollection(0).Caption=\""+ new String(LegendTitle.getBytes("GBK"),"ISO8859_1") + "\""); out.println("end sub"); out.println("</script>"); out.println("</head>"); if (!BGURL.equalsIgnoreCase("")) out.println("<body background=\"" + new String(BGURL.getBytes("GBK"),"ISO8859_1") + "\">"); else out.println("<body bgcolor=\"" + BGColor + "\">"); out.println("<object id=ChartSpace1 classid=CLSID:0002E500-0000-0000-C000-000000000046 codebase=\"msowc.dll\" style=\"width:" + Width + ";height:" + Height + "\">"); out.println("</object>"); out.println("</body>"); out.println("</html>"); return ""; } finally { out.flush(); out.close(); } }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -