2017-09-05 4 views
1

récemment je tente de sauver Aspose.Cells.Workbook pour diffuser avecWorksbook enregistré avec flux est cassé

private Stream GetWorkbook() 
{ 
    // processing workbook here 
    // ... 
    // saving to stream 
    return workbook.SaveToStream(); 
} 

private void Save() 
{ 
    using (stream = GetWorkbook()) 
     using (var fileStream = new FileStream(filePath, FileMode.Create, FileAccess.Write)) 
     { 
      stream.CopyTo(fileStream); 
     } 
} 

Mais quand je suis en train d'ouvrir le fichier généré .xlsx Excel me envoie une erreur que le fichier est corrompu.

+0

Quelle est la taille du fichier du fichier xlsx? Si vous renommez le fichier xlsx en 'a.zip' et l'ouvrez, est-ce un fichier zip valide? – mjwills

+0

@mjwills Non, ce n'est pas le cas. La taille réelle du fichier modèle est de 120 Ko, le fichier généré est de 1 Ko. – Max

+0

Est-ce que mettre 'stream.Seek (0, SeekOrigin.Begin);' avant le 'CopyTo' aide? – mjwills

Répondre

1

SaveToStream() méthode n'enregistrer votre classeur dans format XLS. Vous ne devez donc pas utiliser cette méthode, mais utilisez le code suivant pour enregistrer votre classeur dans un objet de flux de mémoire. Cela devrait résoudre votre problème.

C#

//Load your Excel file 
Workbook wb = new Workbook(yourFile); 

//Create memory stream object 
MemoryStream ms = new MemoryStream(); 

//Determine the save format 
SaveFormat svfmt = (SaveFormat)wb.FileFormat; 

//Save the workbook to memory stream 
wb.Save(ms, svfmt); 

Note: Je travaille comme évangéliste Developer à Aspose