整理一下最近對於如何將資料填進已經設好檔案的word與excel中的紀錄。
關於使用VB.NET將資料匯進WORD與EXCEL,主要都是透過OFFICE的參考,運用各自的類別,一層一層建立它們的各自的屬性,像是WORD從外到內的Application、Document、Table以及EXCEL從外到內的Application、Workbook、Worksheet,在連接上彼此並運用各自的Method來進行工作。首先先來看word的程式碼
Imports Microsoft.Office.Interop
Dim wod_app As New Word.Application '這邊要注意建立app時要用new
Dim wod_doc As Word.Document
Dim wod_tab As Word.Table
wod_doc = wod_app.Documents.Open("C:\NEWS管理.doc", , True)
wod_tab = wod_doc.Tables.Item(1)
contSqlconn(1) '個人的連接資料庫函式
cmd.CommandText = "select * from hn_news where (流水號='" + 流水號.Text + "')"
dr = cmd.ExecuteReader
dr.Read()
wod_tab.Cell(1, 1).Range.Text = dr("狀態旗標").ToString
wod_tab.Cell(1, 2).Range.Text = dr("流水號").ToString
wod_tab.Cell(1, 4).Range.Text = dr("標題").ToString
wod_tab.Cell(2, 2).Range.Text = dr("內容").ToString
wod_tab.Cell(4, 2).Range.Text = dr("回覆").ToString
dr.Close()
contSqlconn(-1)
wod_app.Visible = True '預覽列印
'wod_app.PrintOut(Copies:=1) '直接列印
'wod_app.Quit(SaveChanges:=False) '關閉開啟的WORD
wod_tab = Nothing
wod_doc.Close()
wod_doc = Nothing
wod_app.Quit()
wod_app = Nothing
GC.Collect()
EXCEL:
Imports Microsoft.Office.Interop
Dim exl_ap As New Excel.Application
Dim exl_wkb As Excel.Workbook
Dim exl_wks As Excel.Worksheet
Dim i As Integer = 1
exl_wkb = exl_app.Workbooks.Open("C:\驗購表.xls", , True) '這個TRUE是Readonly
exl_wks = exl_wkb.Worksheets("sheet1") '或者 exl_wks = exl_wkb.Worksheets(1)
contSqlconn(1)
cmd.CommandText = "sql語法省略" + _
dr = cmd.ExecuteReader
With exl_wks
.Name = "藥品驗購表"
.Range("A" & i).Value = "藥品中文名"
.Range("B" & i).Value = "藥品索引"
.Range("C" & i).Value = "藥品簡稱"
.Range("D" & i).Value = "驗收日期"
.Range("E" & i).Value = "藥廠名稱"
.Range("F" & i).Value = "藥廠代號"
.Range("A1:F1").Interior.ColorIndex = 6
.Cells().ColumnWidth = 7
End With
While dr.Read
i += 1
With exl_wks
.Range("A" & i).Value = dr(0).ToString
.Range("B" & i).Value = dr(1).ToString
.Range("C" & i).Value = dr(2).ToString
.Range("D" & i).Value = dr(3).ToString
.Range("E" & i).Value = dr(4).ToString
.Range("F" & i).Value = dr(5).ToString
End With
End While
exl_app.SaveWorkspace()
exl_app.Visible = True
exl_wks = Nothing
exl_wkb.Close()
exl_wkb = Nothing
exl_app.Quit()
exl_app = Nothing
contSqlconn(-1)
GC.Collect()
大至上就是如此,特別的地方再說一下。
這個word是用填表的方式所以才會有table,也就是先在預設好的word裡畫好table表格,然後算他的欄位去填入資料,但也有另一種方式不用畫表格的,就是運用word裡的書籤功能,至於這個等我有例子在作紀錄。
不管是word還是excel,都必須要在使用前先加入各自的參考(dll),這點可是不能忘的。
沒有留言:
張貼留言