2016-07-21 1 views
-1

Je crée un fichier vide (.xlsx) sur le bureau de l'utilisateur, puis j'ai besoin d'ouvrir le fichier et de remplir ce fichier avec des données, mais lors de l'ouverture du fichier, je reçois une erreur "le fichier est invalide". J'utilise le code ci-dessous:FIle created is not valide/Fichier invalide

Dim filePath As String = desktopPath & "\Suspense_" & Now.Date.ToString("MMddyy") & ".xlsx" 

Dim fs As FileStream = Nothing 
fs = File.Create(filePath) 
'getting error on below line 
xlWorkBook = xlApp.Workbooks.Open(filePath) 

Lorsque le fichier est créé avec succès, il ne s'ouvre pas.

S'il vous plaît suggérer ce que je fais mal.

+3

Le simple fait de créer un fichier avec l'extension XLSX ne signifie pas que vous avez créé un fichier Excel valide. Vous devez utiliser Excel lui-même (bibliothèques Interop) ou certaines bibliothèques tierces (EPPlus) qui savent comment un fichier Excel vide est formaté. – Steve

Répondre

0

Créer un fichier et renommer l'extension ne signifie pas qu'il s'agit d'un fichier de ce type. Tout comme renommer un fichier .png en .txt ne signifie pas qu'il s'agit maintenant d'un fichier texte.

Pour créer un fichier Excel vierge:

Ajouter une référence à Microsoft Excel Object Library (qui jamais la version que vous avez installé sur votre machine)

Ensuite, utilisez ce code pour créer un fichier XLSX vide:

Private _xlApp As Microsoft.Office.Interop.Excel.Application 
Private _xlWSheet As Microsoft.Office.Interop.Excel.Worksheet 
Private _xlWBook As Microsoft.Office.Interop.Excel.Workbook 

Public Sub CreateNewFile() 
    Dim filename As String = "C:\Scratch\Test1.xlsx" 
    _xlApp = New Microsoft.Office.Interop.Excel.Application 
    _xlApp.DisplayAlerts = False 
    _xlWBook = _xlApp.Workbooks.Add() 
    _xlWBook.SaveAs(filename) 
    CloseAndCleanUpExcelObjects() 
End Sub 

Private Sub CloseAndCleanUpExcelObjects() 
    'close the workbook and quit the app 
    If _xlWBook IsNot Nothing Then _xlWBook.Close() 
    If _xlApp IsNot Nothing Then _xlApp.Quit() 
    'destroy the objects 
    If _xlWSheet IsNot Nothing Then _xlWSheet = Nothing 
    If _xlWBook IsNot Nothing Then _xlWBook = Nothing 
    If _xlApp IsNot Nothing Then _xlApp = Nothing 

    'Force garbage collection 
    GC.Collect() 
End Sub 
+0

Merci pour le code !! J'utilisais la référence avant aussi, mais obtenant toujours l'erreur sur xlWorkSheet.Cells (1, "C") = "2" assignant la valeur. – Yogesh

+0

Merci, je l'ai eu. – Yogesh