2013-03-24 9 views
2

Я сохранение данных на события нажатия кнопки и ниже код:Исключение из 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); 
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 Error while saving Excel file

+2

Вы пытаетесь сохранить той же книге, в 4 раза без изменения имени файла? – Sebastian

+0

, но я получаю ошибку только в первый раз – user1594950

+1

Вам нужно быть более конкретным. Появляются ли все MessageBoxes? Вы уверены, что процесс сохранения завершен? – Sebastian

ответ

2

Как я понимаю в Saving an Excel File Exception from HRESULT: 0x800A03EC Исключение, возникающее при неправильных аргументах метода SaveAs. Просмотрите свои аргументы в:

xlWorkBook.SaveAs(st1, XlFileFormat.xlExcel9795, misValue, misValue, misValue, misValue, Excel.XlSaveAsAccessMode.xlShared, misValue, misValue, misValue, misValue, misValue); 
1

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

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

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(); 
+0

ok..thanks..i сделаю это, как вы говорите – user1594950

2

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

0

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

yourWorkBookObject.Activate() 
Смежные вопросы