0
誰もが複数のスプレッドシートでExcelにデータを正常に転送しましたか? 私はそれに立ち往生しています。 Visual Basic 2010を使用しています。複数のスプレッドシートでExcelにデータをエクスポートする
誰もが複数のスプレッドシートでExcelにデータを正常に転送しましたか? 私はそれに立ち往生しています。 Visual Basic 2010を使用しています。複数のスプレッドシートでExcelにデータをエクスポートする
あなたはファイルデータをExcelにエクスポートするには、このメソッドを使用することができます:// epplus:[EPPlus](HTTPを使用して、はい
Public Shared Function ExportDataTableToDataFile(ByVal srcDataTable As DataTable, ByVal dbTbName As String, _
ByVal dbFilePath As String, ByVal dbFileType As String, _
Optional ByVal schemaTable As DataTable = Nothing) As Boolean
Dim expConnStr As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & dbFilePath
Select Case dbFileType
Case ".dbf"
If dbTbName.Length > 8 Then
dbTbName = dbTbName.Remove(8)
End If
expConnStr &= ";Extended Properties=dBase IV"
Case ".xls"
expConnStr &= dbTbName & ".xls;Extended Properties=""Excel 8.0;HDR=YES;IMEX=0"""
Case ".mdb"
expConnStr &= dbTbName & ".mdb;User Id=admin;Password="
Case ".csv"
expConnStr &= ";Extended Properties=""text;HDR=Yes;FMT=Delimited(,)"""
dbTbName &= ".csv"
Case ".mpp"
expConnStr = "Provider=Microsoft.Project.OLEDB.10.0;Project Name=" & dbFilePath & dbTbName & ".mpp"
Case Else
Return False
End Select
Dim res As Boolean = True
Dim createCmdStr As String = "CREATE TABLE [" & dbTbName & "] ("
Dim insertCmdStr As String = "INSERT INTO [" & dbTbName & "] ("
Dim insertParams As String = " VALUES ("
Dim paramPrefix As String = "@p_"
Dim oleDbCon As New OleDbConnection(expConnStr)
Dim oleDbDa As New OleDbDataAdapter
Dim createCmd As New OleDbCommand
Dim insertCmd As New OleDbCommand
Dim param As OleDbParameter
Dim oleDbColTp As OleDbType
Try
If String.IsNullOrEmpty(dbTbName) Or String.IsNullOrEmpty(dbFilePath) Or srcDataTable Is Nothing Then
res = False
Return res
End If
If Not System.IO.Directory.Exists(dbFilePath) Then
System.IO.Directory.CreateDirectory(dbFilePath)
End If
If System.IO.File.Exists(dbFilePath & dbTbName & dbFileType) Then
System.IO.File.Delete(dbFilePath & dbTbName & dbFileType)
End If
If dbFileType = ".mdb" Then
Dim ADOXCatalog As New ADOX.Catalog
Try
ADOXCatalog.Create(expConnStr)
Catch ex As System.Runtime.InteropServices.COMException
Catch ex As Exception
MessageBox.Show(ex.Source & ": " & ex.Message.ToString, "Chyba!")
Return False
Finally
ADOXCatalog = Nothing
End Try
End If
For Each col As DataColumn In srcDataTable.Columns
If col.DataType Is GetType(DateTime) Then
oleDbColTp = OleDbType.VarWChar
Else
If schemaTable IsNot Nothing Then
oleDbColTp = schemaTable.Rows(srcDataTable.Columns.IndexOf(col))(11)
Else
oleDbColTp = GetOleDbType(col.DataType)
End If
End If
createCmdStr &= "[" & col.ColumnName & "] " & GetSqlDbType(col.DataType).ToString
If col.DataType Is GetType(String) Then 'OleDb dovoluje max dlzku 255 pre VarChar
If col.MaxLength > 255 Then
col.MaxLength = 255
End If
createCmdStr &= " (" & col.MaxLength & ")"
End If
'createCmdStr &= IIf(col.AllowDBNull, "", " NOT NULL")
insertCmdStr &= "[" & col.ColumnName & "]"
insertParams &= "?"
param = insertCmd.Parameters.Add(paramPrefix & col.ColumnName, oleDbColTp, col.MaxLength, col.ColumnName)
param.SourceVersion = DataRowVersion.Current
If Array.IndexOf(srcDataTable.PrimaryKey, col) >= 0 Then
createCmdStr &= " PRIMARY KEY"
ElseIf col.Unique Then
createCmdStr &= " UNIQUE"
End If
If srcDataTable.Columns.IndexOf(col) < srcDataTable.Columns.Count - 1 Then
createCmdStr &= ", "
insertCmdStr &= ", "
insertParams &= ", "
Else
createCmdStr &= ")"
insertCmdStr &= ")"
insertParams &= ")"
End If
Next
insertCmdStr &= insertParams
createCmd.Connection = oleDbCon
createCmd.CommandText = createCmdStr
insertCmd.Connection = oleDbCon
insertCmd.CommandText = insertCmdStr
oleDbDa.InsertCommand = insertCmd
For Each drow As DataRow In srcDataTable.Rows
drow.AcceptChanges()
drow.SetAdded()
Next
If oleDbCon.State <> ConnectionState.Closed Then
oleDbCon.Close()
End If
oleDbCon.Open()
'createCmd.ExecuteNonQuery()
oleDbDa.Update(srcDataTable)
Catch ex As Exception
res = False
MessageBox.Show(ex.Message.ToString, "Chyba!")
Finally
oleDbCon.Close()
End Try
Return res
End Function
を.codeplex.com/releases/view/42439)。 'Dim ws = package.Workbook.Worksheets.Add(" Name ")' –
のように簡単です。ヘルプが必要な場合は、さらに詳しい情報を提供する必要があります。あなたの "コード"には何の問題もありません;-) –
ありがとうTim!今私は行く準備ができている。 :)まあ問題は、私はコードを持っていないということです。代わりにxmlを生成するソースコードをダウンロードしましたが、それはちょっと面倒です。 EPPlusはより有望に見えます。助けてくれてありがとう - 私の最終的なツールとしてこれを使用します。 –