0

辞書 (キー、値のペア) を Excel ファイルに書き込む必要があります。私は使用Interop.Excelしてみましたが、次のように書いていました:

try
{
    string file =@”D:\Someexcel.xls”
    Interop.Excel.Application excelApp = new Interop.Excel.Application();
    excelApp.Visible = true;
    Interop.Excel.Workbook wb = excelApp.Workbooks.Open(file, 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);
    Interop.Excel.Worksheet ws = wb.ActiveSheet as Interop.Excel.Worksheet;
    Interop.Excel.Range rng = ws.get_Range("A1", Type.Missing);

    //Write Key, Value as header
    ws.Cells[1, 1] = "Key";
    ws.Cells[1, 2] = “Value”;

    int row = 2; // Initialize for keys.
    foreach (string key in dict.Keys)
    {
        int column = 1; // Initialize for values in key.
        ws.Cells[row, column] = key;
        column++;
        ws.Cells[row, column] = dict[key];
        row++;
    }

    if (ws != null)
        Marshal.ReleaseComObject(ws);
    if (wb != null)
        Marshal.ReleaseComObject(wb);
    if (excelApp != null)
        Marshal.ReleaseComObject(excelApp);
    DialogResult result = MessageBox.Show(string.Format("Excel file created , you can find the file @" + file));
    if (result == DialogResult.OK)
        this.Close();
}
catch (Exception err)
{
    string msg;
    msg = "Error:";
    msg = string.Concat(msg, err.Message);
    msg = string.Concat(msg, "Line:");
    msg = string.Concat(msg, err.Source);
    MessageBox.Show(msg);
}

しかし、このコードは、Excel ファイルがサーバーの場所で破損しているとは言っていない場合よりも頻繁に壊れているようです。というわけで、OLEDBで試してみたいと思います。私はOLEDBが初めてです。インターネットでどこでも検索しましたが、辞書の書き方に関する情報はありません。Insertコマンドで私を助けてくれませんか?

4

1 に答える 1

0

Excelへの書き込みについては、この例を確認してください。
http://www.codeproject.com/Articles/8500/Reading-and-Writing-Excel-using-OLEDB
OLEDB は ADO.NET に似ておりSqlDataAdapter、INSERT コマンドと UPDATE コマンドを指定し、a を使用しDataTableて挿入または更新できます。ディクショナリの場合、似たようなことを行い、Key、Value を DataColumns として作成し、エントリを行として追加します。
確認済みですが、OledbCommand を INSERT および UPDATE として実行し、非クエリとして実行することもできます。お役に立てれば。

于 2013-03-15T11:16:25.363 に答える