十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
利用DataWindow.net在 vb.net 下导出PDF格式文件
站在用户的角度思考问题,与客户深入沟通,找到乳源网站设计与乳源网站推广的解决方案,凭借多年的经验,让设计与互联网技术结合,创造个性化、用户体验好的作品,建站类型包括:成都网站设计、网站建设、企业官网、英文网站、手机端网站、网站推广、主机域名、网站空间、企业邮箱。业务覆盖乳源地区。
利用datawindow.net,导出PDF文件,实现前提:
1.安装Acrobat Distiller虚拟打印机,注意要用datawindow.net提供的打印驱动,在c:\program files\sybase\datawindow.net2.0\driver中,在文章最后,我会提供一个静态安装虚拟打印机的批处理文件,方便安装。
2.安装Ghostscript 7.05 ,在网上找,免费的。
3.导出PDF文件前,一要指定虚拟打印机名,其次导出格式为PDF(Export.PDF.Method=Distill!),另外还要指定 PDF.Distill.CustomPostScript=Yes。
具体代码如下:
''' summary
''' 导出文件
''' /summary
''' param name="sender"/param
''' param name="e"/param
''' remarks/remarks
Private Sub btnExport_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnExport.Click
Try
Dim strFilename, strPrinter As String
Dim saveDg As New SaveFileDialog
strPrinter = Me.dwPrint.Describe("DataWindow.Print.PrinterName")
saveDg.FileName = Me.dwPrint.Tag.ToString
saveDg.Filter = "Pdf文件|*.pdf|Excel文件|*.xls|所有文件|*.*"
If saveDg.ShowDialog = Windows.Forms.DialogResult.OK Then
strFilename = saveDg.FileName
If strFilename.IndexOf(".pdf") 0 Then
Me.dwPrint.Modify("DataWindow.Print.PrinterName='Acrobat Distiller'")
Me.dwPrint.Modify("DataWindow.Export.PDF.Method=Distill!")
Me.dwPrint.Modify("DataWindow.Export.PDF.Distill.CustomPostScript=Yes")
Me.dwPrint.SaveAs(strFilename, Sybase.DataWindow.FileSaveAsType.Pdf, True)
ElseIf strFilename.IndexOf(".xls") 0 Then
Me.dwPrint.SaveAs(strFilename, Sybase.DataWindow.FileSaveAsType.Excel, True)
End If
Me.dwPrint.Modify("DataWindow.Print.PrinterName='" + strPrinter + "'")
MessageBox.Show("导出成功!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information)
End If
Catch ex As Exception
MessageBox.Show(ex.Message, "提示", MessageBoxButtons.OK, MessageBoxIcon.Error)
End Try
End Sub
4 批处理文件(实现静默安装)
以下是我以前百度找的资料 希望对你有用 你读取DataGridView到DataGrid然后直接调用函数即可
Public Function ExportXLsD(ByVal datagrid As DataGrid) ', ByVal Title As String)
'Dim Mytable As New DataTable
'Mytable = CType(datagrid.DataSource, DataTable)
If mytable Is Nothing Then
MessageBox.Show("没有记录不能导出数据", "PurpleStar", MessageBoxButtons.OK, MessageBoxIcon.Information)
Exit Function
End If
If mytable.Rows.Count 0 Then
Dim MyFileName As String
Dim FileName As String
With SaveFileDialog1
.AddExtension = True '如果用户忘记添加扩展名,将自动家上
.DefaultExt = "xls" '默认扩展名
.Filter = "Excel文件(*.xls)|*.xls"
.Title = "文件保存到"
If .ShowDialog = DialogResult.OK Then
FileName = .FileName
End If
End With
MyFileName = Microsoft.VisualBasic.Right(FileName, 4)
If MyFileName = "" Then
Exit Function
End If
If MyFileName = ".xls" Or MyFileName = ".XLS" Then
Dim FS As FileStream = New FileStream(FileName, FileMode.Create)
Dim sw As StreamWriter = New StreamWriter(FS, System.Text.Encoding.Default)
sw.WriteLine(vbTab FileName vbTab Date.Now)
Dim i, j As Integer
Dim str As String = ""
For i = 0 To mytable.Columns.Count - 1
str = mytable.Columns(i).Caption
sw.Write(str vbTab)
Next
sw.Write(vbCrLf)
For j = 0 To mytable.Rows.Count - 1
For i = 0 To mytable.Columns.Count - 1
Dim strColName, strRow As String
strRow = IIf(mytable.Rows(j).Item(i) Is DBNull.Value, "", mytable.Rows(j).Item(i))
sw.Write(strRow vbTab)
Next
sw.Write(vbLf)
Next
sw.Close()
FS.Close()
MessageBox.Show("数据导出成功!", "PurpleStar", MessageBoxButtons.OK, MessageBoxIcon.Information)
Else
Exit Function
End If
Else
MessageBox.Show("没有记录不能导出数据", "PurpleStar", MessageBoxButtons.OK, MessageBoxIcon.Information)
End If
End Function
Private Sub OK_Button_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles OK_Button.Click
Dim saveExcel As SaveFileDialog
saveExcel = New SaveFileDialog
saveExcel.Filter = "Excel文件(.xls)|*.xls"
Dim filename As String
If saveExcel.ShowDialog = Windows.Forms.DialogResult.Cancel Then Exit Sub
filename = saveExcel.FileName
Dim excel As Excel.Application
excel = New Excel.Application
excel.DisplayAlerts = False
excel.Workbooks.Add(True)
excel.Visible = False
Dim i As Integer
For i = 0 To DataGridView1.Columns.Count - 1
excel.Cells(1, i + 1) = DataGridView1.Columns(i).HeaderText
Next
'设置标题
Dim j As Integer
For i = 0 To DataGridView1.Rows.Count - 1 '填充数据
For j = 0 To DataGridView1.Columns.Count - 1
excel.Cells(i + 2, j + 1) = DataGridView1(j, i).Value
Next
Next
excel.Workbooks(1).SaveCopyAs(filename) '保存
Me.Close()
End Sub
1.你说的这个有点问题,是要只输出一次,也可做,
2.但问题是如果你数组还有就看不到了!这个做法有点问题
1.解决方法:
循环前面加入一个变量 dim Temp as Double=0
For i = 0 To 9
If score(i) avg and score(i)temp Then
TextBox3.Text = TextBox3.Text score(i) " "
if score(i)=avg then
temp=score(i)
end if
End If
Next
1.新建安装和部署。 打开你所写的项目,在解决方案上右键-添加-新建项目。选择其他项目类型-安装和部署-安装项目。在名称中把名字改为你所希望的名字,然后确定。 2.确定后打开文件系统,然后单击应用程序文件夹,在右边空白处右键-添加-项目输出。3.选择主输出,然后确定。 4.在刚添加的主输出上右键,创建其快捷方式。可以重命名也可不重命名。5.剪切刚创建的快捷方式,然后单击用户的程序菜单,在其上右键,添加,文件夹,重命名文件夹。这个文件夹名字就是你在开始,所有程序中显示的名字。然后单击刚创建的文件夹,在右边空白处粘贴快捷方式,安装好程序后,这个快捷方式会出现在所有程序中。 6.像上面一样再创建一个快捷方式,剪切,然后单击用户桌面,粘贴。安装完程序后,这个快捷方式出现在桌面。 7.右击左边的"应用程序文件夹"打开属性对话框:将属性中的"defaultlocation"的路径中的"[manufacturer]"去掉,
不然的话做好的安装程序默认安装目录会是"c:\programm file\你的用户名\安装解决方案名称"。 8.右键你的安装项目名,属性。在打开的属性页中,选择"系统必备",在打开的系统必备页中,选中如下图中的选择项,选上以后,在生成的安装文件包中包含.netframework组件,然后确定。 9.改变桌面和开始-所有程序中该程序的默认图标。在应用程序文件夹右边空白处,右键-添加-文件,添加一个ico文件。打开用户的程序菜单-'你的程序名',在右边的快捷方式上右键,属性窗口。向其属性中的icon属性添加刚添加的ico图标。同理,打开用户桌面,在右边的快捷方式上右键,属性窗口。向其属性中的icon属性添加刚添加的ico图标。 10.添加卸载功能。在应用程序文件夹右边空白处,右键-添加-文件,选择c:\windows\system32文件夹下的msiexec.exe文件。然后重命名为Uninstall.exe。改不改名字都可以。然后创建快捷方式,剪切到用户的程序菜单-'你的程序名'。 11.用鼠标左键单击安装项目名,查看其属性,注意不是右键,属性。查看其ProductCode属性。然后复制该属性的值。如图: 12.然后打开你创建的那个卸载快捷方式的属性对话框,在Aguements属性中输入"/x {ProductCode}",本例为/x {D8DB4DCF-B28A-49CB-9840-E36D68FD7EE1}。 13.右键安装项目名,单击生成,即可生成带有卸载功能的安装程序了.
果在格式化数字时没有指定 format,Format 会提供与 Str 函数类似的功能
' 如果没有指定格式,则返回字符串。
MyStr = Format(23) ' 返回 "23"。
' 用户自定义的格式。
MyStr = Format(5459.4, "##,##0。00") ' 返回 "5,459.40"。
MyStr = Format(334。9, "###0。00") ' 返回 "334.90"。
MyStr = Format(5, "0。00%") ' 返回 "500.00%"。
MyStr = Format("HELLO", "") ' 返回 "hello"。
MyStr = Format("This is it", "") ' 返回 "THIS IS IT
'这是数组的一个方法了,可是可以给数组定义扩展方法来实现这种形式。不过要给Item每个成员能动态生成相应方法,想不出其它简单点的办法,只能一个一个的添加扩展方法。
Namespace 测试
Public Class Item
Public Number() As String
Public Name As String
Public Symbol As String
Public Value As Single
Public Unit As String
Public Description As String
Public Remarks As String
End Class
Public Class XX
Public tty() As Item
Public Sub New()
tty(0).Name = "Women"
tty(0).Value = 198000
tty(1).Name = "temen"
tty.Name("temen").Value = 99999
End Sub
End Class
Public Module Module1
System.Runtime.CompilerServices.Extension() _
Public Function Name(ByVal she As Item(), ByVal key As String) As Item '定义扩展方法功能 在net.3.5前的版本像似没有。
For Each it In she
If it.Name = key Then
Return it
End If
Next
Return Nothing
End Function
End Module
End Namespace