Исключение из HRESULT: 0x800A03EC Ошибка при сохранении файла Excel

Вопрос: Я сохраняю данные на событии нажатия кнопки, а ниже - код: using Excel = Microsoft.Office.Interop.Excel; Excel.Application xlApp; Excel.Workbook xlWorkBook; Excel.Worksheet xlWorkSheet; Excel.Range range; object misValue = System.Reflection.Missing.Value; String st = System.IO.Directory.GetCurrentDirectory() + "A.xlsx"; xlApp = new Excel.ApplicationClass(); xlWorkBook = xlApp.Workbooks.Open(st, 0, true, 5, "", "", true, Microsoft.Office.Interop.Excel.XlPlatform.xlWindows, "t", false, false, 0, true, 1, 0);

Вопрос:

Я сохраняю данные на событии нажатия кнопки, а ниже – код:

using Excel = Microsoft.Office.Interop.Excel; Excel.Application xlApp; Excel.Workbook xlWorkBook; Excel.Worksheet xlWorkSheet; Excel.Range range; object misValue = System.Reflection.Missing.Value; String st = System.IO.Directory.GetCurrentDirectory() + «\A.xlsx»; xlApp = new Excel.ApplicationClass(); xlWorkBook = xlApp.Workbooks.Open(st, 0, true, 5, «», «», true, Microsoft.Office.Interop.Excel.XlPlatform.xlWindows, «t», false, false, 0, true, 1, 0); xlWorkSheet = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(1); int i = 6; for (i = 6; i < 10; i++) { xlWorkBook.SaveAs(st, XlFileFormat.xlExcel9795, misValue, misValue, misValue, misValue, Excel.XlSaveAsAccessMode.xlShared, misValue, misValue, misValue, misValue, misValue); MessageBox.Show(xlWorkSheet.get_Range(«L» + @i, «L» + @i).Value2.ToString()); } xlWorkBook.Close(true, misValue, misValue); xlApp.Quit();

Когда я его сохраняю, это дает мне ошибку:

HRESULT: 0x800A03EC Ошибка при сохранении файла Excel

Ответ №1

Как я понимаю при сохранении исключений Excel Excel из HRESULT: 0x800A03EC Исключение возникает, когда аргументы метода SaveAs ошибочны. Просмотрите свои аргументы:

xlWorkBook.SaveAs(st1, XlFileFormat.xlExcel9795, misValue, misValue, misValue, misValue, Excel.XlSaveAsAccessMode.xlShared, misValue, misValue, misValue, misValue, misValue); Ответ №2

проверьте для индексов ячейки для листа, начиная с [1,1] sheet.cells [0,0] будет вызывать ошибку com.

Ответ №3

@Sebastian правильно в том, что вы вызываете SaveAs четыре раза, сохраняя его в том же месте, не закрывая. Это не сработает, вам нужно в первую очередь переместить это из цикла. Но внимательно глядя на ваш код, вы ничего не меняете в книге, поэтому вам не нужно экономить, и если вы что-то изменили, вам лучше позвонить в Save вместо SaveAs. Кроме того, вы указываете ReadOnly как истину, когда вы открываете книгу, поэтому попытка вызвать сохранение в любой емкости не будет работать.

Наконец, если вы используете> = С# 4, вы можете использовать необязательные параметры, поэтому все эти неправильные значения не нужны. Я прибрал ваш код ниже:

using Excel = Microsoft.Office.Interop.Excel; var st = System.IO.Directory.GetCurrentDirectory() + «\A.xlsx»; var xlApp = new Excel.Application(); var xlWorkBook = xlApp.Workbooks.Open(st); var xlWorkSheet = (Excel.Worksheet)xlWorkBook.Worksheets.Item[1]; for (var i = 6; i < 10; i++) { MessageBox.Show(xlWorkSheet.Range[«L» + @i, «L» + @i].Value2.ToString()); } //make some changes here xlWorkBook.Save(); xlWorkBook.Close(); xlApp.Quit(); Ответ №4

Я знаю, что эта ветка устарела, но это может помочь кому-то. У меня была та же проблема, и вызов функции Activate() в книге исправил ее для меня:

yourWorkBookObject.Activate()

Оцените статью
Добавить комментарий