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語言中,指標可以指向位址,進而通過指標修改變數的值。但是這也僅僅是...