나는 처음으로 나는 나의 테이블 (기록 없음)을 조회하고 Datable를 얻는 것과 같이 백만개의 기록이있는 것을 능가한다. 별칭을 사용하여 Excel 시트에서 정의한 것과 같이 열 이름을 가져 오기 위해 테이블을 쿼리합니다. 이 같은 내 데이터 테이블 외모헤더가있는 데이터 테이블에 Excel의 데이터를 삽입하는 방법은 무엇입니까?
var dal = new clsConn();
var sqlQuery = "SELECT FETAPE_THEIR_TRANDATE \"Date\" ,ISSUER Issuer, ISSU_BRAN Branch , STAN_NUMB STAN, TERMID TermID, ACQUIRER Acquirer,DEBIT_AMOUNT Debit,CREDIT_AMOUNT Credit,CARD_NUMB \"Card Number\" , DESCRIPTION Description FROM ALLTRANSACTIONS";
var returntable = dal.ReadData(sqlQuery);
DataRow ds = returntable.NewRow();
var dtExcelData = returntable;
는
그럼 난 엑셀 시트에서 레코드를 읽을OleDbConnection con = null;
if (ext == ".xls")
{
con = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + filepath + ";Extended Properties=Excel 8.0;");
}
else if (ext == ".xlsx")
{
con = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + filepath + ";Extended Properties=\"Excel 12.0;IMEX=2;HDR=NO;TypeGuessRows=0;ImportMixedTypes=Text\"");
}
con.Open();
dt = con.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);
string getExcelSheetName = dt.Rows[0]["Table_Name"].ToString();
//OleDbCommand ExcelCommand = new OleDbCommand(@"SELECT * FROM [" + getExcelSheetName + @"]", con);
OleDbCommand ExcelCommand = new OleDbCommand("SELECT F1, F2, F3, F4, F5,F6,F7,F8,F9,F10 FROM [Sheet1$]", con);
OleDbDataAdapter ExcelAdapter = new OleDbDataAdapter(ExcelCommand);
try
{
ExcelAdapter.Fill(dtExcelData); //Here I give the datatable which i made previously
}
catch (Exception ex)
{
//lblAlert2.CssClass = "message-error";
//lblAlert2.Text = ex.Message;
}
성공적으로 읽고 데이터 테이블에 데이터를 입력하지만, 자신의 열을 생성 F1에서 F10과 같은 데이터 테이블에서 데이터 테이블의 정의 된 열과 정확하게 일치하도록이 데이터를 이동할 수 있습니까
어떻게 어떤 해결 방법은 감지 할 수있을 것입니다 다른 열 (F1, f2..f10) 을 만들거나 내가 뭘 잘못 설명하고 내가 이것을 달성 할 수있는 방법 제발하지 않도록이를 관리하게됩니다.
UPDATE : 내 엑셀 파일이
어떻게 탁월 해 보이나요? 그 스냅 샷이 도움이 될 것입니다. – Spidey
왜 'SELECT1, F2, F3, F4, F5, F6, F7, F8, F9, F10 FROM [Sheet1 $]'을 사용하고 '[Sheet1 $]'에서 '* 선택하지 않습니까? – Spidey
두 가지 쿼리를 시도했습니다. 둘 다 같은 결과를 나타냅니다. –