c# word excel 二进制 存入数据库
在Sql Server中存储、读写Word文件,需要将指定表字段添加为Image类型,示例表结构为:
1 CREATE TABLE CONTRACTS (
2 ID VARCHAR (50),
3 CONTRACT_FILE IMAGE
4 );
CONTRACT_FILE字段就是要存储Word文件的字段,在存储前,有一个小插曲,你需要将Word文件转换为byte数组,可参考以下代码实现:
1 //将文件转换为byte数组
2 public static byte[] File2Bytes(string fileName)
3 {
4 FileStream fs = new FileStream(fileName,FileMode.OpenOrCreate, FileAccess.Read);
5 byte[] fileDatas = new byte[fs.Length];
6 fs.Read(fileDatas, 0, System.Convert.ToInt32(fs.Length));
7 fs.Close();
8 return fileDatas;
9 }
接下来就是将转换后的byte[]数组存储到SqlServer的对应字段中,具体实现代码可看如下代码段:
01 //将文件存储到数据库
02 public bool UpdateContractFile(string id, byte[] fileBytes)
03 {
04 string sql = "UPDATE CONTRACTS SET CONTRACT_FILE=@CONTRACT_FILE WHERE ID=@ID";
05 using (SqlConnection conn = new SqlConnection(this.m_DataAccess.ConnectString))
06 {
07 conn.Open();
08 using (SqlCommand cmd = new SqlCommand())
09 {
10 cmd.Connection = conn;
11 cmd.CommandText = sql;
12 cmd.Parameters.Clear();
13 cmd.Parameters.Add(new SqlParameter("@CONTRACT_FILE", SqlDbType.Image));
14 cmd.Parameters["@CONTRACT_FILE"].Value = fileBytes;
15 cmd.Parameters.Add(new SqlParameter("@ID", SqlDbType.VarChar));
16 cmd.Parameters["@ID"].Value = id;
17 return cmd.ExecuteNonQuery() > 0 ? true : false;
18 }
19 }
20 }
同时,因之前转换了数据类型,所以从数据库中读取Word文件时,要先将Image类型的字段转换为bytes[],代码如下:
01 //通过ID获取文件byte数组
02 public byte[] GetContractFile(string id)
03 {
04 string sql = "SELECT CONTRACT_FILE FROM CONTRACTS WHERE ID='{0}'";
05 sql = string.Format(sql, id);
06 object contractFile;
07 contractFile = this.m_DataAccess.ExecuteScalar(sql);
08 if (contractFile == null)
09 {
10 return new byte[0];
11 }
12 else
13 {
14 return (byte[])contractFile;
15 }
16 }
在获取到文件的byte[]后,将该文件再通过文件流存储为Word文件,以下代码可实现此功能:
01 //将byte[]数组存储为Word文件
02 byte[] fileBytes = this.m_ContractsBusiness.GetContractFile(id);
03 if (fileBytes.Length == 0)
04 {
05 XMessageBox.ShowError("未找到合同文件!");
06 return;
07 }
08 SaveFileDialog sfd = new SaveFileDialog();
09 sfd.Filter = "Word文件(*.doc)|*.doc";
10 if (sfd.ShowDialog() == System.Windows.Forms.DialogResult.OK)
11 {
12 try
13 {
14 string saveFileName = sfd.FileName;
15 int arraysize = new int();
16 arraysize = fileBytes.GetUpperBound(0);
17 FileStream fs = new FileStream(saveFileName, FileMode.OpenOrCreate, FileAccess.Write);
18 fs.Write(fileBytes, 0, arraysize);
19 fs.Close();
20 if (XMessageBox.ShowQuestion("文件存储成功,是否立即打开文件?") ==
21 System.Windows.Forms.DialogResult.Yes)
22 {
23 Process.Start(saveFileName);
24 }
25 }
26 catch (Exception ex)
27 {
28 XMessageBox.ShowError("操作失败!");
29 }
上面的几段代码只是核心代码,并不是完整的代码段,用时候要看清,自己再修改下。
from:https://zhidao.baidu.com/question/1668174604263928547.html
c# word excel 二进制 存入数据库的更多相关文章
- word excel文件 存入数据库 实战
上传: private void Insert2017(HttpContext context) { if (context.Request.Files["fileword"].C ...
- asp.net将图片转成二进制存入数据库
一.代码如下 int code = int.Parse(this.TextBox1.Text);//图片编码 string value = this.FileUpload1.PostedFile.Fi ...
- MVC4.0 上传Excel并存入数据库
这里的这个功能实现在WebForm很好实现,上传阶段简单的一个FileUoLoad控件就搞定了,什么取值,什么上传都是浮云,微软都帮我们封装好了,我们只需要一拖一拽就OK了,但这些在MVC中是不行的! ...
- MyBatis框架(三)动态SQL,分页,二进制存入数据库图片
一.动态sql语句,分页 1, <if>条件 <if test="key!=null"> 拼接sql语句 </if> 2, <choose ...
- PHP - 读取EXCEL内容 存入数据库
<?php //设置请求头 header("Content-Type:text/html;charset=utf8"); header("Access-Contro ...
- java 使用poi读取word文档存入数据库
使用的poi jar包需要自己下载 读取的word文档中含有多个图片,所以分为两个部分,一个部分读取各个表格中内容,一个是将所有图片截取出来: /** * 遍历段落内容 * docxReadPath ...
- ASP.Net将图片以二进制方式存入数据库,并读取
把图片转换成二进制--把二进制转换成图片 private void button1_Click(object sender, EventArgs e) { string path = this.tex ...
- asp.net FileUpload 控件上传文件 以二进制的形式存入数据库并将图片显示出来
图片上传事件代码如下所示: byte[] binary = upload.FileBytes; StringBuilder sqlStrSb = new StringBuilder(); sqlStr ...
- 使用python把图片存入数据库-乾颐堂
一般情况下我们是把图片存储在文件系统中,而只在数据库中存储文件路径的,但是有时候也会有特殊的需求:把图片二进制存入数据库. 今天我们采用的是python+mysql的方式 MYSQL 是支持把图片存入 ...
随机推荐
- T-sql for xml path使用(转)
参考: http://www.cnblogs.com/langhua/p/4193161.html //用法: FOR XML PATH 方法是用于将查询结果集以XML形式展示 sql: p.Cont ...
- xcode 筛选error
程序编译出太多warning,想从中找到error很不容易,xcode中可以作筛选,点左下角的叹号即可只显示error:
- Sql UNION 合并多个结果集并排序
1.建表语句及测试数据: --创建表A CREATE TABLE A( A1 int NULL, A2 nvArchAr(50) NULL, A3 decimAl(18, 0) NULL ) --测试 ...
- js与php中一些相似函数的对比
一:substr js中:stringObject.substr(start,length) 一个中文算一个字符,一个英文也算一个字符 <script type="text/jav ...
- 466. Count Linked List Nodes【Naive】
Count how many nodes in a linked list. Example Given 1->3->5, return 3. 解法一: /** * Definition ...
- ilmerge工具合并多个DLL或EXE
这是一个微软提供的合并多个DLL 或是将DLL合并进EXE的工具 首先下载这个工具:ilmerge http://www.microsoft.com/en-us/download/details.as ...
- cocos2dx 3.x 开发环境搭建
1. 准备工作 (1)VS2012 (2)cocos2dx cn.cocos2d-x.org/download (3)python 新版本的cocos2dx 需要python编译 2. 安装软件 (1 ...
- 错误:undefined reference to `__gxx_personality_v0'
使用gcc编译C代码,引用了C++ 库,出现这个错误,网上搜到这哥们的文章,解决问题 转自:错误:undefined reference to `__gxx_personality_v0' 1. Li ...
- Windows Phone Unit Test 环境搭建
单元测试对工程质量带来的作用就不详细说明了,本文只讨论如何在WP开发环境下搭建测试工程 历史 从WP7时代官方是不支持UnitTest工程的,因此需要采用WPToolkitTest这个工程来实 ...
- [Application]Ctrl+C终止程序代码
代码如下: #include <stdio.h> #include <stdlib.h> #include <iostream> #include <sign ...