.net C# COM组件,实现EXCEL自动转换格式与如何退出EXCEL Process

来源:互联网 发布:js控制input焦点 编辑:程序博客网 时间:2024/05/16 08:24

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Runtime.InteropServices;
using System.Reflection;
using System.Diagnostics;
using Microsoft.Office.Interop.Excel;

namespace Report
{
    [Guid("7F77CA9F-41DC-4161-AC94-7349FDCC5C28")]
    public interface Ireport
    {
        [DispId(1)]
        void ReportrstjToHtm();
        [DispId(2)]
        void ReportrshzToHtm();
        [DispId(3)]
        void ReportxcfxToHtm();
    }

    [Guid("47C976E0-C208-4740-AC42-41212D3C34F0"),
    InterfaceType(ComInterfaceType.InterfaceIsIDispatch)]
    public interface Ereport
    {
    }

    [Guid("3948822C-9D6A-454e-820E-D5119898E900"),
    ClassInterface(ClassInterfaceType.None),
    ComSourceInterfaces(typeof(Ereport))]
    public class Report : Ireport
    {
        public Report()
        {
        }


        public void ReportrstjToHtm()
        {
        DateTime startTime = DateTime.Now;
        Microsoft.Office.Interop.Excel.Application excelapp = new Microsoft.Office.Interop.Excel.ApplicationClass();
        excelapp.Application.DisplayAlerts = false;
        excelapp.Application.Workbooks.Open("D:\\Program Files\\Kingdee\\K3ERP\\KDHR\\SITEFILE\\WEBUI\\js\\rstjbb.xlsx",
                Missing.Value,
                Missing.Value,
                Missing.Value,
                Missing.Value,
                Missing.Value,
                Missing.Value,
                Missing.Value,
                Missing.Value,
                Missing.Value,
                Missing.Value,
                Missing.Value,
                Missing.Value,
                Missing.Value,
                Missing.Value
                );
        excelapp.Application.ActiveWorkbook.SaveAs("D:\\Program Files\\Kingdee\\K3ERP\\KDHR\\SITEFILE\\WEBUI\\js\\rstjbb.aspx", Microsoft.Office.Interop.Excel.XlFileFormat.xlHtml, Missing.Value,
                Missing.Value,
                Missing.Value,
                Missing.Value,
                Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlNoChange,
                Missing.Value,
                Missing.Value,
                Missing.Value,
                Missing.Value,
                Missing.Value);
        excelapp.Application.Workbooks.Close();
        excelapp.Application.Quit();
        excelapp.Quit();
        System.Runtime.InteropServices.Marshal.ReleaseComObject(excelapp);
        DateTime endTime = DateTime.Now;
        killProcess(startTime, endTime, "EXCEL");
        GC.Collect(); //回收垃圾
        }

        public void ReportrshzToHtm()
        {
        DateTime startTime = DateTime.Now;
        Microsoft.Office.Interop.Excel.Application excelapp1 = new Microsoft.Office.Interop.Excel.ApplicationClass();
        excelapp1.Application.DisplayAlerts = false;
        excelapp1.Application.Workbooks.Open("D:\\Program Files\\Kingdee\\K3ERP\\KDHR\\SITEFILE\\WEBUI\\js\\rshzbb.xlsx",
            Missing.Value,
            Missing.Value,
            Missing.Value,
            Missing.Value,
            Missing.Value,
            Missing.Value,
            Missing.Value,
            Missing.Value,
            Missing.Value,
            Missing.Value,
            Missing.Value,
            Missing.Value,
            Missing.Value,
            Missing.Value
            );
        excelapp1.Application.ActiveWorkbook.SaveAs("D:\\Program Files\\Kingdee\\K3ERP\\KDHR\\SITEFILE\\WEBUI\\js\\rshzbb.aspx", Microsoft.Office.Interop.Excel.XlFileFormat.xlHtml, Missing.Value,
                Missing.Value,
                Missing.Value,
                Missing.Value,
                Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlNoChange,
                Missing.Value,
                Missing.Value,
                Missing.Value,
                Missing.Value,
                Missing.Value);
        excelapp1.Application.Workbooks.Close();
        excelapp1.Application.Quit();
        excelapp1.Quit();
        System.Runtime.InteropServices.Marshal.ReleaseComObject(excelapp1);
        DateTime endTime = DateTime.Now;
        killProcess(startTime, endTime, "EXCEL");
        GC.Collect(); //回收垃圾
        }

        public void ReportxcfxToHtm()
        {
        DateTime startTime = DateTime.Now;
        Microsoft.Office.Interop.Excel.Application excelapp2 = new Microsoft.Office.Interop.Excel.ApplicationClass();
        excelapp2.Application.DisplayAlerts = false;
        excelapp2.Application.Workbooks.Open("D:\\Program Files\\Kingdee\\K3ERP\\KDHR\\SITEFILE\\WEBUI\\js\\xcfxbb.xlsx",
            Missing.Value,
            Missing.Value,
            Missing.Value,
            Missing.Value,
            Missing.Value,
            Missing.Value,
            Missing.Value,
            Missing.Value,
            Missing.Value,
            Missing.Value,
            Missing.Value,
            Missing.Value,
            Missing.Value,
            Missing.Value
            );
        excelapp2.Application.ActiveWorkbook.SaveAs("D:\\Program Files\\Kingdee\\K3ERP\\KDHR\\SITEFILE\\WEBUI\\js\\xcfxbb.aspx", Microsoft.Office.Interop.Excel.XlFileFormat.xlHtml, Missing.Value,
                Missing.Value,
                Missing.Value,
                Missing.Value,
                Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlNoChange,
                Missing.Value,
                Missing.Value,
                Missing.Value,
                Missing.Value,
                Missing.Value);
        excelapp2.Application.Workbooks.Close();
        excelapp2.Application.Quit();
        excelapp2.Quit();
        System.Runtime.InteropServices.Marshal.ReleaseComObject(excelapp2);
        DateTime endTime = DateTime.Now;
        killProcess(startTime, endTime, "EXCEL");
        GC.Collect(); //回收垃圾
        }

        protected void killProcess(DateTime start, DateTime end, string ProcessName)
        {
            Process[] myProcesses;
            DateTime ProStartTime;
            myProcesses = Process.GetProcessesByName(ProcessName);
            foreach (Process myProcess in myProcesses)
            {
                ProStartTime = myProcess.StartTime;
                if (start <= ProStartTime && ProStartTime <= end)
                {
                    myProcess.Kill();
                }
            }
        }

    }
}

原创粉丝点击