这是用C#做的,我在本地进行调试的时候,读取word文档到textbox都没有问题,然而设置好IIS后,进行访问后,就不能读取word文档。代码如下:
sql = "select SendFileAtt from SendFile where SendFileNum='" + row.Cells[2].Text + "'";
sqlcmd = new SqlCommand(sql, sqlcon);
sqldr = sqlcmd.ExecuteReader();
sqldr.Read();
String name = sqldr["SendFileAtt"].ToString();//读取存储在数据库中附件的名字
String[] tempt = name.Split('.');
foreach (String i in tempt)
{
if (i.ToString() == "doc")//程序执行到这里的时候,拆分的字符是空值,没法进行下一步。
{
Microsoft.Office.Interop.Word._Application wordapp = new Microsoft.Office.Interop.Word.Application();
wordapp.Visible = false;
object file = "http://172.21.180.32/SF/" + name; //SF是IIS的虚拟目录
object nullobj = System.Reflection.Missing.Value;
Microsoft.Office.Interop.Word.Document doc = wordapp.Documents.Open(ref file, ref nullobj, ref nullobj, ref nullobj, ref nullobj, ref nullobj, ref nullobj, ref nullobj, ref nullobj, ref nullobj, ref nullobj, ref nullobj, ref nullobj, ref nullobj, ref nullobj, ref nullobj);
AttTextBox.Visible = true;
AttTextBox.Text = doc.Content.Text;
doc.Close(ref nullobj, ref nullobj, ref nullobj);
wordapp.Quit(ref nullobj, ref nullobj, ref nullobj);
sqlcon.Close();
}
}
sql = "select SendFileAtt from SendFile where SendFileNum='" + row.Cells[2].Text + "'";
sqlcmd = new SqlCommand(sql, sqlcon);
sqldr = sqlcmd.ExecuteReader();
sqldr.Read();
String name = sqldr["SendFileAtt"].ToString();//读取存储在数据库中附件的名字
String[] tempt = name.Split('.');
foreach (String i in tempt)
{
if (i.ToString() == "doc")//程序执行到这里的时候,拆分的字符是空值,没法进行下一步。
{
Microsoft.Office.Interop.Word._Application wordapp = new Microsoft.Office.Interop.Word.Application();
wordapp.Visible = false;
object file = "http://172.21.180.32/SF/" + name; //SF是IIS的虚拟目录
object nullobj = System.Reflection.Missing.Value;
Microsoft.Office.Interop.Word.Document doc = wordapp.Documents.Open(ref file, ref nullobj, ref nullobj, ref nullobj, ref nullobj, ref nullobj, ref nullobj, ref nullobj, ref nullobj, ref nullobj, ref nullobj, ref nullobj, ref nullobj, ref nullobj, ref nullobj, ref nullobj);
AttTextBox.Visible = true;
AttTextBox.Text = doc.Content.Text;
doc.Close(ref nullobj, ref nullobj, ref nullobj);
wordapp.Quit(ref nullobj, ref nullobj, ref nullobj);
sqlcon.Close();
}
}
解决方案 »
- 怎么去掉C# Listview控件的分组线?
- WinFrom问题,关于调整分辩率
- DataGridViewCheckBoxColumn全选问题 得分好贴!
- 紧急!!偶写了一个c#正则表达式判断语句,不知道为什么不对,高手快进,在线等!!
- 关于dropdownlist的小问题
- 求sql语句:这样的思路怎么实现?在线等侯回音!
- 在.net中如何实现给定文件名返回其完整路径
- string.Format("{0:F2}",Arear)什么意思?
- WinForm程序与XML Web service的问题。高人请指教!
- 请问c#是解释性语言还是编译性语言?
- WinForm 多线程间 简单的信息显示 (200分)
- c#异步操作的问题
{
String name = sqldr["SendFileAtt"].ToString();//这一句,看看到底有没有取得信息到name里面。
}
else
{
//没有取得需要处理。
}String[] tempt = name.Split('.'); foreach (String i in tempt)
{
if (i.ToString().ToLower() == "doc")//要注意大小写
}
sqldr.Close();//需要显示关闭datareader对象。极有可能你根本就没有取出东西来。
-------------------------------------------
◆◆◆大师电吉他基础 视频教程◆◆◆
-------------------------------------------
String name这个应该定义在if else 体外面。
应该是这样:String name = String.Emptyif(sqldr.Read())
{
name = sqldr["SendFileAtt"].ToString();//这一句,看看到底有没有取得信息到name里面。
}
else
{
//没有取得需要处理。
} String[] tempt = name.Split('.'); foreach (String i in tempt)
{
if (i.ToString().ToLower() == "doc")//要注意大小写
}
sqldr.Close();//需要显示关闭datareader对象。
试试看
我在web.config中配置了<identity personate="true">后,内容都显示不出来。所以我想请教,对于这个应该怎么配置