データを処理してエクスポートするために、Excelファイルをプログラムにインポートしようとしています。私はOleDBを使ってアクセスファイルにアクセスし、それを表示してwinformで作業できるように、データテーブルに渡そうとしています。ここで私が使用しているコードは次のとおりです。私はOleDBAdapter(のDataAdapter)とのdataTableを埋めるためにしようとしていたときにExcelをデータグリッドにインポートする
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Data;
using System.Data.SqlClient;
using System.Data.OleDb;
using System.Windows;
using System.Windows.Forms;
using System.Globalization;
using System.Runtime.Versioning;
using System.Threading;
namespace DataImportServices
{
public class ExcelImport : IDataImport
{
public DataTable ImportData(OpenFileDialog openFile)
{
var dataTable = new DataTable();
string query;
var hasHeaders = false;
var HDR = hasHeaders ? "Yes" : "No";
string connectionString;
if (openFile.FileName.Substring(openFile.FileName.LastIndexOf(".")).ToLower() == ".xlsx")
{
connectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + openFile.FileName + ";Extended Properties=\"Excel 12.0;HDR=" + HDR + ";IMEX=0\"";
}
else
{
connectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + openFile.FileName + ";Extended Properties=\"Excel 8.0;HDR=" + HDR + ";IMEX=0\"";
}
using (OleDbConnection cn = new OleDbConnection(connectionString))
{
cn.Open();
DataTable schemaTable = cn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, new object[] { null, null, null, "TABLE" });
DataRow schemaRow = schemaTable.Rows[0];
string sheet = schemaRow["TABLE_NAME"].ToString();
if (!sheet.EndsWith("_"))
{
query = "SELECT * FROM [" + openFile.FileName + "]";
using (OleDbDataAdapter dataAdapter = new OleDbDataAdapter(query, cn))
{
dataTable.Locale = CultureInfo.CurrentCulture;
dataAdapter.Fill(dataTable); //The error occurs here with a "" is not an acceptable. If I put a name ie "Data" it says its not an adorecord.
}
}
}
return (dataTable);
}
}
}
私が負う午前エラーです。 DataTableだけのオーバーライドを持っているにもかかわらず、ADODBrecordsetを要求する例外がスローされます。これを回避するにはどうしたらいいですか?または私は何かを逃していますか?
ありがとうございます。