2016-12-09 2 views
-2

J'ai essayé de déboguer ce code, mais je n'ai pas réussi. Est-ce que quelqu'un parmi vous a une idée de la raison pour laquelle mon script crée un fichier XLS corrompu? Lorsque j'essaie d'exécuter ceci, il passe de la création de wbXLS au bloc d'exception catch.Obtention d'un fichier XLS corrompu à l'aide de NPOI

+0

Quelle est l'exception? Vous devriez toujours inclure des informations pertinentes comme cela dans votre question. – mason

+0

ce n'est pas vraiment l'endroit pour dire pourquoi mon code ne fonctionne pas, jetez un oeil à la documentation ici https://npoi.codeplex.com/documentation et comment poser une question qui n'est pas hors sujet et ne sera pas vos questions ont voté pour être fermé http://stackoverflow.com/help/mcve –

+0

il n'y a pas d'exception, l'excel est créé mais est entré et est également vide – Spoukey

Répondre

0

Vous obtenez une exception parce que vous créez une nouvelle FileStream pour écrire (FileAccess.Write) et le passage au constructeur de HSSFWorkbook qui attend de pouvoir lire du flux. Le fichier est endommagé car le FileStream crée le fichier, mais rien n'y est jamais écrit.

Si vous essayez simplement de créer un nouveau classeur vide et de l'enregistrer dans un fichier, vous pouvez le faire comme indiqué ci-dessous. Notez que vous devez ajouter au moins une feuille de calcul au nouveau classeur ou générer un fichier endommagé.

// Create a new workbook with an empty sheet 
HSSFWorkbook wbXLS = new HSSFWorkbook(); 
ISheet sheet = wbXLS.CreateSheet("Sheet1"); 

// Write the workbook to a file 
string fileName = @"C:\Users\andrei.tudor\Documents\TipMacheta.xls"; 
using (FileStream stream = new FileStream(fileName, FileMode.Create, FileAccess.Write)) 
{ 
    wbXLS.Write(stream); 
} 

Si vous essayez de lire un classeur existant ou en créer un nouveau si elle n'existe pas, vous devez faire quelque chose comme ceci:

string fileName = @"C:\Users\andrei.tudor\Documents\TipMacheta.xls"; 
HSSFWorkbook wbXLS; 

try 
{ 
    // Try to open and read existing workbook 
    using (FileStream stream = new FileStream(fileName, FileMode.Open, FileAccess.Read)) 
    { 
     wbXLS = new HSSFWorkbook(stream); 
    } 
} 
catch (FileNotFoundException) 
{ 
    // Create a new workbook with an empty sheet 
    wbXLS = new HSSFWorkbook(); 
    wbXLS.CreateSheet("Sheet1"); 
} 

ISheet sheet = wbXLS.GetSheetAt(0); // Get first sheet 

// ... 

// Write workbook to file 
using (FileStream stream = new FileStream(fileName, FileMode.Create, FileAccess.Write)) 
{ 
    wbXLS.Write(stream); 
}