后台代码:
private
DateTime beforeTime;
//
Excel启动之前时间
private
DateTime afterTime;
//
Excel启动之后时间
protected
void
Page_Load(
object
sender, EventArgs e)
![ExpandedBlockStart.gif](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
{
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
![ExpandedSubBlockStart.gif](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
string path = Server.MapPath(".");
m_objExcel = new Microsoft.Office.Interop.Excel.Application();
afterTime = DateTime.Now;
![InBlock.gif](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
m_objExcel.DisplayAlerts = false;
![InBlock.gif](https://www.cnblogs.com/Images/OutliningIndicators/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);
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));
![InBlock.gif](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
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);
![InBlock.gif](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
Image1.ImageUrl = "~/Book1.files/image001.gif";
}
catch (Exception ex)
![ExpandedSubBlockStart.gif](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
KillExcelProcess();
throw new Exception(ex.Message);
}
![InBlock.gif](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
finally
![ExpandedSubBlockStart.gif](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
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();
}
}
![None.gif](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![ExpandedBlockStart.gif](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
/**/
/// <summary>
/// 结束Excel进程
/// </summary>
public
void
KillExcelProcess()
![ExpandedBlockStart.gif](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
{
Process[] myProcesses;
DateTime startTime;
myProcesses = Process.GetProcessesByName("Excel");
![InBlock.gif](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
//得不到Excel进程ID,暂时只能判断进程启动时间
foreach (Process myProcess in myProcesses)
![ExpandedSubBlockStart.gif](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
startTime = myProcess.StartTime;
![InBlock.gif](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
if (startTime > beforeTime && startTime < afterTime)
![ExpandedSubBlockStart.gif](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
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)
![ExpandedBlockStart.gif](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
{
try
![ExpandedSubBlockStart.gif](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.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](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
//设定数据来源:
Microsoft.Office.Interop.Excel.Range cellRange = (Microsoft.Office.Interop.Excel.Range)m_objSheet.Cells[1, 1];
![InBlock.gif](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
//通过向导生成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, "");
![InBlock.gif](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
//设置Chart得名称:
xlChart.Name = chartName;
![InBlock.gif](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
//设置颜色:
Microsoft.Office.Interop.Excel.ChartGroup grp = (Microsoft.Office.Interop.Excel.ChartGroup)xlChart.ChartGroups(1);
grp.GapWidth = 20;
grp.VaryByCategories = true;
![InBlock.gif](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
//设置圆柱形,并给它们显示加上数据标签:
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;
![InBlock.gif](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
//设置统计图的标题和图例的显示:
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;
![InBlock.gif](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
//设置两个轴的属性,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";
![InBlock.gif](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
return true;
}
catch (Exception ex)
![ExpandedSubBlockStart.gif](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
throw new Exception(ex.Message);
return false;
}
![InBlock.gif](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
return false;
}
转载于:https://www.cnblogs.com/tonyboy/archive/2007/06/21/791288.html