在做单元测试的时候需要临时生成xls文件,测试结束后删除,最初是通过FileInfo对象新建文件,代码如下:
FileInfo fi=new FileInfo(@"D:/temp.xls");
fi.create();
然而在打开新建文件时报错无法连接服务器或文件属性为只读或无权限,尚未解决问题。后通过其他途径解决:
ObjExcel.Workbooks.Add(objMissing);
objWorksheet=objExcel.ActiveWorkbook.Activesheet As Excel.Worksheet;
完整代码如下:
Excel.ApplicationClass objExcel = null;
Excel.Workbook objWorkbook = null;
Excel.Worksheet objWorksheet = null;
object objSaveChanges = true;
System.Reflection.Missing objMissing = System.Reflection.Missing.Value;
try
{
objExcel = new Excel.ApplicationClass();
objExcel.Visible = false;
objExcel.UserControl = true;
objExcel.DisplayAlerts = false;
objExcel.Workbooks.Add(objMissing);
objWorksheet = objExcel.ActiveWorkbook.ActiveSheet as Excel.Worksheet;
int rowIndex = 10; // TODO: 初始化为适当的值
accessor.InsertRows(objWorksheet, rowIndex);
}
catch (Exception ex)
{
throw ex;
}
finally
{
if (objWorksheet != null)
{
System.Runtime.InteropServices.Marshal.ReleaseComObject(objWorksheet);
}
if (objWorkbook != null)
{
objWorkbook.Close(objSaveChanges, objMissing, objMissing);
System.Runtime.InteropServices.Marshal.ReleaseComObject(objWorkbook);
}
if (objExcel != null)
{
objExcel.Application.Workbooks.Close();
objExcel.Workbooks.Close();
objExcel.Application.Quit();
objExcel.Quit();
System.Runtime.InteropServices.Marshal.ReleaseComObject(objExcel);
System.Runtime.InteropServices.Marshal.FinalReleaseComObject(objExcel);
}
objWorksheet = null;
objWorkbook = null;
objExcel = null;
GC.Collect();
GC.WaitForPendingFinalizers();
System.Diagnostics.Process[] progresses =
System.Diagnostics.Process.GetProcessesByName("EXCEL");
}
}