2013-03-19 3 views
1

Я получаю ошибкуSystem.Runtime.InteropServices.COMException (0x800A03EC) ошибка

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); 

Что здесь не так? Это не позволяет сохранить его. На каком-то другом сервере он сохраняет его, но с макросом в нем, который я не хочу.

Попробовать ERRor за изображением

enter image description here

+0

Что за ты спишь нить? Почему вы дважды отпускаете объект com? – abatishchev

+0

@abatishchev: Пожалуйста, проверьте мой опубликованный пост. – user2144293

+0

Ваш пустой блок блокировки проглотит все исключения и затруднит выяснение, что происходит не так! Вы можете отлаживать свой сервер? – JMK

ответ

2

его не рекомендуется использовать автоматизации делопроизводства на сервере, вы можете рассмотреть альтернативу как epplus.

Для вашего проблемного офиса 2003 требуется Microsoft.Office.Excel версии 11 и Office 2010 потребуется версия 14. Я предполагаю, что в вашем проекте вы бы добавили версию 14, следовательно, он работал со словом 2010 года, но не работал на сервере с офисом 2003

попробовать позднее связывание http://support.microsoft.com/kb/302902, если это решит вашу prpoblem, считать это iterop выдавать

+1

Я развернул приложения, написанные с 2010 на моей машине для компьютеров до 2007 года, без проблем, я подозреваю, что это потому, что OP пытается сделать что-то, что работает в 2010 году, но не в 2003 году, но пустые блоки блокировки делают это невозможно понять, что происходит не так! – JMK

+0

Какая версия взаимодействия вы ссылаетесь в своем проекте? –

+1

Я не ОП, я просто диск от комментатора, вы бы лучше направили свой вопрос на @ user2144293 – JMK

0

Вы можете использовать беловский код, что я написал. Я попробовал в другом проекте. и он работает

EDIT:

, вероятно, причиной вашей ошибки ваша версия 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(); 
+0

EFE: Спасибо за ответ, но моя проблема заключается в том, чтобы сохранить его, но в нем есть макрос. Почему это так? Я не хочу, чтобы макрос был доступен – user2144293

0

Это проблема разрешения, когда IIS запущен У меня была эта проблема, и я решил ее таким образом

Я пошел по папкам

C: \ Windows \ System32 \ Config \ SystemProfile

и

C: \ Windows \ SysWOW64 \ конф ig \ SystemProfile

являются защищенными системными папками, обычно они имеют блокировку.

Щелкните правой кнопкой мыши-> Защита карты-> Нажмите Изменить-> Добавить untente "Пользователь автоответчика" и назначьте разрешения.

На данный момент все решается, если вы все еще есть проблемы, попытаться дать все разрешения на «Все»

Смежные вопросы