我正在嘗試將 DataGridView 中的當前行復制到 Excel 中,但似乎無法找到使其作業的正確語法。希望有人可以幫助我解決以下代碼。
提前致謝。
Public Sub CopyRowToExcel()
Dim xlApp As Excel.Application
Dim WB As Excel.Workbook
Dim WS As Excel.Worksheet
Dim LR As Integer
Dim RowNum As Integer
xlApp = GetObject(, Constants.ExcelApp)
WB = xlApp.Workbooks("Products")
WS = WB.Sheets("DataSheet")
LR = WS.Range("A" & WS.Rows.Count).End(Excel.XlDirection.xlUp).Row 1
RowNum = DataGridView1.CurrentRow.Index
WS.Range("A" & LR & ":L" & LR).Value = DataGridView1.Rows(RowNum).Cells(1 To 12).Value
End Sub
uj5u.com熱心網友回復:
你沒有說網格是否有資料源。如果您沒有網格的資料源,那么我建議您使用一個。它將在許多方面使事情變得更容易,這是一個例子。
假設網格有一個DataTableas a DataSource,那么您應該能夠將整行寫入 Excel 檔案,類似于您似乎在詢問的內容...
DataGridView1.Rows(RowNum).Cells(1 To 12).Value
當您在 Excel 中設定范圍值時,例如...
WS.Range("A" & LR & ":L" & LR).Value =
... 只要“=”的右側是一個相同維度的陣列,它就會起作用。在范圍是“單”行的這種情況下,陣列需要是一 (1) 維陣列。然后,如果范圍大于陣列,它將用諸如“#N/A”之類的東西填充缺失的陣列部分……如果范圍小于陣列的大小,則它將忽略陣列中的額外值。
如果范圍維度與陣列維度不同……你會得到一個錯誤。
因此,如果網格使用 aDataTable并且您想將所選行附加到現有作業表的末尾,那么您應該能夠執行以下操作...
Dim excelRange As String = "A" & LR & ":L" & LR
Dim drv As DataRowView = DataGridView1.SelectedRows(0).DataBoundItem
xlWorksheet.Range(excelRange, Type.Missing).Value2 = drv.Row.ItemArray.ToArray()
在我的小測驗中,這如上所述。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/336060.html
下一篇:如果Filtermode=False和填充句柄更改的任何單元格,則兩個事件之間發生沖突。引發錯誤(物件“應用程式”的方法“撤消”失敗)?
