积极答复者
代码读取Access中手工插入的OLE对象

问题
-
请大内高手帮忙解惑!感激不尽…………
问题1、请问如何通过代码读取Access中手工插入的OLE对象?
Access中手工插入的OLE对象貌似与用代码插入的OLE对象不一样,同一份“.doc”文件用手工插入时名称显示为“microsoft 97-2003 文档”,而代码插入时则是“长二进制文件”!
所说是当手工插入OLE对象时Access会自动添加一些附加的信息,那请问该如何才能通过代码读取该类对象???
问题2、另外,我在用下面代码(下面是web网站的后台文档,功能:下载前台gridview中access的OLE对象.doc文档)进行尝试时,下载后的文件竟然是该网站的页面文件(.aspx),请问这是不是因为问题1中的原因引起?
DataTable myDT = Session["myDTPrjDoc"] as DataTable;
byte[] btDoc = (byte[])myDT.Rows[0]["文档内容"];
string sFileName = myDT.Rows[0]["文档内容"].ToString();
Response.Clear();
Response.ClearHeaders();
Response.Buffer = false;
Response.ContentType = "application/msword";
Response.AppendHeader("Content-Disposition", "attachment;filename=" + Server.UrlEncode(sFileName) + ".doc"); //把 attachment 改为 online 则在线打开
Response.BinaryWrite(btDoc);
Response.Flush();
Response.Close();
Response.End();问题3、Response.AppendHeader("Content-Disposition", "attachment;filename=" + Server.UrlEncode(sFileName) + ".doc"); 这句代码中Server.UrlEncode(sFileName)是为了解决sFileName包含中文时出现乱码的问题,但是在此句后面一定得加上".doc"类似的后缀名才行,否则依然会出现中文乱码的问题!
答案
-
你好:
你可以尝试将那些二进制代码转换成OLE对象。
你下载失败有可能是没有读取到相关文件,或没有下载的权限。
添加后缀名应该不是为了防止中文乱码。你可以尝试添加如下代码来防止。
context.Response.Charset = "GB2312";
context.Response.ContentEncoding = System.Text.Encoding.UTF8;
希望对你有所帮助。
- 已标记为答案 BoberSongModerator 2010年9月10日 7:26
- 取消答案标记 刘阿斗 2010年9月16日 1:14
- 已标记为答案 刘阿斗 2010年9月16日 1:14
全部回复
-
你好:
你可以尝试将那些二进制代码转换成OLE对象。
你下载失败有可能是没有读取到相关文件,或没有下载的权限。
添加后缀名应该不是为了防止中文乱码。你可以尝试添加如下代码来防止。
context.Response.Charset = "GB2312";
context.Response.ContentEncoding = System.Text.Encoding.UTF8;
希望对你有所帮助。
- 已标记为答案 BoberSongModerator 2010年9月10日 7:26
- 取消答案标记 刘阿斗 2010年9月16日 1:14
- 已标记为答案 刘阿斗 2010年9月16日 1:14