首页 > 解决方案 > 如何在使用 oledb 导出的 excel 文件上应用模板?

问题描述

我已使用 oledb 将数据导出到 excel 文件中,但无法使用互操作或任何第三方库。这是我的代码:

''' <summary>
''' Export datagridview's data contained in an data table to excel file
''' </summary>
''' <param name="dataTable">DataGridView's datatable</param>
''' <param name="XLPath"> Excel File Path with xlsx extension</param>

 Private Shared Sub ExportToExcel(ByVal dataTable As DataTable, ByVal XLPath As String)
 Dim connStr = "Provider = Microsoft.ACE.OLEDB.12.0;Data Source=" + XLPath + ";Extended 
  Properties='Excel 8.0;HDR = YES';"
  Using connection As OleDbConnection = New OleDbConnection(connStr)
     connection.Open()
       Using command As OleDbCommand = New OleDbCommand()
            command.Connection = connection
            Dim columnNames As New List(Of String)
            Dim tableName As String = dataTable.TableName
            If dataTable.Columns.Count <> 0 Then
                For Each dataColumn As DataColumn In dataTable.Columns
                     columnNames.Add(dataColumn.ColumnName)
                 Next
            Else 
               tableName = If(Not String.IsNullOrWhiteSpace(dataTable.TableName), dataTable.TableName, Guid.NewGuid().ToString())
               command.CommandText = $"CREATE TABLE [{tableName}] ({String.Join(",", columnNames.[Select](Function(c) $"[{c}] VARCHAR").ToArray())});"
                     command.ExecuteNonQuery()
               End If
                If dataTable.Rows.Count <> 0 Then
                   For Each row As DataRow In dataTable.Rows
                          Dim rowValues As List(Of String) = New List(Of String)()
                          For Each column As DataColumn In dataTable.Columns
                                 rowValues.Add(If((row(column) IsNot Nothing AndAlso Not row(column).Equals(DBNull.Value)), row(column).ToString(), String.Empty))
                          Next
                          command.CommandText = $"INSERT INTO [{tableName}]({String.Join(",", columnNames.[Select](Function(c) $"[{c}]"))}) VALUES ({String.Join(",", 
                          rowValues.[Select](Function(r) $"'{r}'").ToArray())});"
                          command.ExecuteNonQuery()
                     Next
                End If
         End Using
        connection.Close()
       End Using
   End Sub

excel 文件已成功填充,但现在我必须在其上应用 xlsx 文件中提供给我的模板,并且我不能在此处使用任何第三方库。如何在 excel 文件中应用模板?有什么建议么 ?提前致谢。

标签: c#.netexceloledbexcel-template

解决方案


推荐阅读