使用asp.net开发导出word格式的数据,如果是图片的话,需要先将图片下载到本地,然后从本地添加到word中,要不然你的文档拷贝到不能上网的地方就会出现红叉啊,路径问题。


下载图片到本地
 private string GetFilePath(string filepath)
        {
            string filename = filepath.Trim().Substring(filepath.LastIndexOf("/") + 1);
            string result = string.Empty;
            WebResponse response = null;
            Stream stream = null;
            try
            {
                HttpWebRequest request = (HttpWebRequest)WebRequest.Create(Settings.ImageRemoteDirectory +
                    filepath.Substring(filepath.IndexOf("..") + 2));
                response = request.GetResponse();
                stream = response.GetResponseStream();
                if (!response.ContentType.ToLower().StartsWith("text/"))
                {
                    result = SaveBinaryFile(response, filename);
                }
            }
            catch { }
            return result;
        }
        private string SaveBinaryFile(WebResponse response, string fileName)
        {
            string result = Settings.ImageLocalhostTempSaveDirectory + fileName;
            byte[] buffer = new byte[1024];
            try
            {
                if (File.Exists(result))
                {
                    string name = string.Format("{0}{1}{2}{3}",
                      DateTime.Now.Minute, DateTime.Now.Minute, DateTime.Now.Millisecond, fileName);
                    result = Settings.ImageLocalhostTempSaveDirectory + name;
                }
                Stream outStream = File.Create(result);
                Stream inStream = response.GetResponseStream();
                int i;
                do
                {
                    i = inStream.Read(buffer, 0, buffer.Length);
                    if (i > 0) outStream.Write(buffer, 0, i);
                } while (i > 0);
                outStream.Close();
                inStream.Close();
            }
            catch { }
            return result;
        }

 

添加图片到word
Word11.InlineShape inlineShape= wordTable.Cell(i, selectedColsIndex.IndexOf(j)+1).Range.InlineShapes.AddPicture(filepath  , ref _missing, ref _missing,
                            ref _missing);
                           
                            inlineShape.Width = 61;
                            inlineShape.Height = 80;
  还有啊,需要设置服务器的DCOM,是的网络用户有权限启动word程序才可以,否则会出错,类似:

  检索 COM 类工厂中 CLSID 为 {000209FF-0000-0000-C000-000000000046} 的组件时失败,原因是出现以下错误: 80070005

  检索 COM 类工厂中 CLSID 为 {000209FF-0000-0000-C000-000000000046} 的组件时失败,原因是出现以下错误: 8000401a 。
  设置可以参考下面的网址