本站文件搜索 :输入关键字,查找本站您所需要的文件! 本网站已经开通手机终端,手机访问http://www.dnjqxx.com 转至对应的WebApp域名。
当前位置:首页 > 电脑设计 > 电脑设计技巧 > 详细内容
用ASP.NET实现Office文档的存储与分类显示
发布时间:2015-2-12  阅读次数:2950  字体大小: 【】 【】【

摘  要:本文利用ASP.NET编程技术结合数据库实现对Office文档的浏览与管理


关键字:ASP.NET编程,Office文档存储,数据库,Web




一、前言:


   微软的Office系列产品是目前最常用的办公软件,如何把日积月累的文档文件有效地管理起来并进行检索,是目前很多企事业单位寻求解决文件管理的目标。本文运用ASP.Net技术与SQL Server数据库相结合,实现了对Office文档文件的分类存储管理并通过IE浏览器进行显示,为文件管理提供一种可行的方法。


二、设计思路


   目前普遍使用Office工具撰写各种文件、资料,怎样对这些文件进行有效的管理是一件令人头疼的事情,把各种文件按照不同的分类分别存储到不同的文件夹下,查找起来同样让人烦恼。本文的设计思路是把这些文件存储到数据库中,设置文件分类字段,可以把文件进行简单的分类管理;同时设置查询关键字段,可以快速查找到需要的文件。


   SQL Server 2000是运行在windows 2000 下的一个功能强大的关系型数据库管理系统,由于同其与windows 2000紧密集成,它的数据处理速度相当有保证,也更加易于维护管理。SQL Server 200数据库表中的Image数据类型可以存储数据流类型的数据,本文把利用ASP.NET把Office文件转换成数据流存储到数据库中,在数据使用的时候,再把数据从数据流转换成Office文件显示给用户。


   1. 定义恰当的数据库表结构。


   要实现Office文件的数据库存储必须定义恰当的数据库表结构,该结构有必须包含两种字段,一是能够记录Office文件的文件类型的字段,这样数据还原的时候就可以作为依据进行数据转换;一是有能够存储数据流的字段,该字段必须是Image类型。


   例如建立如下数据库:

数据库名

Test

表名称

test

字段名

字段类型

字段长度

备注

id

int

4

关键字,记录唯一性标记

标题

Varchar

100

Office文档标题

文件类型

Char

3

Office文档类型

主题词

Varchar

100

Office文档检索主题关键字

内容

Image

16

存储Office文档的字段

2. 把Office文件转换成数据流存储到数据库中


定义char类型变量,用以记录该Office文件类型。


定义FileStream类型变量,把Office文件作为数据流进行读取。


定义Byte()数组类型变量,把数据流作为二进制变量存储到该数组中,这样可以对数据库字段进行赋值。


如下代码是把文件转换成数据流存储到数据库中。


'引用命名空间


Imports System.Data.SqlClient


Imports System.IO


'设置连接字符串等公共变量


Dim connstr = "User ID=sa;Initial Catalog=test;Password=sa; Data Source=SERVER;"


Dim myconn As New SqlConnection(connstr)


Private Sub Button_save_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button_save.Click


  Dim sqlstr As String


  Dim filetype as string '上传文件类型


  Dim maxid As String  '用户生成id号码


  Dim myFileStream As FileStream


 Dim byteData As Byte()


'生成关键字id号码


sqlstr = "select max(id) from test "


  myconn.Open()


  Dim mycmd As New SqlCommand("", myconn)


  mycmd.CommandText = sqlstr


  If IsDBNull(mycmd.ExecuteScalar()) Then


        maxid = "0"


  Else


        maxid = mycmd.ExecuteScalar()


  End If


 If Me.input1.PostedFile.FileName <> "" Then '判断用户是否上传文件


   '首先保存非大字段类型的数据


Filetype=right(Me.input1.PostedFile.FileName)


    sqlstr = "insert into test (id,标题,主题词,文件类型) values('" & maxid + 1 & "','" & Trim(Me.TextBox_bt.Text) & "','" & Trim(Me.TextBox_ztc.Text) & "','" & Filetype & "')"


     mycmd.CommandText = sqlstr


     mycmd.ExecuteNonQuery()


    myconn.Close()  '关闭数据库连接


    '上传文件存储


     sqlstr = "select id,内容 from test where id='" & maxid + 1 & "'"  


     Dim daadp As New SqlDataAdapter(sqlstr, myconn)


     Dim ds As New DataSet()


     Dim sqlBuilder = New SqlCommandBuilder(daadp)


     myconn.Open()


     daadp.Fill(ds, "test")


     myconn.Close()


     Dim myrow = ds.Tables("test").Rows(0) '定位数据集记录


     ds.Tables("test").DefaultView.AllowEdit = True


     Me.input1.PostedFile.SaveAs(Server.MapPath("picture.zzz")) '读取文件,转换成数据流


     myFileStream = New FileStream(Server.MapPath("picture.zzz"), IO.FileMode.Open)


     ReDim byteData(myFileStream.Length - 1)


     myFileStream.Read(byteData, 0, myFileStream.Length)


     myFileStream.Close()


     myrow.item("内容") = byteData  '数据流存储到数据库中


     daadp.Update(ds, "test")


     myconn.Close()


   


 Else '仅保存文本数据


   sqlstr = "insert into test(id,标题,主题词) values('" & maxid + 1 & "','" & Trim(Me.TextBox_bt.Text) & "','" & Trim(Me.TextBox_ztc.Text) & "')"


  mycmd.CommandText = sqlstr


  mycmd.ExecuteNonQuery()


 myconn.Close() '关闭连接


 End if


 Response.Write("<script language='javascript'>alert('成功保存!');</script>")


End Sub


3. 把数据库中的数据按照原来文档类型转换成相应的Office文件并显示在Web页面中。


在Web页面中定义能够用于显示文件的容器,然后在该容器内调用把数据流转换成Office文件的页面。


在aspx文件html代码中添加一个容器,用来显示Office文件,具体html代码如下:


<iframe id="i1" style="Z-INDEX:107;  WIDTH:760px; HEIGHT: 500px" name="i1" src="文件显示.aspx?id=<%response.write(request("id"))%>"></iframe>


                   


在把数据流转换成Office文件的文件显示页面内不需要任何控件和多余的html代码,只要按照需求读取数据库内容,根据预先存储的Office文件类型把数据读取出来就可以。


Office文件显示Web窗体设计


Ø         新建一Web窗体,设计窗体名称为:文件显示. Aspx。


Ø         该窗体不需要控件,只要把下面源代码与页面html格式替换即可。


页面代码如下:


 <%@ import namespace="System.Data"%>


<%@ import namespace="System.Data.SqlClient"%>


<script language="vb" runat="server">


private sub page_load(ByVal sender As System.Object, ByVal e As System.EventArgs)


     Dim filetype as string '显示文件类型  


try  


       if request("id") <> "" then


           Dim connstr = "User ID=sa;Initial Catalog=test;Password=sa; Data Source=SERVER;"


           Dim myconn As New SqlConnection(connstr)


           myconn.open()


           Dim dada As New SqlDataAdapter("select id,内容,文件类型 from test where id='" & request("id") & "'", myconn)


           Dim ds As New DataSet()


      dada.Fill(ds, "test")


        filetype=ds.Tables("test").Rows(0).Item("文件类型")


         '读取预定义的文件类型


        if filetype ="doc" then


           Response.ContentType = "application/msword"


        else if filetype ="ppt" then


           Response.ContentType = "application/ms-powerpoint"


        else if filetype ="xls" then


           Response.ContentType = "application/vnd.ms-excel"


        Else


           response.write("没有上传文件")


        end if


         '根据文件类型显示office文件


           if not isdbnull(ds.Tables("test").Rows(0).Item("内容"))


              Response.BinaryWrite(ds.Tables("test").Rows(0).Item("内容"))


           end if


          myconn.close()


       end if


   catch e26 as exception


      response.write(e26.message)


end try


end sub


</script>



我要评论
  • 匿名发表
  • [添加到收藏夹]
  • 发表评论:(匿名发表无需登录,已登录用户可直接发表。) 登录状态:未登录
最新评论
所有评论[1]
    暂无已审核评论!


电脑技巧学习网站版权所有  地址:广州市海珠区
       本站部分有关软件和系统的内容和观点来自网络,不代表本站观点!特此公告!电脑技巧学习论坛,真诚欢迎热爱探讨电脑技巧的朋友加入电脑技巧学习论坛,将你的观点、见解和作品分享给网友们!电脑技巧网,提供计算机知识,电脑使用技巧,电脑基础知识,让电脑爱好者可以快速学到电脑知识!
 注意事项:电脑不要24小时通电,偶尔会遭遇雷雨天气。会损坏电脑。 


站内所有资源仅供学习与参考,请勿用于商业用途,否则产生的一切后果将由您自己承担!

 copyright 2000-2109  ( dnjqxx.com ) All rights reserved   粤ICP备18150927号
广告联系|版权声明|下载帮助|软件发布| 网站地图|

企业简介 |总裁致辞|成长历程|联系我们|组织机构|企业文化

网站统计