gis
gis
管理员
管理员
  • 注册日期2003-07-16
  • 发帖数15951
  • QQ
  • 铜币25345枚
  • 威望15368点
  • 贡献值0点
  • 银元0个
  • GIS帝国居民
  • 帝国沙发管家
  • GIS帝国明星
  • GIS帝国铁杆
阅读:1680回复:2

用VB.Net编写一个功能强大的通用报表组件

楼主#
更多 发布于:2004-09-09 15:39
<TABLE width="100%">

<TR>
<TD class=a14>下载编绎成的组件文件(<a href="http://www.ccw.com.cn/htm/center/prog/MyClass.zip" target="_blank" ><FONT color=#0000ff>MyClass.Dll</FONT></A>)</TD></TR>
<TR>
<TD class=a14>数据报表是许多软件开发所必须解决的问题,一般的开发语言都提供了支持该语言的报表工具,可是所提供的仅是个固定格式报表模型,很难实现动态报表的可能,满足不了要求,用编程方法去实现又有些难度,极大地影响了软件的质量,达不到用户的要求。本人在实践中利用VBasic.Net开发出一个通用的报表组件。该组件具有灵活、动态报表功能,用户可以选择其报表内容,报表数据不仅用户可以控制打印,还可以多种文件格式保存。现在把它实现的方法及过程阐述如下:</TD></TR></TABLE>
<TABLE width="100%">

<TR>
<TD class=a14>实现原理:利用EXCEL强大的电子表格功能,把我们需要报表的数据送往EXCEL。同时经过一定的控制,提供给用户一个操作界面就达到目的。这一总个过程,都封装到一个组件中,供软件直接调用。</TD></TR></TABLE>
<TABLE width="100%">

<TR>
<TD class=a14>开发步骤如下:</TD></TR></TABLE>
<TABLE width="100%">

<TR>
<TD class=a14>1、启动Visual Studio.NET。在新建项目中选择Visual Basic项目,在模板中选择类库,在名称中输入类库文件名如Report确定,则进入类库开发环境中,把Class1换名为CReport.在项目菜单中加入引用,找到 Microsoft Excel 9.0 Object Library 确定后则引用了Excel。在类名最上面写上Imports System</TD></TR></TABLE>
<TABLE width="100%">

<TR>
<TD class=a14>Imports System.Windows.Forms,Imports Excel.ApplicationClass,Imports Excel.XlLineStyle,Imports Excel.XlPattern,Imports Excel.XlBorderWeight,Imports Excel.Constants,Imports Excel.XlBordersIndex八条引用语句。这里我们引用了有关.NET的系统命名空间和Excel应用及常量的命名空间。即:</TD></TR></TABLE>
<TABLE width="100%">

<TR>
<TD class=a14>Imports System</TD></TR></TABLE>
<TABLE width="100%">

<TR>
<TD class=a14>Imports System.Windows.Forms</TD></TR></TABLE>
<TABLE width="100%">

<TR>
<TD class=a14></TD></TR></TABLE>
<TABLE width="100%">

<TR>
<TD class=a14>Imports Excel.ApplicationClass</TD></TR></TABLE>
<TABLE width="100%">

<TR>
<TD class=a14>Imports Excel.XlLineStyle</TD></TR></TABLE>
<TABLE width="100%">

<TR>
<TD class=a14>Imports Excel.XlPattern</TD></TR></TABLE>
<TABLE width="100%">

<TR>
<TD class=a14>Imports Excel.XlBorderWeight</TD></TR></TABLE>
<TABLE width="100%">

<TR>
<TD class=a14>Imports Excel.Constants</TD></TR></TABLE>
<TABLE width="100%">

<TR>
<TD class=a14>Imports Excel.XlBordersIndex</TD></TR></TABLE>
<TABLE width="100%">

<TR>
<TD class=a14>2、定义命名空间为Reopot,即:</TD></TR></TABLE>
<TABLE width="100%">

<TR>
<TD class=a14>Namespace Reopot</TD></TR></TABLE>
<TABLE width="100%">

<TR>
<TD class=a14>3、定义公共类CReport,该类为供应用软件调用。定义类CReport的私有变量frmSetup,该变量将启动一个供用户操作的界面。定义类CReport的属性DataGrid,该属性供用户传送一待打印的数据网格名,定义类CReport的属性DataTable,该属性供用户传送一待打印的数据表格名。定义类CReport的公有方法Run,该方法启动该组件。分别编写它们的功能。代码如下:</TD></TR></TABLE>
<TABLE width="100%">

<TR>
<TD class=a14>Public Class CReport</TD></TR></TABLE>
<TABLE width="100%">

<TR>
<TD class=a14>Dim frmSetup As New frmPrintSetup()</TD></TR></TABLE>
<TABLE width="100%">

<TR>
<TD class=a14></TD></TR></TABLE>
<TABLE width="100%">

<TR>
<TD class=a14>Public Property DataGrid() As DataGrid</TD></TR></TABLE>
<TABLE width="100%">

<TR>
<TD class=a14>Get</TD></TR></TABLE>
<TABLE width="100%">

<TR>
<TD class=a14>' DataTable = mDataTable</TD></TR></TABLE>
<TABLE width="100%">

<TR>
<TD class=a14>End Get</TD></TR></TABLE>
<TABLE width="100%">

<TR>
<TD class=a14>Set(ByVal Value As DataGrid)</TD></TR></TABLE>
<TABLE width="100%">

<TR>
<TD class=a14>frmSetup.DataTable = Value.DataSource</TD></TR></TABLE>
<TABLE width="100%">

<TR>
<TD class=a14>frmSetup.MainTitle = Value.CaptionText</TD></TR></TABLE>
<TABLE width="100%">

<TR>
<TD class=a14>End Set</TD></TR></TABLE>
<TABLE width="100%">

<TR>
<TD class=a14>End Property</TD></TR></TABLE>
<TABLE width="100%">

<TR>
<TD class=a14></TD></TR></TABLE>
<TABLE width="100%">

<TR>
<TD class=a14>Public Property DataTable() As DataTable</TD></TR></TABLE>
<TABLE width="100%">

<TR>
<TD class=a14>Get</TD></TR></TABLE>
<TABLE width="100%">

<TR>
<TD class=a14>' DataTable = mDataTable</TD></TR></TABLE>
<TABLE width="100%">

<TR>
<TD class=a14>End Get</TD></TR></TABLE>
<TABLE width="100%">

<TR>
<TD class=a14>Set(ByVal Value As DataTable)</TD></TR></TABLE>
<TABLE width="100%">

<TR>
<TD class=a14>frmSetup.DataTable = Value</TD></TR></TABLE>
<TABLE width="100%">

<TR>
<TD class=a14>End Set</TD></TR></TABLE>
<TABLE width="100%">

<TR>
<TD class=a14>End Property</TD></TR></TABLE>
<TABLE width="100%">

<TR>
<TD class=a14></TD></TR></TABLE>
<TABLE width="100%">

<TR>
<TD class=a14>Public Sub Run()</TD></TR></TABLE>
<TABLE width="100%">

<TR>
<TD class=a14>frmSetup.ShowDialog()</TD></TR></TABLE>
<TABLE width="100%">

<TR>
<TD class=a14>frmSetup = Nothing</TD></TR></TABLE>
<TABLE width="100%">

<TR>
<TD class=a14>End Sub</TD></TR></TABLE>
<TABLE width="100%">

<TR>
<TD class=a14>End Class</TD></TR></TABLE>
<TABLE width="100%">

<TR>
<TD class=a14></TD></TR></TABLE>
<TABLE width="100%">

<TR>
<TD class=a14>4、定义公共类CPublicExcel,该类主要定义Excel的程序对象,启动Excel并打印及保存报表。代码如下:</TD></TR></TABLE>
<TABLE width="100%">

<TR>
<TD class=a14></TD></TR></TABLE>
<TABLE width="100%">

<TR>
<TD class=a14>'这个类是不改变的 (公共性)</TD></TR></TABLE>
<TABLE width="100%">

<TR>
<TD class=a14>Public Class CPublicExcel</TD></TR></TABLE>
<TABLE width="100%">

<TR>
<TD class=a14>Public xlApp As New Excel.Application() 'excel程序对象</TD></TR></TABLE>
<TABLE width="100%">

<TR>
<TD class=a14>'Public gblnSaveReport As Boolean ' 该Report是否输出成为XLS文件</TD></TR></TABLE>
<TABLE width="100%">

<TR>
<TD class=a14>'Public gstrPath As String ' 该Report输出成为XLS的文件名</TD></TR></TABLE>
<TABLE width="100%">

<TR>
<TD class=a14></TD></TR></TABLE>
<TABLE width="100%">

<TR>
<TD class=a14>Private ExcelWasNotRunning As Boolean '原来的excel程序的状态</TD></TR></TABLE>
<TABLE width="100%">

<TR>
<TD class=a14>Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long</TD></TR></TABLE>
<TABLE width="100%">

<TR>
<TD class=a14>Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long</TD></TR></TABLE>
<TABLE width="100%">

<TR>
<TD class=a14></TD></TR></TABLE>
<TABLE width="100%">

<TR>
<TD class=a14>'识别excel是否运行</TD></TR></TABLE>
<TABLE width="100%">

<TR>
<TD class=a14>Private Function DetectExcel() As Boolean</TD></TR></TABLE>
<TABLE width="100%">

<TR>
<TD class=a14>Const WM_USER = 1024</TD></TR></TABLE>
<TABLE width="100%">

<TR>
<TD class=a14>Dim hWnd As Long</TD></TR></TABLE>
<TABLE width="100%">

<TR>
<TD class=a14>hWnd = FindWindow("XLMAIN", 0)</TD></TR></TABLE>
<TABLE width="100%">

<TR>
<TD class=a14>If hWnd <> 0 Then ' hWnd <> 0 means Excel is running.</TD></TR></TABLE>
<TABLE width="100%">

<TR>
<TD class=a14>SendMessage(hWnd, WM_USER + 18, 0, 0)</TD></TR></TABLE>
<TABLE width="100%">

<TR>
<TD class=a14>DetectExcel = True</TD></TR></TABLE>
<TABLE width="100%">

<TR>
<TD class=a14>Else</TD></TR></TABLE>
<TABLE width="100%">

<TR>
<TD class=a14>DetectExcel = False</TD></TR></TABLE>
<TABLE width="100%">

<TR>
<TD class=a14>End If</TD></TR></TABLE>
<TABLE width="100%">

<TR>
<TD class=a14>End Function</TD></TR></TABLE>
<TABLE width="100%">

<TR>
<TD class=a14></TD></TR></TABLE>
<TABLE width="100%">

<TR>
<TD class=a14>'打开excel</TD></TR></TABLE>
<TABLE width="100%">

<TR>
<TD class=a14>Public Sub OpenExcelSheet()</TD></TR></TABLE>
<TABLE width="100%">

<TR>
<TD class=a14>ExcelWasNotRunning = Not DetectExcel()</TD></TR></TABLE>
<TABLE width="100%">

<TR>
<TD class=a14>If ExcelWasNotRunning Then</TD></TR></TABLE>
<TABLE width="100%">

<TR>
<TD class=a14>xlApp = GetObject("", "Excel.Application")</TD></TR></TABLE>
<TABLE width="100%">

<TR>
<TD class=a14>Else</TD></TR></TABLE>
<TABLE width="100%">

<TR>
<TD class=a14>xlApp = GetObject(, "Excel.Application")</TD></TR></TABLE>
<TABLE width="100%">

<TR>
<TD class=a14>End If</TD></TR></TABLE>
<TABLE width="100%">

<TR>
<TD class=a14>xlApp.Workbooks.Add() '(ExcelSheetName)</TD></TR></TABLE>
<TABLE width="100%">

<TR>
<TD class=a14>End Sub</TD></TR></TABLE>
<TABLE width="100%">

<TR>
<TD class=a14>'打印预览报表</TD></TR></TABLE>
<TABLE width="100%">

<TR>
<TD class=a14>Public Sub PrintPreview()</TD></TR></TABLE>
<TABLE width="100%">

<TR>
<TD class=a14>xlApp.Caption = "报表"</TD></TR></TABLE>
<TABLE width="100%">

<TR>
<TD class=a14>xlApp.DisplayAlerts = False</TD></TR></TABLE>
<TABLE width="100%">

<TR>
<TD class=a14>xlApp.Visible = True</TD></TR></TABLE>
<TABLE width="100%">

<TR>
<TD class=a14>xlApp.ActiveWorkbook.PrintPreview()</TD></TR></TABLE>
<TABLE width="100%">

<TR>
<TD class=a14>xlApp.Visible = False</TD></TR></TABLE>
<TABLE width="100%">

<TR>
<TD class=a14>End Sub</TD></TR></TABLE>
<TABLE width="100%">

<TR>
<TD class=a14>'打印报表</TD></TR></TABLE>
<TABLE width="100%">

<TR>
<TD class=a14>Public Sub Print()</TD></TR></TABLE>
<TABLE width="100%">

<TR>
<TD class=a14>xlApp.DisplayAlerts = False</TD></TR></TABLE>
<TABLE width="100%">

<TR>
<TD class=a14>xlApp.Visible = False</TD></TR></TABLE>
<TABLE width="100%">

<TR>
<TD class=a14>xlApp.ActiveWorkbook.PrintOut()</TD></TR></TABLE>
<TABLE width="100%">

<TR>
<TD class=a14>End Sub</TD></TR></TABLE>
<TABLE width="100%">

<TR>
<TD class=a14>'保存报表</TD></TR></TABLE>
<TABLE width="100%">

<TR>
<TD class=a14>Public Sub SaveAs(ByVal FileName As String)</TD></TR></TABLE>
<TABLE width="100%">

<TR>
<TD class=a14>Dim file As System.IO.File</TD></TR></TABLE>
<TABLE width="100%">

<TR>
<TD class=a14>Try</TD></TR></TABLE>
<TABLE width="100%">

<TR>
<TD class=a14>'If file.Exists(FileName) = True Then</TD></TR></TABLE>
<TABLE width="100%">

<TR>
<TD class=a14>' file.Delete(FileName)</TD></TR></TABLE>
<TABLE width="100%">

<TR>
<TD class=a14>'End If</TD></TR></TABLE>
<TABLE width="100%">

<TR>
<TD class=a14>xlApp.ActiveWorkbook.SaveAs(FileName)</TD></TR></TABLE>
<TABLE width="100%">

<TR>
<TD class=a14>Catch ex As Exception 'When y = 0 ' Catch the error.</TD></TR></TABLE>
<TABLE width="100%">

<TR>
<TD class=a14></TD></TR></TABLE>
<TABLE width="100%">

<TR>
<TD class=a14>MsgBox(ex.ToString) ' Show friendly error message.</TD></TR></TABLE>
<TABLE width="100%">

<TR>
<TD class=a14>' Beep() ' Beep after error processing.</TD></TR></TABLE>
<TABLE width="100%">

<TR>
<TD class=a14>End Try</TD></TR></TABLE>
<TABLE width="100%">

<TR>
<TD class=a14>End Sub</TD></TR></TABLE>
<TABLE width="100%">

<TR>
<TD class=a14>End Class</TD></TR></TABLE>
<TABLE width="100%">

<TR>
<TD class=a14></TD></TR></TABLE>
<TABLE width="100%">

<TR>
<TD class=a14>5、定义友元类CExcelReport,该类不为用户所见,但可供本组件调用,固为友元类。该类继承公有类CPublicExcel,是本组件的核心。它通过结构体定义了文本字体Font,Excel单元格Cell,打印IsPrint, Excels等结构体,并分别初始化,定义一些变量、属性、方法,其作用及功能分别作了注解(分号'后的是VBasic.Net注解)。<a href="http://www.ccw.com.cn/htm/center/prog/02_8_15_4a.txt" target="_blank" ><FONT color=#0000ff>查看代码>></FONT></A></TD></TR></TABLE>
<TABLE width="100%">

<TR>
<TD class=a14></TD></TR></TABLE>
<TABLE width="100%">

<TR>
<TD class=a14>6、定义一窗体frmPrintSetup,该窗体给用户提供可视化操作的报表控制界面。方法是向工程中增加一Window窗体,命名为frmPrintSetup.向窗体中加入一工具控件ToolBar1,向ToolBar1中添加按钮tlbAll(全选)、tlbClear(清除)、tlbBrowse(预览)、tlbPrint(打印)、tlbSave(保存)、tlbColor(颜色)、tlbFont(字体)、tlbExit(退出),一网格控件MsGrid1,文本控件txtFileTitle、txtSubTitle、TextBox2,下拉组合框控件ComboBox2(设置)、ComboBox4(线重)、ComboBox3(线型)、ComboBox1(对齐)、ComboBox5(插入),在ComboBox2中填充数据“边框,内部”, ComboBox4填充数据“微线,细线,着重线,普通线”, ComboBox3填充数据“无线,实线,虚线,点线,点虚线,双点虚线,斜线,双线”, ComboBox1填充数据“居左,居中,居右”, ComboBox5填充数据“页首插入页码,页尾插入页码,页首插入日期,页尾插入日期,页首插入单位(人),页尾插入单位(人),不插入”,向窗体中加入标签lblInsert其值为“第X码共Y页“、lblMailTitle其值为“第X码共Y页“正标题”、lblSubTitle其值为“第X码共Y页“副标题“、lblHead其值为“第X码共Y页“表头...”、lblFond其值为“第X码共Y页“表体...“; 向窗体中加入非可视的控件PrintDocument1(打印设置)、PageSetupDialog1(打印页设置)、FontDialog1(字体设置)、ColorDialog1(颜色设置)、ImageList1(图片)、SaveFileDialog1(保存)。如下:</TD></TR></TABLE>
<TABLE width="100%">

<TR>
<TD class=a14>
<P align=center><IMG src="http://www.ccw.com.cn/htm/center/prog/02_8_15_4a.jpg" border=0> </P></TD></TR></TABLE>
<TABLE width="100%">

<TR>
<TD class=a14>在窗体frmPrintSetup中定义变量:MainTitle、SubTitle、mDataTable、IsWriteDataToExcel、mCurrTitle, mCurrLine,并申请类CExcelReport的实类mReport。</TD></TR></TABLE>
<TABLE width="100%">

<TR>
<TD class=a14>点击这里看<a href="http://www.ccw.com.cn/htm/center/prog/02_8_15_4b.txt" target="_blank" ><FONT color=#0000ff>具体代码>></FONT></A> </TD></TR></TABLE>
<TABLE width="100%">

<TR>
<TD class=a14>7、把上面的代码加入到Reopot命名空间中,以使整个组件封装在命名空间中, 把frmPrintSetup改为Friend,原因如上。代码如下:</TD></TR></TABLE>
<TABLE width="100%">

<TR>
<TD class=a14>Imports System.Windows.Forms</TD></TR></TABLE>
<TABLE width="100%">

<TR>
<TD class=a14>Namespace Reopot</TD></TR></TABLE>
<TABLE width="100%">

<TR>
<TD class=a14>Friend Class frmPrintSetup</TD></TR></TABLE>
<TABLE width="100%">

<TR>
<TD class=a14>Inherits System.Windows.Forms.Form</TD></TR></TABLE>
<TABLE width="100%">

<TR>
<TD class=a14></TD></TR></TABLE>
<TABLE width="100%">

<TR>
<TD class=a14>Public MainTitle As String '文件的大标题--一般为“**学校**系统“</TD></TR></TABLE>
<TABLE width="100%">

<TR>
<TD class=a14>Public SubTitle As String '文件的次标题--一般为要打印的窗体的title</TD></TR></TABLE>
<TABLE width="100%">

<TR>
<TD class=a14></TD></TR></TABLE>
<TABLE width="100%">

<TR>
<TD class=a14>'私有数据,内部使用</TD></TR></TABLE>
<TABLE width="100%">

<TR>
<TD class=a14>Private mDataTable As DataTable '要打印的网格控件</TD></TR></TABLE>
<TABLE width="100%">

<TR>
<TD class=a14>Dim mReport As New CExcelReport()</TD></TR></TABLE>
<TABLE width="100%">

<TR>
<TD class=a14>Private IsWriteDataToExcel As Boolean '是否写数据到Excel了</TD></TR></TABLE>
<TABLE width="100%">

<TR>
<TD class=a14>Private mCurrTitle, mCurrLine As Int16</TD></TR></TABLE>
<TABLE width="100%">

<TR>
<TD class=a14>…</TD></TR></TABLE>
<TABLE width="100%">

<TR>
<TD class=a14>Public Property DataTable() As DataTable</TD></TR></TABLE>
<TABLE width="100%">

<TR>
<TD class=a14>Get</TD></TR></TABLE>
<TABLE width="100%">

<TR>
<TD class=a14>DataTable = mDataTable</TD></TR></TABLE>
<TABLE width="100%">

<TR>
<TD class=a14>End Get</TD></TR></TABLE>
<TABLE width="100%">

<TR>
<TD class=a14>Set(ByVal Value As DataTable)</TD></TR></TABLE>
<TABLE width="100%">

<TR>
<TD class=a14>mDataTable = Value</TD></TR></TABLE>
<TABLE width="100%">

<TR>
<TD class=a14>End Set</TD></TR></TABLE>
<TABLE width="100%">

<TR>
<TD class=a14>End Property</TD></TR></TABLE>
<TABLE width="100%">

<TR>
<TD class=a14>…</TD></TR></TABLE>
<TABLE width="100%">

<TR>
<TD class=a14>End Class</TD></TR></TABLE>
<TABLE width="100%">

<TR>
<TD class=a14>End Namespace</TD></TR></TABLE>
<TABLE width="100%">

<TR>
<TD class=a14></TD></TR></TABLE>
<TABLE width="100%">

<TR>
<TD class=a14>8、把上面的代码编生成为DLL组件。方法是在.net编辑环境下选择生成菜单中按生成就生成了DLL文件。然后,可以直接调用该组件了。</TD></TR></TABLE>
<TABLE width="100%">

<TR>
<TD class=a14>9、测试:</TD></TR></TABLE>
<TABLE width="100%">

<TR>
<TD class=a14>调用方法极为简单,在你的程序中先申请如下报表组件CReport的实类,向CReport传送数据来源如DataGrid,调用CReport的方法Run就可,如在以下窗体:的print按钮中编写代码如下就可:</TD></TR></TABLE>
<TABLE width="100%">

<TR>
<TD class=a14>
<P align=left>Dim Rpt As New Reopot.CReport() </P></TD></TR></TABLE>
<TABLE width="100%">

<TR>
<TD class=a14>Rpt.DataGrid = Me.DataGrid1</TD></TR></TABLE>
<TABLE width="100%">

<TR>
<TD class=a14>Rpt.Run()</TD></TR></TABLE>
<TABLE width="100%">

<TR>
<TD class=a14>
<P align=center><IMG src="http://www.ccw.com.cn/htm/center/prog/02_8_15_4b.jpg" border=0></P></TD></TR></TABLE>
<TABLE width="100%">

<TR>
<TD class=a14></TD></TR></TABLE>
<TABLE width="100%">

<TR>
<TD class=a14>按print按钮得到如下界面,你就可在此界面中按打印所需进行设置。</TD></TR></TABLE>
<TABLE width="100%">

<TR>
<TD class=a14>
<P align=center><IMG src="http://www.ccw.com.cn/htm/center/prog/02_8_15_4c.jpg" border=0> </P></TD></TR></TABLE>
<TABLE width="100%">

<TR>
<TD class=a14>按上图的浏览按钮得到<a href="http://www.ccw.com.cn/htm/center/prog/02_8_15_4z.jpg" target="_blank" ><FONT color=#0000ff>如下报表</FONT></A>。</TD></TR></TABLE>
<TABLE width="100%">

<TR>
<TD class=a14></TD></TR></TABLE>
<TABLE width="100%">

<TR>
<TD class=a14></TD></TR></TABLE>
<TABLE width="100%">

<TR>
<TD class=a14>总结:上面方法用Visual Basic.Net开发了一个通用的报表组件。其开发的复杂程度可想而知,该文开放了所有源代码,并分别作了较详细的解释,大多地方都有注释。通过对上文的学习,能使你掌握许多关于VBA编写Excel的知识,编写组件的方法技巧。并为自己深入学习.Net编程提供了多方面知识。</TD></TR></TABLE>
喜欢0 评分0
GIS麦田守望者,期待与您交流。
wangjh
论坛版主
论坛版主
  • 注册日期2003-08-22
  • 发帖数994
  • QQ55359982
  • 铜币2579枚
  • 威望0点
  • 贡献值0点
  • 银元0个
1楼#
发布于:2004-09-09 17:02
看上去很爽
网 站: www.52xoo.com (3S,信息融合,数字图像处理,模式识别与人工智能等专业电子书、学术文章及源代码共享) E-mail: Jianhong72@163.com QQ: 88128745 (55359982用了近10年,最近被盗了,郁闷!!!)
举报 回复(0) 喜欢(0)     评分
barty898
路人甲
路人甲
  • 注册日期2004-07-22
  • 发帖数89
  • QQ
  • 铜币-57枚
  • 威望0点
  • 贡献值0点
  • 银元0个
2楼#
发布于:2004-09-09 18:22
<img src="images/post/smile/dvbbs/em01.gif" /><img src="images/post/smile/dvbbs/em06.gif" />
举报 回复(0) 喜欢(0)     评分
游客

返回顶部