我收到错误
System.Runtime.InteropServices.COMException(0x800A03EC)
对于我下面的C#代码,我正在尝试在这里保存工作表,
但是在本地环境中也是如此:Office 2010,Windows 2003
不在服务器上运行:Office 2003,Windows 2003
代码:
wBook = xCel.Workbooks.Open(ExcelPath);
wSheet = (Excel.Worksheet)wBook.Worksheets.get_Item(1);
wSheet.Copy(Type.Missing, Type.Missing);
wSheet = (Excel.Worksheet)wBook.Sheets[1];
wSheet.SaveAs(ExcelCopyPath);
这里有什么问题?它在保存时失败了。 在其他一些服务器中,它会保存,但其中包含我不想要的宏。
示例关注错误图片
答案 0 :(得分:2)
在服务器上使用办公自动化是不好的做法,您可以考虑像epplus这样的替代方案。
对于您的问题Office 2003要求Microsoft.Office.Excel版本11和Office 2010将需要版本14。我想在你的项目中你会添加第14版,因此它使用了单词2010但在office 2003的服务器上没有工作
尝试延迟绑定http://support.microsoft.com/kb/302902,如果这解决了你的问题,请将其视为iterop问题
答案 1 :(得分:0)
你可以使用我写的belov代码。我试过另一个项目。它正在运作
编辑:
可能导致错误的原因是您的excel版本与您在代码中使用的版本不同。
Microsoft.Office.Interop.Excel.Application xlApp;
Microsoft.Office.Interop.Excel.Workbook xlWorkBook;
Microsoft.Office.Interop.Excel.Worksheet xlWorkSheet;
object misValue = System.Reflection.Missing.Value;
xlApp = new Microsoft.Office.Interop.Excel.Application();
xlWorkBook = xlApp.Workbooks.Add(misValue);
xlWorkSheet = (Microsoft.Office.Interop.Excel.Worksheet)xlWorkBook.Worksheets.get_Item(1);
xlWorkSheet.Cells[1, 1] = "xxx";
xlWorkSheet.Cells[2, 1] = "yyy";
xlWorkSheet.get_Range("A1", "A7").Borders.Weight = 2;
xlWorkSheet.get_Range("A1", "A7").Font.Bold = true;
xlWorkSheet.get_Range("A1", "A7").Font.Size = 13;
xlWorkSheet.get_Range("A2", "A7").Borders.Weight = 2;
xlWorkSheet.get_Range("A2", "A7").Font.Bold = true;
xlWorkSheet.get_Range("A2", "A7").Font.Size = 13;
xlWorkSheet.get_Range("A1", "B9").ColumnWidth = 25;
xlWorkBook.SaveAs(System.Windows.Forms.Application.StartupPath + "\\exceller\\6 Nolu sosyal ve kültürel faaliyetler\\" +
txtFaaliyetAdi.Text + ".xls", Microsoft.Office.Interop.Excel.XlFileFormat.xlWorkbookNormal, misValue, misValue, misValue
, misValue, Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlExclusive, misValue, misValue, misValue, misValue, misValue);
xlWorkBook.Close(true, misValue, misValue);
xlApp.Quit();
答案 2 :(得分:0)
IIS正在运行时出现权限问题 我有这个问题,我以这种方式解决了它
我去了文件夹
C:\ Windows \ System32 \ config \ SystemProfile
和
<强> C:\的Windows \ Syswow64资料\配置\ SystemProfile 强>
是受保护的系统文件夹,它们通常具有锁定。
右键单击 - &GT;卡安全 - &gt;点击编辑 - &gt;添加未经考虑的&#34; Autenticadet用户&#34;并分配权限。
此时一切都已解决,如果您仍有问题,请尝试将所有权限授予&#34;每个人&#34;