在页面里显示Excel的图表

后台代码:
None.gif   private  DateTime beforeTime;             // Excel启动之前时间
None.gif
     private  DateTime afterTime;              // Excel启动之后时间
None.gif

None.gif    
protected   void  Page_Load( object  sender, EventArgs e)
ExpandedBlockStart.gifContractedBlock.gif    
dot.gif {
InBlock.gif        beforeTime 
= DateTime.Now;
InBlock.gif        Microsoft.Office.Interop.Excel.Application m_objExcel 
= null;
InBlock.gif        Microsoft.Office.Interop.Excel._Workbook m_objBook 
= null;
InBlock.gif        
object m_objOpt = System.Reflection.Missing.Value;
InBlock.gif        
try
ExpandedSubBlockStart.gifContractedSubBlock.gif        
dot.gif{
InBlock.gif            
string path = Server.MapPath(".");
InBlock.gif            m_objExcel 
= new Microsoft.Office.Interop.Excel.Application();
InBlock.gif            afterTime 
= DateTime.Now;
InBlock.gif
InBlock.gif            m_objExcel.DisplayAlerts 
= false;
InBlock.gif
InBlock.gif            m_objBook 
= m_objExcel.Workbooks.Open(path + "\\Book2.xls", m_objOpt, m_objOpt, m_objOpt, m_objOpt, m_objOpt, m_objOpt, m_objOpt, m_objOpt, m_objOpt, m_objOpt, m_objOpt, m_objOpt, m_objOpt, m_objOpt);
InBlock.gif            Microsoft.Office.Interop.Excel.Sheets m_objSheets 
= (Microsoft.Office.Interop.Excel.Sheets)m_objBook.Worksheets;
InBlock.gif            Microsoft.Office.Interop.Excel._Worksheet m_objSheet 
= (Microsoft.Office.Interop.Excel._Worksheet)(m_objSheets.get_Item(1));
InBlock.gif
InBlock.gif            SharedChart.CreateChart(
"柱状图", m_objBook, m_objSheet, "hehe""X轴""Y轴");
InBlock.gif            
//m_objExcel.Visible = true;
InBlock.gif
            m_objBook.PrintOut(m_objOpt, m_objOpt, 1false, m_objOpt, m_objOpt, m_objOpt, m_objOpt);
InBlock.gif            m_objBook.SaveAs(path 
+ "\\Book1.htm", Microsoft.Office.Interop.Excel.XlFileFormat.xlHtml, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlNoChange, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing);
InBlock.gif
InBlock.gif            Image1.ImageUrl 
= "~/Book1.files/image001.gif";
ExpandedSubBlockEnd.gif        }

InBlock.gif        
catch (Exception ex)
ExpandedSubBlockStart.gifContractedSubBlock.gif        
dot.gif{
InBlock.gif            KillExcelProcess();
InBlock.gif            
throw new Exception(ex.Message);
ExpandedSubBlockEnd.gif        }

InBlock.gif
InBlock.gif        
finally
ExpandedSubBlockStart.gifContractedSubBlock.gif        
dot.gif{
InBlock.gif            m_objBook.Close(m_objOpt, m_objOpt, m_objOpt);
InBlock.gif            m_objExcel.Workbooks.Close();
InBlock.gif            m_objExcel.Quit();
InBlock.gif            System.Runtime.InteropServices.Marshal.ReleaseComObject(m_objBook);
InBlock.gif            System.Runtime.InteropServices.Marshal.ReleaseComObject(m_objExcel);
InBlock.gif            m_objBook 
= null;
InBlock.gif            m_objExcel 
= null;
InBlock.gif            GC.Collect();
ExpandedSubBlockEnd.gif        }

ExpandedBlockEnd.gif    }

None.gif
ExpandedBlockStart.gifContractedBlock.gif    
/**/ /// <summary>
InBlock.gif    
/// 结束Excel进程
ExpandedBlockEnd.gif    
/// </summary>

None.gif      public   void  KillExcelProcess()
ExpandedBlockStart.gifContractedBlock.gif    
dot.gif {
InBlock.gif        Process[] myProcesses;
InBlock.gif        DateTime startTime;
InBlock.gif        myProcesses 
= Process.GetProcessesByName("Excel");
InBlock.gif
InBlock.gif        
//得不到Excel进程ID,暂时只能判断进程启动时间
InBlock.gif
        foreach (Process myProcess in myProcesses)
ExpandedSubBlockStart.gifContractedSubBlock.gif        
dot.gif{
InBlock.gif            startTime 
= myProcess.StartTime;
InBlock.gif
InBlock.gif            
if (startTime > beforeTime && startTime < afterTime)
ExpandedSubBlockStart.gifContractedSubBlock.gif            
dot.gif{
InBlock.gif                myProcess.Kill();
ExpandedSubBlockEnd.gif            }

ExpandedSubBlockEnd.gif        }

ExpandedBlockEnd.gif    }

前台:
None.gif < asp:Image  ID ="Image1"  runat ="server"  ImageUrl  />

生成柱状图:
ExpandedBlockStart.gif ContractedBlock.gif /**/ /// <summary>
InBlock.gif    
/// 柱状图
InBlock.gif    
/// </summary>
InBlock.gif    
/// <param name="chartName">表图名</param>
InBlock.gif    
/// <param name="m_objBook">当前工作簿</param>
InBlock.gif    
/// <param name="m_objSheet">数据所在Sheet</param>
InBlock.gif    
/// <param name="Title">标题</param>
InBlock.gif    
/// <param name="categoryTitle">X轴标题</param>
InBlock.gif    
/// <param name="valueTile">Y轴标题</param>
ExpandedBlockEnd.gif    
/// <returns></returns>

None.gif      public   static   bool  CreateChart( string  chartName, Microsoft.Office.Interop.Excel._Workbook m_objBook, Microsoft.Office.Interop.Excel._Worksheet m_objSheet,    string  Title,  string  categoryTitle,  string  valueTile)
ExpandedBlockStart.gifContractedBlock.gif    
dot.gif {
InBlock.gif        
try
ExpandedSubBlockStart.gifContractedSubBlock.gif        
dot.gif{
InBlock.gif            
//生成一个统计图对象:
InBlock.gif
            Microsoft.Office.Interop.Excel.Chart xlChart = (Microsoft.Office.Interop.Excel.Chart)m_objBook.Charts.Add(Type.Missing, m_objSheet, Type.Missing, Type.Missing);
InBlock.gif
InBlock.gif            
//设定数据来源:
InBlock.gif
            Microsoft.Office.Interop.Excel.Range cellRange = (Microsoft.Office.Interop.Excel.Range)m_objSheet.Cells[11];
InBlock.gif
InBlock.gif            
//通过向导生成Chart:
InBlock.gif
            xlChart.ChartWizard(cellRange.CurrentRegion, Microsoft.Office.Interop.Excel.XlChartType.xl3DColumn, Type.Missing, Microsoft.Office.Interop.Excel.XlRowCol.xlColumns, 10true, Title, categoryTitle, valueTile, "");
InBlock.gif
InBlock.gif            
//设置Chart得名称:
InBlock.gif
            xlChart.Name = chartName;
InBlock.gif
InBlock.gif            
//设置颜色:
InBlock.gif
            Microsoft.Office.Interop.Excel.ChartGroup grp = (Microsoft.Office.Interop.Excel.ChartGroup)xlChart.ChartGroups(1);
InBlock.gif            grp.GapWidth 
= 20;
InBlock.gif            grp.VaryByCategories 
= true;
InBlock.gif
InBlock.gif            
//设置圆柱形,并给它们显示加上数据标签:
InBlock.gif
            Microsoft.Office.Interop.Excel.Series s = (Microsoft.Office.Interop.Excel.Series)grp.SeriesCollection(1);
InBlock.gif            s.BarShape 
= Microsoft.Office.Interop.Excel.XlBarShape.xlCylinder;
InBlock.gif            s.HasDataLabels 
= true;
InBlock.gif
InBlock.gif            
//设置统计图的标题和图例的显示:
InBlock.gif
            xlChart.Legend.Position = Microsoft.Office.Interop.Excel.XlLegendPosition.xlLegendPositionTop;
InBlock.gif            xlChart.ChartTitle.Font.Size 
= 24;
InBlock.gif            xlChart.ChartTitle.Shadow 
= true;
InBlock.gif            xlChart.ChartTitle.Border.LineStyle 
= Microsoft.Office.Interop.Excel.XlLineStyle.xlContinuous;
InBlock.gif
InBlock.gif            
//设置两个轴的属性,Excel.XlAxisType.xlValue对应的是Y轴,Excel.XlAxisType.xlCategory对应的是X轴:
InBlock.gif
            Microsoft.Office.Interop.Excel.Axis valueAxis = (Microsoft.Office.Interop.Excel.Axis)xlChart.Axes(Microsoft.Office.Interop.Excel.XlAxisType.xlValue, Microsoft.Office.Interop.Excel.XlAxisGroup.xlPrimary);
InBlock.gif            valueAxis.AxisTitle.Orientation 
= -90;
InBlock.gif            Microsoft.Office.Interop.Excel.Axis categoryAxis 
= (Microsoft.Office.Interop.Excel.Axis)xlChart.Axes(Microsoft.Office.Interop.Excel.XlAxisType.xlCategory, Microsoft.Office.Interop.Excel.XlAxisGroup.xlPrimary);
InBlock.gif            
//categoryAxis.AxisTitle.Font.Name = "MS UI Gothic";
InBlock.gif

InBlock.gif            
return true;
ExpandedSubBlockEnd.gif        }

InBlock.gif        
catch (Exception ex)
ExpandedSubBlockStart.gifContractedSubBlock.gif        
dot.gif{
InBlock.gif            
throw new Exception(ex.Message);
InBlock.gif            
return false;
ExpandedSubBlockEnd.gif        }

InBlock.gif
InBlock.gif        
return false;
ExpandedBlockEnd.gif    }

转载于:https://www.cnblogs.com/tonyboy/archive/2007/06/21/791288.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值