后台代码:
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, 1, false, 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();
}
}
}
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, 1, false, 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[1, 1];
//通过向导生成Chart:
xlChart.ChartWizard(cellRange.CurrentRegion, Microsoft.Office.Interop.Excel.XlChartType.xl3DColumn, Type.Missing, Microsoft.Office.Interop.Excel.XlRowCol.xlColumns, 1, 0, true, 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;
}
/// 柱状图
/// </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[1, 1];
//通过向导生成Chart:
xlChart.ChartWizard(cellRange.CurrentRegion, Microsoft.Office.Interop.Excel.XlChartType.xl3DColumn, Type.Missing, Microsoft.Office.Interop.Excel.XlRowCol.xlColumns, 1, 0, true, 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;
}