C#创建excel并释放资源

using System;
using Microsoft.Office.Interop.Excel;
using Excel = Microsoft.Office.Interop.Excel;
using System.IO;
using System.Windows.Forms;
using System.Runtime.InteropServices;

public class Class2
    {
        private string filePath;
        private Excel.Application app = null;
        private Workbook wb;
        private Worksheet ws;
        private Workbooks wbs;
        /// <summary>
        /// 创建
        /// </summary>
        /// <param name="filePath"></param>
        public void create(string filePath)
        {
            this.filePath = filePath;
            app = new Excel.Application();
            if (app == null)
            {
                Out.show("无法创建Excel对象,可能您的电脑未安装Excel!");
                app.Quit();
                GC.Collect();
                return;
            }
            try
            {
                app.Visible = false;
                app.Application.DisplayAlerts = false;
            }
            catch (Exception e)
            {

            }
            wbs = app.Workbooks;
            wb = wbs.Add(Excel.XlWBATemplate.xlWBATWorksheet);
            ws = wb.Worksheets[1] as Worksheet;
        }

        public void Write()
        {
            ws.Cells[1, 1] = "hello";
        }
        /// <summary>
        /// 保存文件
        /// </summary>
        public void Save()
        {
            while (File.Exists(filePath))
            {
                try
                {
                    File.Delete(filePath);
                    break;
                }
                catch (Exception e)
                {
                    if (MessageBox.Show("该文件已被占用,请关闭", "提示", MessageBoxButtons.RetryCancel)
                        != DialogResult.Retry)
                    {
                        break;
                    };
                }
            }
            wb.Saved = true;
            wb.SaveAs(filePath);
            Kill();
        }
        [DllImport("User32.dll", CharSet = CharSet.Auto)]
        public static extern int GetWindowThreadProcessId(IntPtr hwnd, out int ID);
        /// <summary>
        /// 杀掉对应进程,释放资源
        /// </summary>
        public void Kill()
        {
            int processId;
            GetWindowThreadProcessId(new IntPtr(app.Hwnd), out processId);
            Out.show(processId.ToString());
            System.Diagnostics.Process.GetProcessById(processId).Kill();
        }
    }

 

转载于:https://www.cnblogs.com/jecyhw/p/4047216.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值