求asp.net读取word内容代码

gs8716 2010-06-11 03:06:28
读取出内容是没有问题的,但是现在显示时全部连在一起,密密麻麻地,没有换行符等。
查看了web页面的源代码,里面的文字格式和word里类似,虽没有换行符但是不是密密麻麻的,就像用了<pre>一样的。
怎么修改才能显示的和word一样的格式呢?
我的想法是读取时把word里的回车符换成<br/>标签,或者以html的格式读取出来。
下面是我的代码:(如果你的代码不能满足功能就不用麻烦你粘了)

Word.ApplicationClass wordApp = new Microsoft.Office.Interop.Word.ApplicationClass();
Word.Document wordDoc = null; //wordApp.ActiveDocument;
Type docstype = wordApp.Documents.GetType();
object filename = Server.MapPath(@"aaa.doc");
wordDoc = (Word.Document)docstype.InvokeMember("Open", System.Reflection.BindingFlags.InvokeMethod, null, wordApp.Documents, new Object[] { filename, true, true });
object unkown = Type.Missing;

Object Nothing = System.Reflection.Missing.Value;
object format = Word.WdOpenFormat.wdOpenFormatDocument;
wordDoc = wordApp.Documents.Open(ref filename, ref unkown, ref unkown, ref unkown, ref unkown, ref unkown, ref unkown,
ref unkown, ref unkown, ref format, ref unkown, ref unkown, ref unkown,
ref unkown, ref unkown, ref unkown);
Response.Write(wordDoc.Content.Text.ToString());
wordDoc.Close(ref Nothing, ref Nothing, ref Nothing);
wordApp.Quit(ref Nothing, ref Nothing, ref Nothing);
...全文
1132 27 打赏 收藏 转发到动态 举报
写回复
用AI写文章
27 条回复
切换为时间正序
请发表友善的回复…
发表回复
Name_456 2011-06-21
  • 打赏
  • 举报
回复
学习了
tyg111 2010-06-13
  • 打赏
  • 举报
回复
关注中
lijun_xiao2009 2010-06-12
  • 打赏
  • 举报
回复
我写了这样一个程序,要的好我给你发过来,QQ号:286455502
yuxh81 2010-06-12
  • 打赏
  • 举报
回复

换个思路:

直接找个(差不多)兼容word格式的编辑器应该就可以了
如:fckeditor
netna 2010-06-12
  • 打赏
  • 举报
回复
[Quote=引用 17 楼 gs8716 的回复:]
保存图片的代码结构是这样的,调试时剪贴板中有内容,我把它粘贴出来是一个没有扩展名的片段,打开后是word里面的那个图片。既然是sel.CopyAsPicture();这句执行了,那么System.Windows.Forms.Clipboard.ContainsImage()这个为什么就是False呢?
[/Quote]

我在做读取EXCEL中的图片也遇到这个问题,求解!!
weiki516 2010-06-12
  • 打赏
  • 举报
回复
(⊙o⊙)… 关注
wdzczy 2010-06-12
  • 打赏
  • 举报
回复
留个记号
gs8716 2010-06-12
  • 打赏
  • 举报
回复

Word.ApplicationClass wordApp = new Microsoft.Office.Interop.Word.ApplicationClass();//创建一个word应用程序
Word.Document wordDoc = null; //创建一个文档对象
wordDoc = wordApp.Documents.Open(……);
……
int i = 0;
foreach (Word.InlineShape ish in wordDoc.InlineShapes)
{
if ((ish.Type == Word.WdInlineShapeType.wdInlineShapePictureBullet) || (ish.Type == Word.WdInlineShapeType.wdInlineShapePicture))//判断类型是否为嵌入式图片或图片占位符
{
ish.Select();//选中图片对象
Word.Selection sel = wordApp.Selection;
if (sel.Type == Word.WdSelectionType.wdSelectionInlineShape)
{
sel.CopyAsPicture();//以图片的方式复制对象
if (System.Windows.Forms.Clipboard.ContainsImage())//判断剪贴板中是否有图片,执行到此处结果为False
{
System.Drawing.Image img = System.Windows.Forms.Clipboard.GetImage();
Bitmap bitmap = new Bitmap(img);
bitmap.Save("c:\\wordimg" + i.ToString() + ".jpg");
i++;
}
}

}//关闭打开的word应用程序有提示,有一幅图片在剪贴板中是否应用到其它程序当中
}


保存图片的代码结构是这样的,调试时剪贴板中有内容,我把它粘贴出来是一个没有扩展名的片段,打开后是word里面的那个图片。既然是sel.CopyAsPicture();这句执行了,那么System.Windows.Forms.Clipboard.ContainsImage()这个为什么就是False呢?
gs8716 2010-06-12
  • 打赏
  • 举报
回复
[Quote=引用 22 楼 lijun_xiao2009 的回复:]
我写了这样一个程序,要的好我给你发过来,QQ号:286455502
[/Quote]

是啊,共享一下。
netna 2010-06-12
  • 打赏
  • 举报
回复
楼上的贴出来共享吧。
wuyq11 2010-06-11
  • 打赏
  • 举报
回复
Word.ApplicationClass wordApp=new ApplicationClass();
object file=path;
object nullobj=System.Reflection.Missing.Value;
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);

doc.ActiveWindow.Selection.WholeStory();
doc.ActiveWindow.Selection.Copy();
IDataObject data=Clipboard.GetDataObject();
string str=data.GetData(DataFormats.Text).ToString();
doc.Close();

换行使用<br>
word中使用\r\n
subxli 2010-06-11
  • 打赏
  • 举报
回复
你可以读到Word的图片,在把这张图片保存到你客户端的一个路径

如此你网页形式显示的话加个IMG标签,再指向图片路径就可以了吧。
subxli 2010-06-11
  • 打赏
  • 举报
回复
如果是图片的话放在网页中显示就必须要一个地址,

可是你Word里的图片有路径吗 ,你读出来也就一乱码。
gs8716 2010-06-11
  • 打赏
  • 举报
回复
有能把这个片段补全的吗?
gs8716 2010-06-11
  • 打赏
  • 举报
回复
获取图片时有一个代码片段参考:

this.OpenFile(@"c:\1.doc",false);
//读取并将图片保存到指定目录中

int i = 0;
foreach (Word.InlineShape ish in MyDoc.InlineShapes)
{
if ((ish.Type == Word.WdInlineShapeType.wdInlineShapeLinkedPicture) || (ish.Type==Word.WdInlineShapeType.wdInlineShapePicture))
{
ish.Select();
MyWordApp.Selection.Copy();
Image image = Clipboard.GetImage();

Bitmap bitmap = new Bitmap(image);
bitmap.Save("c:\\pic" + i.ToString() + ".jpg");
i++;
}
}
长腿爸爸 2010-06-11
  • 打赏
  • 举报
回复
SOAOffice 软件

但属于收费产品,一个序列号2K
长腿爸爸 2010-06-11
  • 打赏
  • 举报
回复
gs8716 2010-06-11
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 subxli 的回复:]
C# code

//需要添加引用,using Microsoft.Office.Interop.Word; 在COM里
//获得word文件的文本内容
public string Doc2Text(string docFileName)
{
//实例化COM
Microsoft.Office.Interop.Word.App……
[/Quote]

感谢你给我提醒一下,要换成doc.Content.Text.Replace("", "").Replace("\r", "<br/>");才行
现在显示是正常的,和word里一样
看多了还把人给看糊涂了,replace就可以解决了。

如果文档里有图片呢?能不能读取显示呢?
马老虎 2010-06-11
  • 打赏
  • 举报
回复
最精看见好多人问 操作 Word的问题了!
gs8716 2010-06-11
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 bersune 的回复:]
C#操作Word还算是比较可以的,但是我不知道你项目背景是什么,你要是可以考虑外购的话,你在网上搜索一下北京科翰,他家专门做Office中间件的,好多的功能已经封装好了。我就用他家的。
也有免费的,但是功能就比较简单,基本原理如下:
1、创建一个固定模板,是dot类型的,在该模板上需要写数据的地方全部做成书签。
2、在页面加载WebOffice那个免费的插件,提供的对象中有用VB写的接口方法……
[/Quote]

感谢你的建议,我下载用过那种组件。不好用,而且是测试还没有成功,说什么返回错误。
我是把一个试卷的Word文档读取出来,然后把读取出来的内容放在编辑器里,可以修改一下然后保存到数据库当中。前台显示时调用数据库当中的文字。现在是显示时全部连在一起,密密麻麻的不好看,想保留word里的格式。
加载更多回复(6)

62,075

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧