2009-08-21 8 views
0

私はasp.net 2.0アプリを持っています。ファイルをアップロードして行を読み込んでテキストボックスに表示しようとしています。これは、.txtファイルで問題なく動作します。しかし、もし私がdocという単語を書くと、テキストを覆い隠すあらゆる種類のジバリッシュ(xmlベースの書式のように見える)が得られます。ここに私のコードは...StreamReaderを使用してWord文書を読むにはどうすればよいですか?

Dim s As New StringBuilder 
    Dim rdr As StreamReader 

    If FileUpload1.HasFile Then 

     rdr = New StreamReader(FileUpload1.FileContent) 

     Do Until rdr.EndOfStream 
      s.Append(rdr.ReadLine() & ControlChars.NewLine) 
     Loop 

     TextBox1.Text = s.toString() 

    End If 

答えて

1

StreamReaderはWord形式のファイルをサポートしていません。それは文字列を読み込むだけです。特定のWord対応ライブラリを使用する必要があります。これは簡単な問題ではありません。Word文書のどの部分を平文に変換するかは必ずしも明確ではありません。

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(); 

    txtFileContent.Text=data.GetData(DataFormats.Text).ToString(); 

    doc.Close(); 

あなたのために働くことがあり、この下の私のコメントで述べたように:

0

あなたは別のドナーからConsiderations for server-side Automation of Office

解放さをお読みくださいしかし「Word.ApplicationClass」クラス

を使用することができますellとして: http://npoi.codeplex.com/

+0

-1:これはASP.NETアプリケーションのようなサーバーアプリケーションでは非常に悪い考えです。これはサポートされておらず、ライセンスに影響を及ぼしており、非常にしばしばデバッグが困難な予測できない方法で失敗します。最善の策は、サーバーアプリケーションでは実行しないことです。 –

+0

私はこれが最良の解決策ではなく、ロックを引き起こす可能性があることに同意します。推奨されていませんが、正常に実行された場合にも機能します。彼のシナリオで試してみる価値がある。 別のオプションもあります: http://npoi.codeplex.com/ – Jay

+0

+1:Johnが言っていることは絶対に真ですが、私のフォームアプリケーションでは完全に動作します。 – ajdams

1

しかし、もし私が単語の文書をすると、私はすべての種類のジバリッシュ(XMLベースの書式のように見える)テキストをsurroudning得る。

これは、Word文書ファイルにそのXMLベースの書式が含まれているためです。ダムテキストリーダー(たとえば、Notepad.exe、またはコマンドラインのtypeなど)を使用すると、ファイル内の内容を確認することができます。

周囲の書式からテキストを抽出するには、ドキュメントをプレーンテキスト形式で保存または取得するために、ソフトウェア(Word自体、winword.exeなど)を使用する必要があります。

+0

97形式のWord文書を想像してみてください。 Sweet dreams;) – Kawa

+1

97スタイルのWord文書は "XMLベースの書式設定"を持たないが、COMオートメーションをサポートしています(文書をテキストとして保存するために自動化することができます)。 – ChrisW

関連する問題