2014-01-09 28 views
3

在VS 2012上,我創建了一個VB.NET計算應用程序(基於可變輸入的輸出),我需要將這些輸入數據保存到Excel工作表中的某些單元格, 這裏是一個代碼樣本,我使用:從VB導出數據到Excel工作表

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click 

     Dim xls As Microsoft.Office.Interop.Excel.Application 
     Dim xlsWorkBook As Microsoft.Office.Interop.Excel.Workbook 
     Dim xlsWorkSheet As Microsoft.Office.Interop.Excel.Worksheet 
     Dim misValue As Object = System.Reflection.Missing.Value 

     xls = New Microsoft.Office.Interop.Excel.Application 
     xlsWorkBook = xls.Workbooks.Open("D:\bookl.xlsx") 
     xlsWorkSheet = xlsWorkBook.Sheets("sheet1") 

     xlsWorkSheet.Cells(1, 1) = TextBox1.Text 

     xlsWorkBook.Close() 
     xls.Quit() 

End Sub 

我這裏的問題是,在每一次我點擊保存按鈕,在將數據保存到我必須事先指定的路徑中的Excel工作表文件。

我想做的是,如果有任何方式從VB加載它自己然後選擇保存它(因爲IAM將在很多機器中使用它,所以我不想把它放在Excel中在相同的路徑,每次文件我使用的應用程序在任何其他機器)從My.Resources位置

+0

如果使用xls.Workbooks.Add而不是xls.Workbooks.Open(「filename」)會發生什麼?我認爲這應該創建一個無標題的工作簿,然後Excel會在您嘗試關閉時顯示保存對話框。這就是你想要發生的事情嗎? – nekomatic

回答

4

打開Excel文件

Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click 
    Dim xlsWorkBook As Microsoft.Office.Interop.Excel.Workbook 
    Dim xlsWorkSheet As Microsoft.Office.Interop.Excel.Worksheet 
    Dim xls As New Microsoft.Office.Interop.Excel.Application 

    Dim resourcesFolder = IO.Path.GetFullPath(Application.StartupPath & "\..\..\Resources\") 
    Dim fileName = "book1.xlsx" 

    xlsWorkBook = xls.Workbooks.Open(resourcesFolder & fileName) 
    xlsWorkSheet = xlsWorkBook.Sheets("Sheet1") 

    xlsWorkSheet.Cells(1, 1) = TextBox1.Text 

    xlsWorkBook.Close() 
    xls.Quit() 

    MsgBox("file saved to " & resourcesFolder) 
End Sub 

資源模板XLSX文件必須複製到輸出目錄,所以編輯它的屬性並選擇(實際上我不是很確定你需要這個...)

Build Action = Content 
Copy To Output Directory = Copy Always 

P.S.這只是一個與當前代碼一起使用的示例,但如果要創建/保存/修改excel文件,我強烈建議使用EPPlus Library

+0

聰明的解決方案,感謝它,但這裏的問題,我可以從VB它自己生成預定義的Excel文件,這意味着加載Excel資源表到VB資源,然後輸出Excel表將包含數據和保存,無需選擇excel文件,然後打開它來保存數據。感謝您的時間和對不起我有點初學者在這裏 – user3151946

+0

非常感謝,它終於工作了,非常感謝您的幫助,但是當我嘗試構建程序時發生了一個小問題,因爲文件位置錯誤,字面意思是「系統.Runtime.InteropServices.COMException(0x800A03EC):'C:\ Users \ Ahmed \ AppData \ Local \ Apps \ 2.0 \ 95O0CANR.V0V \ Resources \ book1.xlsx'找不到。檢查文件名的拼寫,並驗證文件位置是否正確如果您嘗試從最近使用的文件列表中打開該文件,請確保該文件未被重命名,移動或刪除。 – user3151946

+0

這是發生在構建或發佈? – Vland

0
Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click 
    Dim xlsWorkBook As Microsoft.Office.Interop.Excel.Workbook 
    Dim xlsWorkSheet As Microsoft.Office.Interop.Excel.Worksheet 
    Dim xls As New Microsoft.Office.Interop.Excel.Application 

    Dim resourcesFolder = IO.Path.GetFullPath(Application.StartupPath & "\..\..\Resources\") 
    Dim fileName = "book1.xlsx" 

    xlsWorkBook = xls.Workbooks.Open(resourcesFolder & fileName) 
    xlsWorkSheet = xlsWorkBook.Sheets("Sheet1") 

    xlsWorkSheet.Cells(1, 1) = TextBox1.Text 

    xlsWorkBook.Close() 
    xls.Quit() 

    MsgBox("file saved to " & resourcesFolder) 
End Sub