CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  .NET技术 >  VB.NET

怎样将datagird的内容打印出来?

楼主msdsl(萨扬娜拉)2006-06-02 23:28:10 在 .NET技术 / VB.NET 提问

我是菜鸟,学vb.net很短的时间。对于我的弱弱的问题,希望各位达人能简单明了一点的回答我的问题,谢谢~~ 问题点数:20、回复次数:9Top

1 楼youlinga(幽灵A)回复于 2006-06-03 09:08:11 得分 0

导入EXEL  
  导到Excel中的代码如下:  
  Imports   System  
  Imports   System.Collections  
  Imports   System.ComponentModel  
  Imports   System.Data  
  Imports   System.Drawing  
  Imports   System.Web  
  Imports   System.Web.SessionState  
  Imports   System.Web.UI  
  Imports   System.Web.UI.WebControls  
  Imports   System.Web.UI.HtmlControls  
  Imports   OWC  
  Imports   System.Data.OleDb  
  Imports   System.IO  
  Imports   System.Reflection  
   
  <DefaultProperty("Text"),   ToolboxData("<{0}:WebCustomControl1   runat=server></{0}:WebCustomControl1>")>   Public   Class   PrintToExcel  
          Inherits   System.Web.UI.WebControls.WebControl  
   
          Dim   _text   As   String  
   
          <Bindable(True),   Category("Appearance"),   DefaultValue("")>   Property   [Text]()   As   String  
                  Get  
                          Return   _text  
                  End   Get  
   
                  Set(ByVal   Value   As   String)  
                          _text   =   Value  
                  End   Set  
          End   Property  
   
          Protected   Overrides   Sub   Render(ByVal   output   As   System.Web.UI.HtmlTextWriter)  
                  output.Write([Text])  
          End   Sub  
   
          Public   Class   ToExcel  
   
                  Inherits   System.Web.UI.WebControls.WebControl  
                  Dim   _ConnectionStr   As   String  
                  Dim   _SqlStr   As   String  
                  Dim   _TableTitle   As   String  
                  Dim   _TableName   As   String  
   
                  Public   Sub   ToExcel(ByVal   ConnectionStr   As   String,   ByVal   SqlStr   As   String,   ByVal   TableTitle   As   String,   ByVal   TableNamer   As   String)  
                          Me.ConnectionStr   =   ConnectionStr  
                          Me.SqlStr   =   SqlStr  
                          Me.TableTitle   =   TableTitle  
                          Me.TableName   =   TableName  
                  End   Sub  
   
                  Property   ConnectionStr()   As   String  
                          Get  
                                  Return   _ConnectionStr  
                          End   Get  
                          Set(ByVal   Value   As   String)  
                                  _ConnectionStr   =   Value  
                          End   Set  
                  End   Property  
   
                  '<Bindable(True),   Category("Appearance"),   DefaultValue("   ")>   Property   [mysql]()   As   String  
                  Property   SqlStr()   As   String  
                          Get  
                                  Return   _SqlStr  
                          End   Get  
                          Set(ByVal   Value   As   String)  
                                  _SqlStr   =   Value  
                          End   Set  
                  End   Property  
   
                  Property   TableTitle()   As   String  
                          Get  
                                  Return   _TableTitle  
                          End   Get  
                          Set(ByVal   Value   As   String)  
                                  _TableTitle   =   Value  
                          End   Set  
                  End   Property  
   
                  Property   TableName()   As   String  
                          Get  
                                  Return   _TableName  
                          End   Get  
                          Set(ByVal   Value   As   String)  
                                  _TableName   =   Value  
                          End   Set  
                  End   Property  
   
                  Public   Sub   New()  
                          MyBase.New()  
                  End   Sub  
   
                  Function   ToExcel()   As   String  
                          Dim   xlsheet   As   New   SpreadsheetClass  
                          Dim   MyConn   As   OleDbConnection   =   New   OleDbConnection(Me.ConnectionStr)  
                          MyConn.Open()  
                          Dim   Cmd   As   OleDbCommand   =   New   OleDbCommand(Me.SqlStr,   MyConn)  
                          Dim   Reader   As   OleDbDataReader   =   Cmd.ExecuteReader()  
                          Dim   NumberCols   As   Integer   =   Reader.FieldCount  
                          Dim   Row   As   Integer   =   4  
                          xlsheet.ActiveCell.Clear()  
   
                          Dim   i   As   Integer   =   0  
                          For   i   =   0   To   NumberCols   -   1       '   输出标题  
                                  xlsheet.ActiveSheet.Cells(3,   i   +   1)   =   Reader.GetName(i).ToString()  
                          Next  
   
                          While   (Reader.Read())   '   输出字段内容  
                                  For   i   =   0   To   NumberCols   -   1  
                                          xlsheet.ActiveSheet.Cells(Row,   i   +   1)   =   "   "   +   Reader.GetValue(i).ToString()   +   "   "  
                                  Next  
                                  Row   =   Row   +   1  
                          End   While  
   
                          Reader.Close()  
                          MyConn.Close()  
   
                          Try  
                                  xlsheet.AutoFit   =   True   '自动调整列宽  
                                  'xlsheet.DisplayPropertyToolbox   =   True  
                                  'xlsheet.EnableAutoCalculate   =   True  
                                  'xlsheet.RightToLeft   =   True  
   
                                  xlsheet.DisplayGridlines   =   True   '显示网格线  
                                  xlsheet.Range(xlsheet.Cells(3,   1),   xlsheet.Cells(Row,   i)).Font.Size   =   10   '除首行外字体为10号  
   
                                  xlsheet.Range(xlsheet.Cells(1,   1),   xlsheet.Cells(Row,   i)).Columns.HAlignment   =   2   '居中对齐  
                                  xlsheet.Range(xlsheet.Cells(1,   1),   xlsheet.Cells(2,   i)).Font.Bold   =   True   '前两行粗体  
                                  'xlsheet.Range(xlsheet.Cells(1,   1),   xlsheet.Cells(2,   i)).Font.Color   =   "red"  
                                  xlsheet.Range(xlsheet.Cells(1,   1),   xlsheet.Cells(1,   i)).Merge()   '首行合并  
                                  xlsheet.Range(xlsheet.Cells(1,   1),   xlsheet.Cells(1,   i)).Value   =   Me.TableTitle   '首行显示值  
                                  xlsheet.Range(xlsheet.Cells(1,   1),   xlsheet.Cells(1,   i)).Font.Size   =   16  
   
                                  xlsheet.Range(xlsheet.Cells(2,   1),   xlsheet.Cells(2,   3)).Merge()  
                                  xlsheet.Range(xlsheet.Cells(2,   1),   xlsheet.Cells(2,   3)).Value   =   Me.TableName   '首行显示值  
                                  xlsheet.Range(xlsheet.Cells(2,   1),   xlsheet.Cells(2,   3)).HAlignment   =   0   '首行显示值左对齐  
                                  xlsheet.Range(xlsheet.Cells(2,   1),   xlsheet.Cells(2,   i)).Font.Size   =   9  
   
                                  xlsheet.Range(xlsheet.Cells(2,   i   -   2),   xlsheet.Cells(2,   i)).Merge()  
                                  xlsheet.Range(xlsheet.Cells(2,   i   -   2),   xlsheet.Cells(2,   i)).Value   =   Format(DateTime.Now,   "统计日期:yyyy年MM月dd日")  
                                  xlsheet.Range(xlsheet.Cells(2,   i   -   2),   xlsheet.Cells(2,   i)).Columns.HAlignment   =   3  
   
                                  xlsheet.Range(xlsheet.Cells(3,   1),   xlsheet.Cells(Row,   i)).Borders.LineStyle   =   2  
                                  xlsheet.Range(xlsheet.Cells(3,   1),   xlsheet.Cells(Row,   i)).Borders.Weight   =   1  
                                  xlsheet.Range(xlsheet.Cells(3,   1),   xlsheet.Cells(3,   i)).Font.Bold   =   True  
   
                                  xlsheet.Range(xlsheet.Cells(Row,   1),   xlsheet.Cells(i,   i)).VAlignment   =   2     '第三行第一列之后,各单元格上对齐  
                                  xlsheet.Range(xlsheet.Cells(Row,   1),   xlsheet.Cells(i,   i)).HAlignment   =   0     '第三行第一列之后,各单元格左对齐  
                                  xlsheet.Range(xlsheet.Cells(Row,   1),   xlsheet.Cells(i,   i)).Borders.LineStyle   =   1  
                                  xlsheet.Range(xlsheet.Cells(Row,   1),   xlsheet.Cells(i,   i)).Borders.Weight   =   1  
   
   
   
                                  Dim   ExcelFileName   As   String   =   System.DateTime.Now.Ticks.ToString   +   ".xls"  
                                  xlsheet.ActiveSheet.Export(System.Web.HttpContext.Current.Request.MapPath(".")   +   "\\"   +   ExcelFileName,   SheetExportActionEnum.ssExportActionNone)  
                                  Dim   OpenFile   As   String   =   "<script   language='javascript'>window.open('"   +   ExcelFileName   +   "');</script>"  
                                  RemoveFiles(System.Web.HttpContext.Current.Request.MapPath("."))  
                                  Return   ExcelFileName  
                          Catch   e   As   System.Runtime.InteropServices.COMException  
                                  System.Web.HttpContext.Current.Response.Write("错误:"   +   e.Message)  
                          End   Try  
                  End   Function  
                  Private   Sub   RemoveFiles(ByVal   strPath   As   String)  
                          Dim   di   As   System.IO.DirectoryInfo   =   New   DirectoryInfo(strPath)  
                          Dim   fiArr   As   FileInfo()   =   di.GetFiles()  
                          Dim   fi   As   FileInfo  
                          For   Each   fi   In   fiArr  
                                  If   fi.Extension.ToString()   =   ".xls"   Then  
                                          Dim   min   As   TimeSpan   =   New   TimeSpan(0,   0,   0,   2,   0)  
                                          If   fi.CreationTime   <   DateTime.Now.Subtract(min)   Then  
                                                  fi.Delete()  
                                          End   If  
                                  End   If  
                          Next  
                  End   Sub  
          End   Class  
   
  End   ClassTop

2 楼youlinga(幽灵A)回复于 2006-06-03 09:08:29 得分 0

晕   好象长了点Top

3 楼liujiayu10(活着就好)回复于 2006-06-03 10:47:29 得分 0

大家可能觉得上面的代码比较复杂,因为上面对于对打印要求比较高的应用,是十分有效的。如果只是单单对数据进行导出,还可以使用简单的格式,比如使用以下的代码:  
   
  Private   Sub   Page_Load(ByVal   sender   As   System.Object,   ByVal   e   As   System.EventArgs)   Handles   MyBase.Load  
   Dim   dt   As   DataTable   =   CType(Application.Item("MyDataTable"),   DataTable)  
   
   Response.ContentType   =   "application/ms-Excel"  
   
   Response.AddHeader("Content-Disposition",   "inline;filename=test.xls")  
   
   Response.Write(ConvertDtToTDF(dt))  
  End   Sub  
   
  Private   Function   ConvertDtToTDF(ByVal   dt   As   DataTable)   As   String  
   Dim   dr   As   DataRow,   ary()   As   Object,   i   As   Integer  
   Dim   iCol   As   Integer  
   
   '   输出列标题  
   For   iCol   =   0   To   dt.Columns.Count   -   1  
    Response.Write(dt.Columns(iCol).ToString   &   vbTab)  
   Next  
   Response.Write(vbCrLf)  
   
   '输出数据  
   For   Each   dr   In   dt.Rows  
    ary   =   dr.ItemArray  
    For   i   =   0   To   UBound(ary)  
     Response.Write(ary(i).ToString   &   vbTab)  
    Next  
    Response.Write(vbCrLf)  
   Next  
  End   Function  
  End   ClassTop

4 楼msdsl(萨扬娜拉)回复于 2006-06-03 11:22:07 得分 0

这只是导入execl,但是应该怎么打印呢?Top

5 楼msdsl(萨扬娜拉)回复于 2006-06-03 15:01:17 得分 0

Response这是什么对象?不用定义可以直接用吗,还是要包括什么命名空间后才能用。Top

6 楼crane_9999(渴望失败!)回复于 2006-06-03 15:14:21 得分 0

ke   yi   zhi     ji     yongTop

7 楼msdsl(萨扬娜拉)回复于 2006-06-03 16:40:12 得分 0

为什么我用这段程序时,会显示Response为未声明的对象Top

8 楼tonny008()回复于 2006-06-03 21:05:44 得分 0

webform?       winform?Top

9 楼msdsl(萨扬娜拉)回复于 2006-06-03 22:39:00 得分 0

我的是winformTop

相关问题

关键词

得分解答快速导航

  • 帖主:msdsl

相关链接

  • CSDN .NET频道
  • .NET类图书
  • C#类图书
  • .NET类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo