2016-07-21 2 views
-1

Я создаю пустой файл (.xlsx) на рабочем столе пользователя, тогда мне нужно открыть файл и заполнить этот файл данными, но при открытии файла я получаю сообщение об ошибке msgstr "файл недействителен". Я использую ниже код:Созданный лимит недействителен/Неверный файл

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) 

Пока файл создан успешно, он не открывается.

Пожалуйста, предложите, что я делаю неправильно.

+3

Просто создание файла с расширением XLSX не означает, что вы создали действительный файл Excel. Вам нужно использовать сам Excel (библиотеки Interop) или некоторые сторонние библиотеки (EPPlus), которые знают, как отформатирован пустой файл Excel. – Steve

ответ

0

Создание файла и переименование расширения не означает, что это файл такого типа. Точно так же, как переименование файла .png в .txt не означает, что теперь это текстовый файл.

Чтобы создать пустой файл Excel:

Добавить ссылку на Microsoft Excel Object Library (который когда-либо версия установлена ​​на вашем компьютере)

Затем используйте этот код, чтобы создать пустой XLSX файл:

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

Спасибо за код! Я также использовал ссылку, но все равно получаю ошибку на xlWorkSheet.Cells (1, «C») = «2», присваивая значение. – Yogesh

+0

Спасибо, я понял. – Yogesh