CopyFromRecordset vb.net相当于openxml电子表格

我有一个应用程序,我正在适应从我发现在这里使用OpenXML格式化良好的电子表格。 该工具连接到数据库以获取数据并构build20(ish)工作表。 这部分工作正常。 我有问题是获取数据行。 我最初尝试的方法是逐个单元格写入单元格,但是每个单元格可能高达50k行,因此逐个单元格写入的过程非常缓慢。

我从( http://www.codeproject.com/Articles/371203/Creating-basic-Excel-workbook-with-Open-XML )开始的应用程序是一个很好的介绍这个话题,并帮助了我极大的。 AddTable的代码中甚至有一个方法。 不幸的是,这并不完整,无论我尝试什么,我都无法让代码正确工作。

我有一个数据表,我传递给该方法,我正在努力做的是获取数据表转储到工作表。

这是我的代码到目前为止:

Public Shared Function AddTable(spreadsheet As DocumentFormat.OpenXml.Packaging.SpreadsheetDocument, worksheet As DocumentFormat.OpenXml.Spreadsheet.Worksheet, columnIndex As UInt32, rowIndex As UInt32, tbl As System.Data.DataTable) 'Dim t As DocumentFormat.OpenXml.Spreadsheet.Table Dim row As DocumentFormat.OpenXml.Spreadsheet.Row Dim sheetPart As DocumentFormat.OpenXml.Packaging.WorksheetPart 'Dim sheetPart = spreadsheet.WorkbookPart.AddNewPart(Of DocumentFormat.OpenXml.Spreadsheet.Worksheet) Dim sheetData = New DocumentFormat.OpenXml.Spreadsheet.SheetData() 'Dim sheetPart = allWorksheetParts.Add(thisWorkbookpart.AddNewPart(Of WorksheetPart)(currentSheet.Id)) 'sheetPart.Worksheet = New DocumentFormat.OpenXml.Spreadsheet.Worksheet(sheetData) sheetPart = spreadsheet.WorkbookPart.AddNewPart(Of DocumentFormat.OpenXml.Packaging.WorksheetPart)() sheetPart.Worksheet = New DocumentFormat.OpenXml.Spreadsheet.Worksheet(New DocumentFormat.OpenXml.Spreadsheet.SheetData()) sheetPart.Worksheet.Save() ' ' Add the sheet and make relation to workbook ' sheet = New DocumentFormat.OpenXml.Spreadsheet.Sheet With { '.Id = spreadsheet.WorkbookPart.GetIdOfPart(sheetPart), '.SheetId = (spreadsheet.WorkbookPart.Workbook.Sheets.Count() + 1), '.Name = name} ' sheets.Append(sheet) ' spreadsheet.WorkbookPart.Workbook.Save() Dim strCols As String = "" 'Dim arrColumns As List(Of String) Try For Each column In tbl.Columns row = New DocumentFormat.OpenXml.Spreadsheet.Row strCols = strCols & column.ColumnName & "," 'arrColumns = strCols.Split(",") Dim cell As New DocumentFormat.OpenXml.Spreadsheet.Cell() cell.DataType = DocumentFormat.OpenXml.Spreadsheet.CellValues.String cell.CellValue = New DocumentFormat.OpenXml.Spreadsheet.CellValue(column.ColumnName) row.AppendChild(cell) Next Dim arrColumns As New List(Of String)(strCols.Split(","c)) worksheet.AppendChild(row).DefaultIfEmpty 'sheetData.AppendChild(row).DefaultIfEmpty 'worksheet.AppendChild(sheetData).DefaultIfEmpty 'worksheet.AppendChild(row) For Each r In tbl.Rows Dim newRow As New DocumentFormat.OpenXml.Spreadsheet.Row() For Each col In arrColumns Dim cell As New DocumentFormat.OpenXml.Spreadsheet.Cell() cell.DataType = DocumentFormat.OpenXml.Spreadsheet.CellValues.String cell.CellValue = New DocumentFormat.OpenXml.Spreadsheet.CellValue(r(col).ToString()) newRow.AppendChild(cell) Next worksheet.AppendChild(newRow) Next Return True Catch ex As Exception Return False End Try End Function 

对不起,这是如此的混乱,我已经尝试了各种各样的事情来得到它的工作。

该代码不会产生错误,但它也不会生成填充的工作表。

任何人都可以帮助我获得基本的工作?