私は100個のExcelファイルを持っています。各ファイルで、そこから 1 行を SQL サーバーに挿入する必要があります。これを自動化する必要がありますが、最終的にはアプリのasp.netかExcelマクロかは気にしません。何かアイデアがありましたら、お知らせください。
問題 asp.net 4.0 コマンド ライン アプリ コードを記述したところ、次のエラーが表示されました。「Microsoft.Ace.OleDb.4.0」プロバイダーがローカル コンピューターに登録されていません。
Microsoft Access データベース エンジン 2010 再頒布可能パッケージ ( http://www.microsoft.com/en-us/download/details.aspx?id=13255 ) をインストールした後、ボックスにodbcドライバーがなくなりました。以前と同様に SQL ドライバーのみ。
私のボックスは x64 ですが、x86 オフィスがインストールされているため、x86 用の Microsoft Access データベース エンジン 2010 再頒布可能パッケージをインストールしました。
レジストリも確認しましたが、SQL サーバー ドライバー以外のドライバーは表示されません。
私はいくつかの記事を読みました:
'Microsoft.ACE.OLEDB.12.0' プロバイダーがローカル コンピューターに登録されていません
以下にコードを含めますが、ドライバーを入手するまで違いはないと思います-
public void ImportExcelFilesForPieChart()
{
List<DataTable> listDataTables = new List<DataTable>();
List<CompanyInfo> newlist = new List<CompanyInfo>();
string sheetName = "Output";
string[] fileList = Directory.GetFiles(dropBoxExcelLocation);
foreach (string filename in fileList)
{
DataTable dt = new DataTable();
string connectionString = string.Format("Provider=Microsoft.Ace.OleDb.4.0;data source={0};Extended Properties=Excel 8.0;HDR=No;IMEX=1", dropBoxExcelLocation + filename);
using (OleDbConnection connection = new OleDbConnection(connectionString))
{
string strSQL = String.Format("SELECT 4A, 4B, 4C, 4D, 4E, 4F FROM [{0}$]", sheetName); //[A4:F4]";
OleDbCommand objCmd = new OleDbCommand(strSQL, connection);
connection.Open();
using (OleDbDataAdapter da = new OleDbDataAdapter(strSQL, connection))
{
da.Fill(dt);
listDataTables.Add(dt);
}
}
}
}