最近被一个问题困扰,找不到解决办法,只能求助于网上的大虾。
      c#窗体程序,按一下按钮自动读取选定文件夹下的word文档,读取里面的数据,word里面的内容很丰富,有字,有图片,表格等。。 里面只有一种规律:
   标题:………………
   正文:…………图片or表格…………  (……代表字)
 现在我要做的效果是,读取word里面的标题和正文,然后存入数据库。然后再读取出来,将它显示到两个textbox中。
      现在面临的问题有如下几点:
 1.读取的正文没有规律,如果将东西写入数据库后,读出来的数据是不是想word那样排版的一样,该换行的换行。
 2.读出数据要考虑数据库中正文字段有图片。并且图片是夹在文字中间,而非在开头或者结尾。
 3.由于数据量比较的大,要考虑读取的速度。   再这里先谢谢各位

解决方案 »

  1.   

    弄成HTML格式吧..操作WORD很累的
      

  2.   

    Word生成Rtf文件,然后使用RichTextBox1.Rtf = 读取的Rtf文本,是否可以。 
      

  3.   

    首先你如果想保留格式  textbox肯定不行的  他的内容是无格式的
    用richtextbox  就像6#说的方法  可以试试不过好像不能显示图片你可以尝试用第三方的editor控件至于保留格式  word好像能导出web版式 能够保留格式  你可以看下相关资料
      

  4.   

    是一个类似Word文档的窥探器的意思吗?就是提取并显示Word文档的一部分,就象是图片的缩略图一样。我没太看明白你表达的意思,见谅。1. Word文档存入数据库不是难点。对应varbinary类型,用Stream即可。
    2. TextBox无法显示图片。
      

  5.   

    直接嵌一个word的OLE对象用以显示word有格式的内容,然后把word文件以二进制一股脑存进数据库,标题可以提出来以无格式文本单独保存一个字段,如果有需要可以把word的纯文本内容提取保存以备检索之用
      

  6.   

    这是不是个思路:word的东西全选copy到剪贴板,再贴到记事本,图片之类的都没了就剩下文字。如果word里面看到的换行只是word的排班处理结果,并没有换行符,我想你读取出来肯定是没换行的。
      

  7.   


      谢谢你的回答。。  并不是您说的那个意思呢! 这么着把! 我把问题再简化一点,我事先做了一个文本读取内容的东西,后来,到了后面,发现有的内容里面有图片,txt文本不能存储图片,所以我做的那个东西就报废了,以前听人家讲过,用c#可以读取word内容,我现在的要求是,从word中读取数据和图片存入数据库中,很蛋疼,我实现了存图片的那个方法,但并不是从word中读取,而是自己手动选,又因为需求的原因,存取图片要用image类型,而文字是nvarchar类型,两者有一种插不进! 很蛋疼, 有人推荐我用ckedit试试,但这个第三方软件不支持winfrom了!   等待此时此刻的贵人出现! 呵呵
      

  8.   


    我越来越糊涂了,呵呵。你是不是想把Word文档存入数据库,然后需要的时候从数据库取出Word文档,再完整地显示在你的程序里?
      

  9.   

    不管是神马玩意,图片数字还是其他的,一股脑用2进制流存进数据库不就好了?显示的时候用word的东西显示。
      

  10.   

    以下几个步骤仅供参考:1、根据你的规律从原始Word文档中找到要读取的内容。
    2、将这段内容用以编程的方式复制到一个新建的文档中。
    3、然后把这个新建的文档保存为RTF格式,并关闭此文档。
    4、因为RTF是文本格式,因此可以用StreamReader读取RTF文件的所有内容,然后存到数据库中。
    5、显示的时候,在窗体上放一个RichTextBox,然后把从数据库里读出来的RTV文本放进去。
      

  11.   

    太可怕,我在一个新建的Word文档里写了3行字,然后加了一个图片,就是我的头像,然后存为RTF格式,竟然有235KB这么大。看来RTF并不可取,呵呵。
      

  12.   


       谢谢你这么有建设性的回答,呵呵,因为这是一个可以解决的办法,只是没有效率而已,我已经想好办法了,反正录入的时候是工作人员录入,所以不讲究美观,我搞一个专门存图片的函数,文字也是,将读出来的文本和图片进行拆分,然后依次存储,记住,数据库中存这些内容的字段的类型用nvarchar(max),现将存储图片的代码贴出来分享,读取还在进一步开发中!
     openFileDialog1.ShowDialog();
     textBox1.Text = openFileDialog1.FileName;
     FileStream fs = new FileStream(textBox1.Text,FileMode.Open,FileAccess.Read);
                byte[] bt = new byte[fs.Length];
                fs.Read(bt, 0, bt.Length);
                fs.Close();            string sq1 = "insert into pictureDB values(@myimage," + bt.Length + ")";
                SqlCommand com = new SqlCommand(sq1, Dbhelp.con);
                SqlParameter p1 = new SqlParameter("@myimage", bt);
                com.Parameters.Add(p1);            Dbhelp.con.Open();            int i=(int)com.ExecuteNonQuery();
                 if (i > 0)
                     MessageBox.Show("添加成功!");
                 else
                     MessageBox.Show("添加失败!");