2009-04-16 14 views
5

Excelシート部分(シート全体ではない)をC#言語のユーザーコントロールに埋め込む必要があります。そして私はその上のデータを操作してコレクションに保存したいと思います。C#ユーザーコントロールにExcelシートを埋め込む

どうすればいいですか?

+0

データを表形式で表示するだけで済みますか、実際にはExcelレンダリングエンジンが必要ですか? Excelファイルを読み込んでDataGridViewに表示するだけです。そうでなければ、あなたはいくつかのOLE/COMのものをやる必要があります(私が推測する) –

+0

Excelシートが必要な場合は、WinFormにWebBrowserコントロールを置き、コンテンツタイプをExcelドキュメントとして読み込むオプションがあります。 – jgallant

+0

新しいオプションは2009年以降に登場しましたか? – PPC

答えて

6

Excel COMライブラリを使用してスプレッドシートを開きます。 Microsoft Excel Object Libraryへの参照を追加すると、Comインターフェイスにアクセスできます。

は、これらのusingステートメントを追加します。
using Microsoft.Office.Interop; 
using Microsoft.Office.Interop.Excel; 

は、その後、あなたはこのような何かを行うことにより、スプレッドシートから読み取ることができます。

private void GetData(string fileName, string tabName) 
    { 
     Workbook theWorkbook; 

     Application ExcelObj = null; 
     ExcelObj = new Application(); 

     theWorkbook = ExcelObj.Workbooks.Open(fileName, 
      Type.Missing, Type.Missing, Type.Missing, Type.Missing, 
      Type.Missing, Type.Missing, Type.Missing, Type.Missing, 
      Type.Missing, Type.Missing, Type.Missing, Type.Missing, 
      Type.Missing, Type.Missing); 


     Sheets sheets = theWorkbook.Worksheets; 
     Worksheet worksheet = (Worksheet)sheets[tabName]; 

     Range range = worksheet.get_Range("A1:A1", Type.Missing); 

     string data = range.Text as string; 

     // 
     // TODO : store the data 
     // 

     theWorkbook.Close(false, fileName, null); 
    } 

このコードは、文字列にA1セルの内容を読んでいました。

Excel COMインターフェイスで動作することの1つは、1つのセルだけが必要な場合でも、範囲内のデータにアクセスする必要があることです。範囲をセルのグループに設定し、各セルの内容を取得するために返すコレクションを反復処理できます。

また、ファイル名とタブ名にいくつかのエラーチェック/処理を追加することもできます。

Excelを読み込むためにODBCを使用する方法もありますが、スプレッドシートは特定の方法でフォーマットする必要があります。行1にヘッダーデータがある必要があります。私はCOMインターフェイスを使用する方が簡単だとわかりました。

必要なデータを取得したら、それを型指定されたデータセットに入れることができます。 WPFでWinFormsまたはListBoxを使用している場合は、そのデータセットをDataGridViewにバインドできます。データをXML形式で保存するだけの場合は、DataSet WriteXml関数を使用してデータをファイルに保存できます。

+0

あなたが答えに投票していない場合、その理由を説明してください。 – epotter

5

DataGridViewに変更したいデータを入力してみませんか?

変更が完了したら、元に戻したExcelファイルの部分にDataGridViewのデータを保存します。

theselinksusefulもあります。

0

Microsoft.Office.Interop.Excelライブラリを参照してください。ファイルや操作をExcelで操作するには、そこに多くのExcelコントロールがあります。

関連する問題