使用剪贴板和对象序列化存储Word格式内容

目标:选中一段Word内容后,有表格、图片,浮动签名、图章等多种内容,保存到数据库,在使用的时候,从数据库里调用该内容,显示在Word。

思路:

1、数据库比如SQL,用image类型字段。

2、通过剪贴板获取数据,借助序列化和内存流,转换成二进制类型。

实践:

1、整个过程描述:

剪贴板获取内容,转换二进制,清除剪贴板,二进制赋值给剪贴板,CTRL+V 显示在Word里;

这样调试方便,省略了数据库保存的事情。

2、RTF格式数据二进制存储

2.1、获取选中Word的数据,格式为RTF格式;

Dim words As Object = Clipboard.GetDataObject.GetData(DataFormats.Rtf)

2.2、序列化方式转换成内存流

        Dim fm As New BinaryFormatter
        Dim ms As New MemoryStream
        fm.Serialize(ms, words)

2.3、转换成二进制

        ms.Flush()
        Dim a As Byte() = ms.ToArray
        ms.Close()

3、清除剪贴板

        Clipboard.Clear()

4、二进制数据还原

4.1、重建数据流

        ms = New MemoryStream
        fm = New BinaryFormatter
        ms.Write(a, 0, a.Length)
        ms.Flush()
        ms.Position = 0

4.2、还原复制的Word内容对象

        Dim obj As Object = fm.Deserialize(ms)

4.3、重建剪贴板

        Clipboard.SetData(DataFormats.Rtf, obj)

5、清理临时变量

        ms.Close()
        ms = Nothing
        words = Nothing
        obj = Nothing
        fm = Nothing

检测:找一个空白Word文档,Ctrl+V,试试。

说明:从复制开始,到读取数据,清空剪贴板,再重建数据,这中间证明,我们已经完全获得了有效的二进制数据。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值