0

Excelファイルを作成して連続的に書きたいと思います。以下にコーディングする必要がありますが、継続的に取得するすべてのデータを追加したいと考えています。

コード:

        Excel.Application xlApp ;
        Excel.Workbook xlWorkBook ;
        Excel.Worksheet xlWorkSheet ;
        object misValue = System.Reflection.Missing.Value;

        xlApp = new Excel.Application();
        xlWorkBook = xlApp.Workbooks.Add(misValue);

        xlWorkSheet = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(1);
        xlWorkSheet.Cells[1, 1] = "http://csharp.net-informations.com";

        xlWorkBook.SaveAs("csharp-Excel.xls", Excel.XlFileFormat.xlWorkbookNormal, misValue, misValue, misValue, misValue, Excel.XlSaveAsAccessMode.xlExclusive, misValue, misValue, misValue, misValue, misValue);
        xlWorkBook.Close(true, misValue, misValue);
        //xlApp.Quit();

        releaseObject(xlWorkSheet);
        releaseObject(xlWorkBook);
        releaseObject(xlApp);

        MessageBox.Show("Excel file created , you can find the file c:\\csharp-Excel.xls");
    }

    private void releaseObject(object obj)
    {
        try
        {
            System.Runtime.InteropServices.Marshal.ReleaseComObject(obj);
            obj = null;
        }
        catch (Exception ex)
        {
            obj = null;
            MessageBox.Show("Exception Occured while releasing object " +     ex.ToString());
        }
        finally
        {
            GC.Collect();
        }
    }

このコードでは、アプリケーションを起動すると、常に置き換えますかというメッセージが表示され、プログラムがデータを取得すると常にアプリケーションが閉じます。

これは私が欲しい機能です: ここのようにファイルを追加したいです。

    StreamWriter fileWriter = new StreamWriter("test.txt", true);
    fileWriter.WriteLine(jointHead.Position.X);       
    fileWriter.Close();

この種の問題の解決策は何ですか?ありがとうございました...

4

3 に答える 3

0

ファイルを追加するには、次のコードを挿入します。

using(StreamWriter fileWriter = new StreamWriter(@"c:\test.txt", true))
{
    fileWriter.WriteLine("test");
}

そうしないと、ファイルに書き込む前にファイルを閉じるため、ファイルに何も書き込まれません。これにより、ファイルが追加され、ストリームが正しい方法で閉じられます。

これは、 linq to sql に関するチュートリアルへのリンクです。これは、データの保存と読み込みのための最高の解決策を見つけるのに役立つかもしれません

于 2012-02-14T14:08:10.957 に答える
0

Excel ファイルはバイナリであるため、Excel ファイルに連続して書き込むことはあまり意味がありません。

私が提案できる最善の解決策は、CSV ファイルを作成し、代わりに継続的に書き込むことです。Excel ファイルとは異なり、CSV ファイルは単純なテキスト ストリームとして扱うことができ、Excel でネイティブに開くことができます。

于 2012-02-14T14:09:13.057 に答える
0

ところで-あなたの MessageBox.Show("Exception...") はデバッグ目的でprollyであることを知っています。それを最終的なアプリに残したままにしないでください。代わりに、「重要な」列挙型が添付された何らかの種類のログ機能を考えてください。

それ以外に、他のスケーラブルなストレージ メディアではなく Excel ファイルが使用されている理由を尋ねたくなるでしょう。結局のところ、データベースに保存し、必要に応じてクエリを実行し、フィルタリングされたコンテンツを含む Excel ファイルを提示できます。そうすれば、一般的な releaseObject() try{}/catch{} 以外のエラー処理では対応していない、Excel の最大行数を超えるリスクを回避できます。

ちょうど私のスコットランドのベルトとブレースの態度:)

于 2012-02-14T14:26:03.237 に答える