0

こんにちは、列の更新を行うために Excel ファイルに接続する必要があります。このコードがあります。

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Excel = Microsoft.Office.Interop.Excel;

namespace Excel
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void btnUpdate_Click(object sender, EventArgs e)
        {
            try
            {
                System.Data.OleDb.OleDbConnection MyConnection;
                System.Data.OleDb.OleDbCommand myCommand = new System.Data.OleDb.OleDbCommand();
                string sql = null;                
                MyConnection = new System.Data.OleDb.OleDbConnection("provider=Microsoft.Jet.OLEDB.4.0;Data Source='c:\farm.xls';Extended Properties=Excel 8.0;");
                MyConnection.Open();
                myCommand.Connection = MyConnection;
                sql = "Update [Sheet1$] set name = 'FARM GDL' where COMERCIO like 'FARM GUADALAJARA'";
                myCommand.CommandText = sql;
                myCommand.ExecuteNonQuery();
                MyConnection.Close();
                MessageBox.Show("Success");
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString());
            }
        }
    }
}

しかし、何かが機能していません。実行すると接続が開きます

できます???お願いします、ありがとう!

4

1 に答える 1

3

上記の接続文字列で発見されたいくつかのエラー:

接続文字列を次のように変更します。

MyConnection = new System.Data.OleDb.OleDbConnection("provider=Microsoft.Jet.OLEDB.4.0;Data Source='c:\\farm.xls';'Extended Properties=Excel 8.0;HDR=YES'"); 
  1. \ 文字には特別な意味があり、パス文字列で二重にするか、@ で始まる文字列全体にする必要があります。
  2. Excel ファイルの最初の行にヘッダーがある場合は、接続文字列 HDR=YES; に追加する必要があります。
  3. 拡張プロパティは一重引用符で囲む必要があります

Excel ファイルの最初の行にヘッダーがない場合、列名としてnameandを使用できないため、クエリ全体が変更されます。COMERCIO代わりに、文字 F の後に列番号を使用する必要があります ( as set F1 = 'FARM GDL' where F2 like '...')

于 2012-04-20T23:05:22.800 に答える