- NUGET添加Microsoft.Office.Interop.Excel动态库
- 引用的命名空间
using System.Reflection;
using Excel = Microsoft.Office.Interop.Excel;
using System.IO;
using System.Runtime.InteropServices;
- 核心代码(没有文件,就创建一个文件,有的话直接在最后追加)
Excel.Application excelApp = new Excel.Application();
excelApp.AlertBeforeOverwriting = false;
Excel.Workbook excelDoc = null;
object Nothing = Missing.Value;
Excel.Worksheet ws = null;
string FileName = "";
try
{
string strFilePath = @"D:\111111";
if (index == 1)
{
strFilePath += @"\1\";
}
else
{
strFilePath += @"\2\";
}
// strFilePath += @"\";
strFilePath += System.DateTime.Now.ToString("yyyy");
strFilePath += @"\";
strFilePath += System.DateTime.Now.ToString("MM");
if (System.IO.Directory.Exists(strFilePath) == false)
{
System.IO.Directory.CreateDirectory(strFilePath);
}
FileName = strFilePath + @"\" + System.DateTime.Now.ToString("dd") + @".xlsx";
if (System.IO.File.Exists(FileName) == false)
{
excelDoc = excelApp.Workbooks.Add(Nothing);
ws = (Excel.Worksheet)excelDoc.Sheets[1];
ws.Cells.Columns.AutoFit();
ws.Cells[1, "A"] = "时间";
ws.Cells[1, "B"] = "xxxx";
ws.Cells[1, "C"] = "yyyy";
ws.Cells[2, "A"] = System.DateTime.Now.ToString("HH:mm:ss");
ws.Cells[2, "B"] = 121111;
ws.Cells[2, "C"] = 123123123;
excelDoc.SaveAs(FileName, Nothing, Nothing, Nothing, Nothing, Nothing, Excel.XlSaveAsAccessMode.xlNoChange, Nothing, Nothing, Nothing, Nothing, Nothing);
}
else
{
excelDoc = excelApp.Workbooks.Open(FileName,false, false, Excel.XlPlatform.xlWindows, true, false, true, true, Missing.Value);
ws = (Excel.Worksheet)excelDoc.Worksheets.get_Item(1);
ws.Cells.Columns.AutoFit();
Excel.Range range = ws.UsedRange;
int usedRowCount = range.Rows.Count;
ws.Cells[usedRowCount + 1, "A"] = System.DateTime.Now.ToString("HH:mm:ss");
ws.Cells[usedRowCount + 1, "B"] = 11111;
ws.Cells[usedRowCount + 1, "C"] = 123123123;
excelDoc.Save();
}
}
catch (Exception exp)
{
}
finally
{
excelDoc.Close(true, Nothing, Nothing);
excelApp.Quit();
IntPtr t = new IntPtr(excelApp.Hwnd); //杀死进程的好方法,很有效
int k = 0;
GetWindowThreadProcessId(t, out k);
System.Diagnostics.Process p = System.Diagnostics.Process.GetProcessById(k);
p.Kill();
}
- 要引用这个函数,杀进程的,不然程序退出了,任务管理器里面还有excel程序未关闭
[DllImport("User32.dll", CharSet = CharSet.Auto)]
public static extern int GetWindowThreadProcessId(IntPtr hwnd, out int ID);