也是操作excel,摘來的 有參考價值

2021-04-08 22:04:38 字數 2382 閱讀 5592

objsheet.range("a1:b1").horizontalalignment = -4131   '左對齊

objsheet.range("a1:b1").horizontalalignment = -4108   '中間對齊

objsheet.range("a1:b1").horizontalalignment = -4152   '右對齊

vb.net 呼叫 excel 列印報表

這裡實現兩種方法呼叫excel列印報表:  1. 直接在程式中,給excel單元格賦值和列印格式的設定。  2. 從程式將資料匯入乙個csv檔案中,再在程式中呼叫excel的巨集進行處理。

現在通過程式說明,下面這個reportcontroller類中有兩個方法: excelprint 和 excelprintcsv 分別是上述兩個方法的實現.(程式需要新增excel的com元件)

private declare function findwindow lib "user32" alias "findwindowa" (byval lpclassname as string, _

byval lpwindowname as string) as integer

private sub openexcelsheet()

dim hwnd as integer

hwnd = findwindow("xlmain", nothing)

if hwnd <> 0 then                                   ' hwnd <> 0 means excel is running.

excelisrunning = true

else

excelisrunning = false

end if

public sub excelprintcsv()

dim xladdin as excel.addin                        ' excel's addin object.

tryfor i = 0 to productslist.count - 1

rownum = 12 + i

product = productslist(i)

with xlworksheet

cell1 = .cells(rownum, 1)

cell2 = .cells(rownum, 2)

cell3 = .cells(rownum, 3)

cell4 = .cells(rownum, 4)

cell5 = .cells(rownum, 5)

cell6 = .cells(rownum, 6)

cell7 = .cells(rownum, 7)

cell8 = .cells(rownum, 8)

cell9 = .cells(rownum, 9)

.range(cell2, cell3).merge()

.range(cell4, cell6).merge()

.range(cell7, cell8).merge()

selection = .range(cell1, cell9)

end with

with selection

.borders(xledgebottom).linestyle = xlcontinuous

.borders(xledgebottom).weight = xlthin

.borders(xledgeleft).linestyle = xlcontinuous

.borders(xledgeleft).weight = xlmedium

.borders(xledgeright).linestyle = xlcontinuous

.borders(xledgeright).weight = xlmedium

.borders(xlinsidevertical).linestyle = xlcontinuous

.borders(xlinsidevertical).weight = xlthin

.horizontalalignment = xlleft

.verticalalignment = xlcenter

end with

end class

通過程式裡直接控制excel列印速度不如,導到乙個臨時檔案,再由excel讀取這個檔案列印來的快!明天再試一下,直接從資料庫往excel裡導的速度.在第二種方法中,明顯程式要複雜些, .net ----> csv file ----> excel ----> print 中間還要呼叫 excel 的巨集. 雖然複雜很多,但是速度能提高不少!

巨集裡的語句:

public sub auto_open()

call printreturnlist

end sub

「妖怪」問題也是有原因的

今天,bug對應過程中,遇到了 妖怪 資料庫中某條記錄的 flag字段值明明是 true 甚至將 debug得到的 sql語句和引數,放到 sql server中執行,拿到的都是 true 1 但是一使用 中的 sql語句查詢,拿出來的始終為 false 查詢出來的是個物件,其中該 flag欄位的值...

excel遍歷行列的VBA參考

sub m for i range a65536 end 3 row to 2 step 1 從最後一行到倒數第二行迴圈 if cells i,a cells i 1,a then 如果上下兩個單元格值相同 range a i 1 a i merge 那麼就合併這兩個單元格 end if next ...

const,也是有冒牌貨的?

我們經常說,被const修飾的變數表示不能被修改,但是c語言的在實際操作中,並非完全如此。可以通過下面的程式看出,在c語言中,const修飾的變數可以通過指標修改。這是因為,所有的變數都存在於普通記憶體之中,記憶體中存在乙個位址,在c語言中,指標可以指向位址,進而通過指標修改變數的值。但是這也僅僅是...