C#操作excel出错:(异常来自 HRESULT:0x80010105 (RPC_E_SERVERFAULT))A03EC
private void OpenExcel(string strFileName)
{
object missing = System.Reflection.Missing.Value;
Application excel = new Application();
if (excel == null)
{
Response.Write("<script>alert('Can't access excel')</script>");
}
else
{
excel.Visible = false;
excel.UserControl = true;
// 以只读的形式打开EXCEL文件
Workbook wb = excel.Application.Workbooks.Open(strFileName, missing, true, missing, missing, missing,
missing, missing, missing, true, missing, missing, missing, missing, missing);
//取得第一个工作薄
Worksheet ws = (Worksheet)wb.Worksheets.get_Item(1);
//取得总记录行数 (包括标题列)
int rowsint = ws.UsedRange.Cells.Rows.Count; //得到行数
//int columnsint = mySheet.UsedRange.Cells.Columns.Count;//得到列数
//取得数据范围区域 (不包括标题列)
Range rng1 = ws.Cells.get_Range("A1", "A" + rowsint); //item
Range rng2 = ws.Cells.get_Range("B1", "B" + rowsint); //Customer
object[,] arryItem = (object[,])rng1.Value2; //get range's value
object[,] arryCus = (object[,])rng2.Value2;
//将新值赋给一个数组
string[] arryA = new string[rowsint];
string[] arryB = new string[rowsint];
for (int i = 1; i <= rowsint; i++)
{
//Item_Code列
arryA[i - 1] = arryItem[i, 1].ToString();
//Customer_Name列
arryB[i - 1] = arryCus[i, 1].ToString();
}
//Response.Write(arry[0, 0] + " / " + arry[0, 1] + "#" + arry[rowsint - 2, 0] + " / " + arry[rowsint - 2, 1]);
}
excel.Quit(); excel = null;
Process[] procs = Process.GetProcessesByName("excel");
foreach (Process pro in procs)
{
pro.Kill();//没有更好的方法,只有杀掉进程
}
GC.Collect();
}
当 excel,visible = true 时可以正常运行,求解决。每次弹出来一个excel表接受不了呀=。=