C#を使用してWord文書を読み込もうとしています。私はすべてのテキストを取得できますが、行ごとおよびリストに保存してグリッドビューにバインドを読みたいです。現在、私のコードは、すべてのテキストを含む1つのアイテムのリストを返します(必要な行ごとではありません)。 Microsoft.Office.Interop.Wordライブラリを使用してファイルを読み取ります。以下はこれまでの私のコードです:
Application Word = new Application();
Document doc = new Document();
object fileName = path;
// Define an object to pass to the API for missing parameters
object missing = System.Type.Missing;
doc = Word.Documents.Open(ref fileName,
ref missing, ref missing, ref missing, ref missing,
ref missing, ref missing, ref missing, ref missing,
ref missing, ref missing, ref missing, ref missing,
ref missing, ref missing, ref missing);
String read = string.Empty;
List<string> data = new List<string>();
foreach (Range tmpRange in doc.StoryRanges)
{
//read += tmpRange.Text + "<br>";
data.Add(tmpRange.Text);
}
((_Document)doc).Close();
((_Application)Word).Quit();
GridView1.DataSource = data;
GridView1.DataBind();
OK。私は解決策を見つけました こちら 。
最終的なコードは次のとおりです。
Application Word = new Application();
Document doc = new Document();
object fileName = path;
// Define an object to pass to the API for missing parameters
object missing = System.Type.Missing;
doc = Word.Documents.Open(ref fileName,
ref missing, ref missing, ref missing, ref missing,
ref missing, ref missing, ref missing, ref missing,
ref missing, ref missing, ref missing, ref missing,
ref missing, ref missing, ref missing);
String read = string.Empty;
List<string> data = new List<string>();
for (int i = 0; i < doc.Paragraphs.Count; i++)
{
string temp = doc.Paragraphs[i + 1].Range.Text.Trim();
if (temp != string.Empty)
data.Add(temp);
}
((_Document)doc).Close();
((_Application)Word).Quit();
GridView1.DataSource = data;
GridView1.DataBind();
上記のコードは正しいですが、遅すぎます。コードを改善しましたが、上記のコードよりもはるかに高速です。
List<string> data = new List<string>();
Application app = new Application();
Document doc = app.Documents.Open(ref readFromPath);
foreach (Paragraph objParagraph in doc.Paragraphs)
data.Add(objParagraph.Range.Text.Trim());
((_Document)doc).Close();
((_Application)app).Quit();
これはどう?ドキュメントからすべての単語を取得し、戻り値またはあなたにとってより良いものに分割します。次にリストに変換します
List<string> lines = doc.Content.Text.Split('\n').ToList();