我将我的数据从visual studio数据网格视图导出到excel中,我想知道如何将新工作表添加/保存到现有的excel文件中。
答案 0 :(得分:0)
如果使用OleDb,则使用SQL创建工作表
Public Module Demo
Public Sub DemoOleDbCreateXls_WithHeaders()
Using cn As New OleDb.OleDbConnection With {.ConnectionString = "Your connection string"}
Using cmd As New OleDb.OleDbCommand With {.Connection = cn}
cmd.CommandText = "CREATE TABLE Members(FirstName CHAR(255),LastName CHAR(255),JoinedYear INT)"
cn.Open()
cmd.ExecuteNonQuery()
cmd.CommandText = "INSERT INTO Members (FirstName,LastName,JoinedYear) VALUES ('Kevin','Gallagher',2013)"
cmd.ExecuteNonQuery()
cmd.CommandText = "CREATE TABLE Officiers(FirstName CHAR(255),LastName CHAR(255),Rank CHAR(255))"
cmd.ExecuteNonQuery()
cmd.CommandText = "INSERT INTO Officiers (FirstName,LastName,Rank) VALUES ('Joan','Gallagher','AAA')"
cmd.ExecuteNonQuery()
cmd.CommandText = "CREATE TABLE Test1(Description CHAR(255),Amount Double)"
cmd.ExecuteNonQuery()
cmd.CommandText = "INSERT INTO Test1 (Description,Amount) VALUES ('Dues',12.99)"
cmd.ExecuteNonQuery()
End Using
End Using
End Sub
End Module
使用Excel自动化
Option Strict On
Option Infer Off
Imports Excel = Microsoft.Office.Interop.Excel
Imports System.Runtime.InteropServices
Module Demo
Public Sub CreateSheetIfNeeded(ByVal FileName As String, ByVal SheetName As String)
If IO.File.Exists(FileName) Then
Dim Proceed As Boolean = False
Dim xlApp As Excel.Application = Nothing
Dim xlWorkBooks As Excel.Workbooks = Nothing
Dim xlWorkBook As Excel.Workbook = Nothing
Dim xlWorkSheet As Excel.Worksheet = Nothing
Dim xlWorkSheets As Excel.Sheets = Nothing
xlApp = New Excel.Application
xlApp.DisplayAlerts = False
xlWorkBooks = xlApp.Workbooks
xlWorkBook = xlWorkBooks.Open(FileName)
xlApp.Visible = False
xlWorkSheets = xlWorkBook.Sheets
'
' For/Next finds our sheet
'
For x As Integer = 1 To xlWorkSheets.Count
xlWorkSheet = CType(xlWorkSheets(x), Excel.Worksheet)
If xlWorkSheet.Name = SheetName Then
Proceed = True
Exit For
End If
Marshal.FinalReleaseComObject(xlWorkSheet)
xlWorkSheet = Nothing
Next
Dim workSheet As Excel.Worksheet = Nothing
Dim xlNewSheet As Excel.Worksheet = Nothing
If Proceed Then
' do work, sheet exists
Else
workSheet = CType(xlWorkSheets(1), Excel.Worksheet)
xlNewSheet = DirectCast(xlWorkSheets.Add(workSheet), Excel.Worksheet)
xlNewSheet.Name = SheetName
End If
xlWorkBook.SaveAs(FileName)
xlWorkBook.Close()
xlApp.UserControl = True
xlApp.Quit()
ReleaseExcelObject(xlNewSheet)
ReleaseExcelObject(workSheet)
ReleaseExcelObject(xlWorkSheets)
ReleaseExcelObject(xlWorkSheet)
ReleaseExcelObject(xlWorkBook)
ReleaseExcelObject(xlWorkBooks)
ReleaseExcelObject(xlApp)
Else
' file does not exists
End If
End Sub
Private Sub ReleaseExcelObject(ByVal excelObject As Object)
Try
If excelObject IsNot Nothing Then
Marshal.ReleaseComObject(excelObject)
excelObject = Nothing
End If
Catch ex As Exception
excelObject = Nothing
End Try
End Sub
End Module