데이터를 작업하고 내보낼 수 있도록 Excel 프로그램을 프로그램에 가져 오려고합니다. OleDB를 사용하여 액세스 파일에 액세스하고 그것을 볼 수 있고 winform에서 사용할 수 있도록 데이터 테이블에 전달하려고합니다. 나는 OleDBAdapter (데이터 어댑터)와 데이터 테이블을 채우기 위해 노력하고 때Excel을 Datagrid로 가져 오기
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을 요청하는 예외가 발생합니다. 이 문제를 어떻게 해결할 수 있습니까? 또는 나는 무엇인가 놓치고 있냐?
미리 감사드립니다.