2012-01-13 8 views
1

私はこの拡張機能の一部としてInteropアセンブリを使用しているオフィスの拡張機能に取り組んでいます。私が構築しているexeの主な目的は、PPTXスライドを個々のイメージとしてエクスポートすることです。C#SteamWriter:複数のテキストファイルを作成してそれらに書き込む方法は?

また、各スライドに情報を含むテキストファイルを作成したいと考えています。私はスライドをエクスポートすることができます。私はまた1つのテキストファイルを作成しますが、何も書き込まれません。各ファイルは、それらがパワーポイントでインデックス化されているので...私は申し訳ありませんが、私は失われていますよ

class { 
static void ConvertAndExportImagesAndTextFiles(ARGS){ 

//Some stuff that reads and prepares the slides for the export method 
//Loops and exports several "objSlide" after taking args 

    foreach (Microsoft.Office.Interop.PowerPoint.Slide objSlide 
             in objActivePresentation.Slides) 
{ 
i++; 

string PathAndNumber = string.Concat(FilePath, i); 
string PathAndNumberWithExt = string.Concat(PathAndNumber, ".txt"); 

FileStream fs = new FileStream(

        PathAndNumberWithExt , 

        FileMode.OpenOrCreate, 

         FileAccess.ReadWrite); 

       StreamWriter sw = new StreamWriter(fs); 
       try 
       { 
        sw.WriteLine("Howdy World."); 
       } 
       finally 
       { 
       ????????? 
       } 

    objSlide.Export(FilePath, format, res, res); 

    } 

... 1.TXT、2.txtとしてスライドのエクスポートをエクスポートし、しかし、私は何かをincmntする必要が行う必要がありますここに?

+0

ありがとうございました:) –

答えて

2

FileStreamとStreamWriterをusing句に入れてください。問題はあなたの書き込みがバッファされており、Close(またはusing)を呼び出すまで、そのバッファはメモリ内に残り、書き出されません。

​​3210

コメンターが指摘したように、しかし、あなたは速記を使用することがあります:あなたは答えを試み、それが「受け入れられる」として、あなたがそれをマークすることができ、あなたのために働いた場合は使用して

using (var sw = File.CreateText(...)) 
{ 
    sw.WriteLine("Howdy World."); 
} 
+1

Flushは強制的にファイルに書き出します。 –

+0

'File.CreateText(...)' – SLaks

+0

@Bradそうですが、これは 'using'句をスキップする正当な理由ではありません。 –

関連する問題