2012-02-14 11 views
0

Excelファイルを作成して連続して書きたいと思います。私は以下のコードを書かなければならないが、私が連続的に取得するすべてのデータを追加したい。Excelファイルに連続的に書き込むにはどうすればよいですか?

CODE:このコードで

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

? は、このコードINSEADファイルの使用を追加するには...

+6

私は、CSVとしてExcelと互換性のある形式であるテキストファイルを書き込み、継続的にそれに追加検討するブレース。あなたはおそらくそれをはるかに迅速かつ簡単に見つけるでしょう。 –

+0

btw - 私はあなたのMessageBox.Show( "Exception ...")がデバッグ目的のために多量であることを知っています。あなたの最終的なアプリでその場所に残さないようにして、代わりに重要度の高い列挙型を使用して、ある種のログ機能を考えてください。それ以外の理由で、私は他のスケーラブルな記憶媒体ではなく、なぜExcelファイルが使われているのか聞いてみたいと思います。あなたは結局、dbに照会して、必要なところで内容のExcelファイルを提示することができます。答えとして追加されました –

+0

私は60列と400行のデータを持っているので、それで私はExcelを使いたいのです。私はテーブル、行、列を作成したくありませんでした...まずはtxtファイルを試しました。それは完全にそれを追加します。しかし、あなたが多くのデータを持っているなら、それは乱雑に見えます。それらの間でいくつかのデータを選択することは困難です。だから私はexcel.Itを使用したかったのですが、すでに列と行があります。私はテーブルを作成する必要はありませんでした。この目的のために何か解決策がありますか? – Samet

答えて

0

ありがとう:

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

あなたはそれを閉じるので、それはそれに書かれている前に、それ以外の場合は、ファイルには何も書き込みません。これによりファイルが追加され、正しい方法でストリームが閉じられます。

Hereは、linq to sqlのチュートリアルへのリンクです。これは、データの保存と読み込みのための神の解決策を見つけるのに役立ちます。

+0

私はアイデアを見せたかったので、私は初めに異なったsthを使います。私は60列と約400行のデータを持っています。なぜ私はテキストファイルを使いたくないのですか?行と列のソリトンはありますか? – Samet

+0

前と同じように。私はおそらくデータベースのテーブルと一緒にそれを保存します。変更シートをExcelシートに表示する必要がある場合は、データベースから読み込んでExcelドキュメントに表示するだけです。 – Arion

+0

リンクやデータベーステーブルのサンプルコードを教えてもらえますか?私は今までデータベーステーブルについて何もしていません。また、Excelに掲載する必要はありません。テーブルに表示するのは私の考えでした。非常に多くのデータがあるからです。ちなみに、私はデータベースからデータを取得していませんが、これはマウスや他の邪魔者の位置です。 – Samet

0

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

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

+0

私は60列と約400行のデータを持っています...だからこそ私はExcelを使いたいと思っています。私はテーブルを作成したくない...この目的のための解決策はありますか? – Samet

0

btw - 私はあなたのMessageBox.Show( "Exception ...")がデバッグ目的のために多用されていることを知っています。あなたの最終的なアプリでその場所に残さないようにして、代わりに重要度の高い列挙型を使用して、ある種のログ機能を考えてください。

それ以外の場合は、他のスケーラブルな記憶媒体ではなく、なぜエクセルファイルが使用されているのか尋ねたくなるでしょう。あなたは結局、dbに保存し、必要に応じてクエリを実行し、フィルタリングされたコンテンツをExcelファイルで表示することができます。その方法では、一般的なreleaseObject()try {}/catch {}以外の、エラー処理の対象とならないExcelの最大行数を超えるリスクはありません。

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

関連する問題