2

Excelシートをデータベースにインポートする簡単なプログラムの作成に取り組んでいますが、次のエラーが発生しています。

インストール可能なISAMが見つかりませんでした

これが何を意味するのかわかりません。何時間にもわたってさまざまなトピックを検索した後、私はSOに目を向けました。JetとACEについては多くの話がありますが、違いはわかりませんが、ここに要約があります。testまたはtest1というExcelファイルがあり、ファイルの最初のシートをインポートしたいだけです。これが私のこれまでのソースコードです:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Data.OleDb;
using System.Data.Common;
using System.Data.SqlClient;

namespace WindowsFormsApplication2
{

    public partial class Form1 : Form
    {
        string filePath = null;
        public Form1()
        {
            InitializeComponent();
        }

        //Method to check database connection
        private void button1_Click(object sender, EventArgs e)
        {
            string connetionString = null;
            SqlConnection cnn;
            connetionString = "Data Source=Zach-PC;Initial Catalog=master;Integrated Security=SSPI;";
            cnn = new SqlConnection(connetionString);
            try
            {
                cnn.Open();
                MessageBox.Show("Connection Open ! ");
                cnn.Close();
            }
            catch (Exception ex)
            {
                MessageBox.Show("Can not open connection ! ");
            }
        }

        //Method to select a file
        private void button2_Click(object sender, EventArgs e)
        {
            string excelConnectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:/Users/Zach/Documents/test1.xls;Extended Properties=Excel 12.0,HDR=Yes;IMEX=1";


            // Create Connection to Excel Workbook
            using (OleDbConnection connection =
                         new OleDbConnection(excelConnectionString))
            {
                OleDbCommand command = new OleDbCommand
                        ("Select * FROM [Sheet1$]", connection);

                connection.Open(); //HERE IS WHERE THE ERROR IS

                // Create DbDataReader to Data Worksheet
                using (DbDataReader dr = command.ExecuteReader())
                {
                    // SQL Server Connection String
                    string sqlConnectionString = "Data Source=Zach-PC;Initial Catalog=master;Integrated Security=True";

                    // Bulk Copy to SQL Server
                    using (SqlBulkCopy bulkCopy =
                               new SqlBulkCopy(sqlConnectionString))
                    {
                        bulkCopy.DestinationTableName = "Table";
                        bulkCopy.WriteToServer(dr);
                        MessageBox.Show("Data Exoprted To Sql Server Succefully");
                    }
                }

            }
        }
    }
}

私は正しいマナーでこれに近づいていますか?

4

3 に答える 3

4

Extended Properties接続文字列の一部を引用符で囲む必要があります。

//                                                                                                                                 here                     and here
//  -->                                                                                                                              v                          v
string excelConnectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:/Users/Zach/Documents/test1.xls;Extended Properties=""Excel 12.0,HDR=Yes;IMEX=1""";
于 2013-03-10T22:26:21.120 に答える
0

Office 2007(またはそれ以降)のExcelファイルを読んでいる場合は、オープンソースライブラリのEpplusを使用してExcelファイルを読むことをお勧めします。これは純粋に.NETライブラリであり、oledbドライバーに依存することはありません。

epplus

EPPlusは、Open Office Xml形式(xlsx)を使用してExcel2007/2010ファイルを読み書きする.netライブラリです。

このライブラリを使用すると、Excelファイルをデータテーブルに簡単に読み込むことができます。このスレッドを見てください

ストリームExcelファイルをデータテーブルC#に変換するにはどうすればよいですか?

于 2013-03-10T22:11:16.230 に答える
0

Office oledb ドライバーがコンピューターにインストールされていない可能性があります。Microsoft の Web サイトからダウンロードする必要があります。インストール後、コードが実行されるはずです。

于 2013-03-10T21:27:23.197 に答える