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(); } }