簡體   English   中英

直接在C#中將DataTable綁定到Excel電子表格

[英]Bind DataTable to Excel spreadsheet directly in C#

我正在構建一個C#VSTO加載項,並尋找將System.Data.DataTable直接綁定到Excel電子表格的方式(例如,綁定數據源),並跟蹤電子表格中用戶修改的單元格,然后再以C#讀取更改。

感謝幫助。

您可能想看看使用ListObjects。 您可以將內存數據表直接綁定到ListObject。 將此列表對象(表)添加到工作表時,不必顯示所有字段。

例如:

Public WithEvents decideList As Microsoft.Office.Tools.Excel.ListObject
Public dt As System.Data.DataTable = New System.Data.DataTable("MasterData")
' Load data into the datatable dt

Dim worksheet As Microsoft.Office.Tools.Excel.Worksheet = Globals.Factory.GetVstoObject(sheet) 'where sheet is the native worksheet where you are locating the ListObject
Dim cell As Excel.Range = worksheet.Range("$A$1:$D$4")

decideList = worksheet.Controls.AddListObject(cell, "decideList")
decideList.AutoSetDataBoundColumnHeaders = True
decideList.SetDataBinding(dt, Nothing, { "FirstName", "LastName", "Company" })

唯一的問題是持久性。 關閉電子表格之前,您將需要保存完整的數據表(除非您在ListObject中顯示整個數據表)。

當您重新打開工作表時,您將需要一個方法將表加載到內存數據表中,然后重新綁定它。

希望對您有所幫助!

有一些在線鏈接。 https://msdn.microsoft.com/zh-CN/library/cc668212.aspx

我唯一遇到的問題有時是更好地更新基礎數據表,而不是使用Excel工作表。 為此,您可以設置在對ListObject進行任何更改時觸發的事件。

沒有將DataTable綁定到Excel電子表格的直接方法。

您必須枚舉DataTable行和列,並將數據插入到工作表中。

然后,您必須決定何時進行更新(即在保存工作簿期間-然后為BeforeSave事件創建事件處理程序),並枚舉工作表中的行和列,以將值移回DataTable並更新數據庫。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM