【发布时间】:2014-01-11 17:34:54
【问题描述】:
在 VB.net 中获得了这个算法,它可以操作和打印一个 excel 文档,但是每次我打印时,我都会在我想要打印的文档之前得到一张额外的纸! excel表格上没有多余的页面或类似的东西!谁能在这段代码中发现原因,或者有人知道为什么吗?谢谢
Sub Cmd_PrintClick(sender As Object, e As EventArgs)
'print 1 page
printDocument.PrinterSettings.Copies = 1
'print document (see Sub PrintDocumentPrintPage below ...)
printDocument.Print
End Sub
Sub PrintDocumentPrintPage(sender As Object, e As System.Drawing.Printing.PrintPageEventArgs)
Dim oApp As New Excel.Application
Dim oWB As Excel.Workbook = oApp.Workbooks.Add()
Dim oWS As Excel.Worksheet = CType(oWB.Worksheets(1), Excel.Worksheet)
Dim oRng1 As Excel.Range
Dim search As String = ""
SQLcommand = SQLconnect.CreateCommand
'Create SQL statement
SQLcommand.CommandText = "SELECT * FROM Bill_Record WHERE Paid = 'F'"
'Extract data
SQLreader = SQLcommand.ExecuteReader()
While SQLreader.Read()
search = ""
search = SQLreader("Pupil_ID")
oWB = oApp.Workbooks.Open("F:\Kids Club Database\Kids Club Database v2\Backup\ContactsDatabase\bin\Debug\Bill.xlsx")
oWS = oWB.Worksheets("Sheet1")
oRng1 = oWS.Range("F34")
oRng1.Value = Microsoft.VisualBasic.Left(SQLreader("Payment_Due_Date"),10)
oRng1 = oWS.Range("A19")
oRng1.Value = Microsoft.VisualBasic.Left(SQLreader("Bill_Date"),10)
oRng1 = oWS.Range("A13")
oRng1.Value = SQLreader("Term")
oRng1 = oWS.Range("C47")
oRng1.Value = SQLreader("Term")
oRng1 = oWS.Range("H28")
oRng1.Value = SQLreader("Total_Term_Cost")
oRng1 = oWS.Range("C48")
oRng1.Value = SQLreader("Total_Term_Cost")
oRng1 = oWS.Range("F22")
oRng1.Value = SQLreader("Total_Sessions_Monday")
oRng1 = oWS.Range("H22")
oRng1.Value = SQLreader("Total_Monday_Cost")
oRng1 = oWS.Range("F23")
oRng1.Value = SQLreader("Total_Sessions_Tuesday")
oRng1 = oWS.Range("H23")
oRng1.Value = SQLreader("Total_Tuesday_Cost")
oRng1 = oWS.Range("F24")
oRng1.Value = SQLreader("Total_Sessions_Wednesday")
oRng1 = oWS.Range("H24")
oRng1.Value = SQLreader("Total_Wednesday_Cost")
oRng1 = oWS.Range("F25")
oRng1.Value = SQLreader("Total_Sessions_Thursday")
oRng1 = oWS.Range("H25")
oRng1.Value = SQLreader("Total_Thursday_Cost")
oRng1 = oWS.Range("F26")
oRng1.Value = SQLreader("Total_Sessions_Friday")
oRng1 = oWS.Range("H26")
oRng1.Value = SQLreader("Total_Friday_Cost")
'Clear SQL command buffer
SQLcommand.Dispose()
SQLcommand = SQLconnect.CreateCommand
'Create SQL statement
SQLcommand.CommandText = "SELECT Pupil_Name, Pupil_Surname, Form_ID FROM Pupil WHERE Pupil_ID = '" & search &"'"
'Extract data
SQLreader = SQLcommand.ExecuteReader()
oRng1 = oWS.Range("A16")
oRng1.Value = SQLreader("Pupil_Name") & " " & SQLreader("Pupil_Surname")
oRng1 = oWS.Range("C46")
oRng1.Value = SQLreader("Pupil_Name") & " " & SQLreader("Pupil_Surname")
oRng1 = oWS.Range("A17")
oRng1.Value = SQLreader("Form_ID")
'Clear SQL command buffer
SQLcommand.Dispose()
SQLcommand = SQLconnect.CreateCommand
'Create SQL statement
SQLcommand.CommandText = "SELECT * FROM Price"
'Extract data
SQLreader = SQLcommand.ExecuteReader()
oRng1 = oWS.Range("D22")
oRng1.Value = SQLreader("Price_Monday")
oRng1 = oWS.Range("D23")
oRng1.Value = SQLreader("Price_Tuesday")
oRng1 = oWS.Range("D24")
oRng1.Value = SQLreader("Price_Wednesday")
oRng1 = oWS.Range("D25")
oRng1.Value = SQLreader("Price_Thursday")
oRng1 = oWS.Range("D26")
oRng1.Value = SQLreader("Price_Friday")
'Clear SQL command buffer
SQLcommand.Dispose()
oRng1 = Nothing ' <-- Don't forget!
oWB.PrintOut()
oWB.Close()
oWB = Nothing
oWS = Nothing
oApp.Quit()
oApp = Nothing
End While
End Sub
【问题讨论】:
-
如果您使用电子表格并进行打印预览(只是没有代码的模板),它会在那里显示一张空白表吗?
-
试过了,肯定前后没有多余的空白页!
-
你确定
e.HasMorePages = False? -
我确定它没有任何多余的页面!如果我直接从 excel 打印,则只有文档上的页面从打印机中出来!没有空白页!
标签: vb.net excel sqlite printing