现在的位置: 首页 > 综合 > 正文

在页面里显示Excel的图表

2012年11月06日 ⁄ 综合 ⁄ 共 5614字 ⁄ 字号 评论关闭
后台代码:
 private DateTime beforeTime;            //Excel启动之前时间
    private DateTime afterTime;             //Excel启动之后时间

    
protected void Page_Load(object sender, EventArgs e)
    
{
        beforeTime 
= DateTime.Now;
        Microsoft.Office.Interop.Excel.Application m_objExcel 
= null;
        Microsoft.Office.Interop.Excel._Workbook m_objBook 
= null;
        
object m_objOpt = System.Reflection.Missing.Value;
        
try
        
{
            
string path = Server.MapPath(".");
            m_objExcel 
= new Microsoft.Office.Interop.Excel.Application();
            afterTime 
= DateTime.Now;

            m_objExcel.DisplayAlerts 
= false;

            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);
            Microsoft.Office.Interop.Excel.Sheets m_objSheets 
= (Microsoft.Office.Interop.Excel.Sheets)m_objBook.Worksheets;
            Microsoft.Office.Interop.Excel._Worksheet m_objSheet 
= (Microsoft.Office.Interop.Excel._Worksheet)(m_objSheets.get_Item(1));

            SharedChart.CreateChart(
"柱状图", m_objBook, m_objSheet, "hehe""X轴""Y轴");
            
//m_objExcel.Visible = true;
            m_objBook.PrintOut(m_objOpt, m_objOpt, 1false, m_objOpt, m_objOpt, m_objOpt, m_objOpt);
            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);

            Image1.ImageUrl 
= "~/Book1.files/image001.gif";
        }

        
catch (Exception ex)
        
{
            KillExcelProcess();
            
throw new Exception(ex.Message);
        }


        
finally
        
{
            m_objBook.Close(m_objOpt, m_objOpt, m_objOpt);
            m_objExcel.Workbooks.Close();
            m_objExcel.Quit();
            System.Runtime.InteropServices.Marshal.ReleaseComObject(m_objBook);
            System.Runtime.InteropServices.Marshal.ReleaseComObject(m_objExcel);
            m_objBook 
= null;
            m_objExcel 
= null;
            GC.Collect();
        }

    }


    
/// <summary>
    
/// 结束Excel进程
    
/// </summary>

    public void KillExcelProcess()
    
{
        Process[] myProcesses;
        DateTime startTime;
        myProcesses 
= Process.GetProcessesByName("Excel");

        
//得不到Excel进程ID,暂时只能判断进程启动时间
        foreach (Process myProcess in myProcesses)
        
{
            startTime 
= myProcess.StartTime;

            
if (startTime > beforeTime && startTime < afterTime)
            
{
                myProcess.Kill();
            }

        }

    }

前台:

<asp:Image ID="Image1" runat="server" ImageUrl />

生成柱状图:

/// <summary>
    
/// 柱状图
    
/// </summary>
    
/// <param name="chartName">表图名</param>
    
/// <param name="m_objBook">当前工作簿</param>
    
/// <param name="m_objSheet">数据所在Sheet</param>
    
/// <param name="Title">标题</param>
    
/// <param name="categoryTitle">X轴标题</param>
    
/// <param name="valueTile">Y轴标题</param>
    
/// <returns></returns>

    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)
    
{
        
try
        
{
            
//生成一个统计图对象:
            Microsoft.Office.Interop.Excel.Chart xlChart = (Microsoft.Office.Interop.Excel.Chart)m_objBook.Charts.Add(Type.Missing, m_objSheet, Type.Missing, Type.Missing);

            
//设定数据来源:
            Microsoft.Office.Interop.Excel.Range cellRange = (Microsoft.Office.Interop.Excel.Range)m_objSheet.Cells[11];

            
//通过向导生成Chart:
            xlChart.ChartWizard(cellRange.CurrentRegion, Microsoft.Office.Interop.Excel.XlChartType.xl3DColumn, Type.Missing, Microsoft.Office.Interop.Excel.XlRowCol.xlColumns, 10true, Title, categoryTitle, valueTile, "");

            
//设置Chart得名称:
            xlChart.Name = chartName;

            
//设置颜色:
            Microsoft.Office.Interop.Excel.ChartGroup grp = (Microsoft.Office.Interop.Excel.ChartGroup)xlChart.ChartGroups(1);
            grp.GapWidth 
= 20;
            grp.VaryByCategories 
= true;

            
//设置圆柱形,并给它们显示加上数据标签:
            Microsoft.Office.Interop.Excel.Series s = (Microsoft.Office.Interop.Excel.Series)grp.SeriesCollection(1);
            s.BarShape 
= Microsoft.Office.Interop.Excel.XlBarShape.xlCylinder;
            s.HasDataLabels 
= true;

            
//设置统计图的标题和图例的显示:
            xlChart.Legend.Position = Microsoft.Office.Interop.Excel.XlLegendPosition.xlLegendPositionTop;
            xlChart.ChartTitle.Font.Size 
= 24;
            xlChart.ChartTitle.Shadow 
= true;
            xlChart.ChartTitle.Border.LineStyle 
= Microsoft.Office.Interop.Excel.XlLineStyle.xlContinuous;

            
//设置两个轴的属性,Excel.XlAxisType.xlValue对应的是Y轴,Excel.XlAxisType.xlCategory对应的是X轴:
            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);
            valueAxis.AxisTitle.Orientation 
= -90;
            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);
            
//categoryAxis.AxisTitle.Font.Name = "MS UI Gothic";

            
return true;
        }

        
catch (Exception ex)
        
{
            
throw new Exception(ex.Message);
            
return false;
        }


        
return false;
    }

抱歉!评论已关闭.