Excel Interop工作表副本引发exceptionHRESULT:0x800A03EC
我在使用Interop在Excel 2003中复制工作表时遇到问题。 该代码适用于30-40个副本,然后抛出exception“HRESULTexception:0x800A03EC”。 下面的testing代码已经包含了http://support.microsoft.com/kb/210684/en-us中提供的修补程序,但没有成功。 有没有人知道这个解决方法? 提前致谢
using Excel = Microsoft.Office.Interop.Excel; private void button2_Click(object sender, EventArgs e) { string template_path = @"c:\temp\template.xlt"; string filename = @"c:\temp\testxl1.xls"; if (File.Exists(filename)) File.Delete(filename); object missing = System.Reflection.Missing.Value; System.Globalization.CultureInfo my_culture = System.Threading.Thread.CurrentThread.CurrentCulture; System.Threading.Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("en-US"); Excel.ApplicationClass xlapp = new Excel.ApplicationClass(); xlapp.Visible = true; xlapp.UserControl = true; Excel.Workbook xlwb = xlapp.Workbooks.Add(template_path); xlwb.SaveAs(@filename, missing, missing, missing, missing, missing, Excel.XlSaveAsAccessMode.xlNoChange, missing, missing, missing, missing, missing); Excel.Worksheet xlws = xlwb.Worksheets["diario"] as Excel.Worksheet; int copies = 200; for (int i = 0; i < copies; i++) { #region Patch kb/210684 if (copies % 10 == 0) { xlwb.Close(true, missing, missing); System.Runtime.InteropServices.Marshal.ReleaseComObject(xlwb); xlwb = null; System.Runtime.InteropServices.Marshal.ReleaseComObject(xlws); xlws = null; Application.DoEvents(); xlwb = xlapp.Workbooks.Open(@filename, 0, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing); xlws = xlwb.Worksheets["diario"] as Excel.Worksheet; } #endregion xlws.Copy(System.Reflection.Missing.Value, xlwb.Worksheets.Count); } System.Runtime.InteropServices.Marshal.ReleaseComObject(xlws); xlws = null; xlwb.Close(true, missing, missing); System.Runtime.InteropServices.Marshal.ReleaseComObject(xlwb); xlwb = null; xlapp.Quit(); System.Runtime.InteropServices.Marshal.ReleaseComObject(xlapp); xlapp = null; System.Threading.Thread.CurrentThread.CurrentCulture = my_culture; }
我唯一能find的是,当本地机器没有设置为美国英语时,exception可能是Excel LCID问题。
http://www.made4dotnet.com/Default.aspx?tabid=141&aid=15
要么