使用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 。
设置可以参考下面的网址