因此,我們的IT部門將所有人從Office 2007升級到Office 2013,並且我的許多努力工作必須重做。 (VS 2013 Express中,框架4.5).net&Excel - 從Office 2007到2013
我得到的錯誤是:
「無法投類型的COM對象 '系統.__ ComObject' 的接口類型 'Microsoft.Office.Interop.Excel.Range' 。此操作失敗,因爲具有IID'{00020846-0000-0000-C000-000000000046}'的接口的COM組件上的QueryInterface調用由於以下錯誤而失敗:接口未註冊(異常來自HRESULT:0x80040155「
我知道這是由互操作的新DLL版本等引起的,但我花了幾個小時閱讀它沒有發現任何有用的東西。它崩潰了第一個「xlws.Cells(i,j)= dt.Rows(i - 1).Item(J-1)。 ToString()「
我找到了一些解決方法,最終設法讓它幾乎工作,但感覺比以前複雜得多,我仍然在爲範圍和排序而努力。
如果有人可以分享一個簡單的代碼允許:
- 打開Excel
- 創建工作表
- 出口從數據表中的值到工作表
- 定義範圍
- 排序範圍
我會非常感謝開心!
Dim xlApp As Excel.Application
Dim xlWorkBook As Excel.Workbook
Dim misValue As Object = System.Reflection.Missing.Value
xlApp = CreateObject("Excel.application")
xlApp.Visible = False
xlApp.DisplayAlerts = False
xlWorkBook = xlApp.Workbooks.Add(misValue)
Dim myrange As Excel.Range
Dim xlws As Excel.Worksheet
xlws = xlwb.Worksheets.Add(After:=xlwb.Worksheets(xlwb.Worksheets.Count))
xlws.Name = 「name」
For i = 1 To dt.Rows.Count
For j = 1 To dt.Columns.Count
xlws.Cells(i, j) = dt.Rows(i - 1).Item(j-1).ToString()
Next
Next
xlws.Columns.AutoFit()
myrange = xlws.UsedRange
myrange.Select()
myrange.Sort(Key1:=myrange.Range("M1"), Order1:=Excel.XlSortOrder.xlAscending, Orientation:=Excel.XlSortOrientation.xlSortColumns)
myrange = xlws.Cells(2, 1)
myrange.Select()
xlWorkBook.Worksheets("Sheet1").Delete()
xlWorkBook.Worksheets("Sheet2").Delete()
xlWorkBook.Worksheets("Sheet3").Delete()
xlWorkBook.Worksheets("name").select()
xlWorkBook.SaveAs(folder_str & Format(Now, "MMddyyyy").ToString & " - " & 「name」 & ".xlsx")
xlWorkBook.Close()
xlApp.Quit()
Marshal.ReleaseComObject(xlws)
Marshal.ReleaseComObject(xlWorkBook)
Marshal.ReleaseComObject(xlApp)
msdn鏈接沒有用,因爲解釋和代碼示例正是我在Office 2007中使用的。看起來在Office 2010之後所有內容都發生了變化......但是我無法找到像這樣的簡單msdn頁面與Office 2010/2013相關。非常令人沮喪... – damien
我沒有看到這些版本之間有任何重大變化。你在說什麼改變? –
例如,我可以使第一行工作的唯一方法是將其更改爲oSheet.Name =「TEST」 oWB.Worksheets(oSheet.Name).Range(「A」&1)=「First Name」 – damien