在我的应用程序中,我想读取文档文件(.doc或.odt或.docx)并将该文本存储在字符串中。为此,我使用下面的代码:
string text;
using (var streamReader = new StreamReader(@"D:\Sample\Demo.docx", System.Text.Encoding.UTF8))
{
text = streamReader.ReadToEnd();
}
但我无法阅读或复制正确的文字,因为它显示如下:
PK ! x% E [Content_Types] .xml ( IO0HWp @ 5rJqvIj /ۿ克%j)的P.ytfN&安培; QY 0 T9 w, L!jk gs @ л 0! Bp Y VJ t + N Kk Z'(Y / IX | / FL骐^ w ^ $¹ZIho|?btŔr+ W6V 7 *宽$}ëDΧriq = , Fݜ t 5+ Z( ? a z i [!0 k ,}O Ta \ m? i | ж AT SB ;'m; y \9 “La o % @k8 ?,Fc hL_\ 9I ! = m TT |P ̩}} $ | = | } PK
如何从文档文件中读取或复制文本?
答案 0 :(得分:1)
为此您需要使用不同的库
使用Microsoft.Office.Interop.Word
using System;
using Microsoft.Office.Interop.Word;
class Program
{
static void Main()
{
// Open a doc file.
Application application = new Application();
Document document = application.Documents.Open("C:\\word.doc");
// Loop through all words in the document.
int count = document.Words.Count;
for (int i = 1; i <= count; i++)
{
// Write the word.
string text = document.Words[i].Text;
Console.WriteLine("Word {0} = {1}", i, text);
}
// Close word.
application.Quit();
}
}
答案 1 :(得分:0)
Microsoft DocX-Format是一个容器,不会以简单明文(您的StreamReader
尝试阅读的文本)保存数据。
您应该考虑使用类似以下内容的第三方库:https://docx.codeplex.com/
答案 2 :(得分:0)
Microsoft.Office.Interop.Word对于大型文档非常慢。所以我建议使用OpenXml。对于使用OpenXml,您应该安装它。
使用软件包管理器安装:
Install-Package DocumentFormat.OpenXml-版本2.8.1
2。使用OpenWordprocessingDocumentReadonly函数:
using DocumentFormat.OpenXml.Packaging;
using DocumentFormat.OpenXml.Wordprocessing;
namespace Readdocx
{
class Program
{
static void Main(string[] args)
{
string mytext = OpenWordprocessingDocumentReadonly("mytext.docx");
}
public static string OpenWordprocessingDocumentReadonly(string filepath)
{
// Open a WordprocessingDocument based on a filepath.
using (WordprocessingDocument wordDocument =
WordprocessingDocument.Open(filepath, false))
{
// Assign a reference to the existing document body.
Body body = wordDocument.MainDocumentPart.Document.Body;
//text of Docx file
return body.InnerText.ToString();
}
return "-1";
}
}
}