Exception de HRESULT: 0x800A03EC Erreur lors de l'enregistrement du fichier Excel
Je suis de l'enregistrement des données sur l'événement click du bouton et voici le code:
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();
Quand je suis de l'enregistrer, il me donne l'erreur:
HRESULT: 0x800A03EC Erreur lors de l'enregistrement du fichier Excel
- Sont que vous essayez d'enregistrer le même classeur 4 fois sans un changement de nom de fichier?
- mais je suis d'erreur dans la première fois seulement
- Vous devez être un peu plus précis. Faire tous les MessageBoxes pop-up? Êtes-vous sûr que le processus de sauvegarde est terminé?
- Je veux utiliser (xlWorkSheet.get_Range("L" + @i, "L" + @i).Valeur2.ToString() de la valeur..donc seulement maintenant, je suis en train de montrer qu'il en messagebox
- Alors, pourquoi ne vous enregistrez votre classeur à tous? Vous pouvez obtenir la valeur sans l'enregistrer.
- C'est Excel erreur 1004, la même erreur que celui-ci. La solution qu'ils proposent est, ainsi, ironique.
Vous devez vous connecter pour publier un commentaire.
Que je comprends, à L'enregistrement d'un Fichier Excel Exception de HRESULT: 0x800A03EC Exception levée lorsque les arguments de la méthode SaveAs sont mauvais. Veuillez revoir vos arguments:
vérifier pour la cellule indices de la feuille , commence à partir de [1,1]
la feuille.les cellules[0,0] lèvera com erreur.
@Sébastien est correct en ce que vous appelez SaveAs quatre fois, la sauvegarde sur le même emplacement sans clôture. Ce n'est pas aller au travail, vous devez d'abord déplacer ce hors de la boucle. Mais en regardant votre code de plus près, vous n'êtes pas changer quoi que ce soit dans le classeur, donc il n'y a pas besoin d'enregistrer, et si vous ne changez quelque chose, vous feriez mieux d'appeler Enregistrer au lieu de SaveAs. Comme cela, vous êtes en précisant ReadOnly vrai lorsque vous ouvrez le classeur, afin de tenter d'appeler les enregistrer dans n'importe quelle capacité n'est pas d'aller travailler.
Enfin, si vous êtes à l'aide de >= C# 4, vous pouvez utiliser les paramètres facultatifs, de sorte que tous ceux misValue's sont inutiles. J'ai rangé votre code ci-dessous:
Je sais que ce fil est vieux, mais c'est peut être de l'aide à quelqu'un. J'ai eu le même problème, et en appelant le Activer() la fonction sur le classeur, il fixe pour moi: