존재하는 excel 파일에 데이터 가져오기
- CRUD
-
- using System;
- using System.Collections;
- using System.Collections.Generic;
- using System.Text;
- using System.Data;
- using System.Data.OleDb;
-
-
- namespace myexcel{
- public class DbExcel
- {
-
- /// <summary>
- ///
- /// </summary>
- /// <param name="phyfilepath"></param>
- /// <returns></returns>
- private static string GetOptionConnstr(string phyfilepath)
- {
- string endstr = phyfilepath.Substring(phyfilepath.IndexOf('.') + 1);
- if (endstr.ToLower() == "xlsx")
- {
- return "Provider=Microsoft.ACE.OleDb.12.0;Extended Properties=\"Excel 12.0;HDR=no;\";Data Source=" + phyfilepath;
- }
-
- return "Provider=Microsoft.Jet.OLEDB.4.0;Extended Properties=\"Excel 8.0;HDR=no;\";Data Source=" + phyfilepath;
- }
-
-
- /// <summary>
- ///
- /// </summary>
- /// <param name="phyfilepath"></param>
- /// <returns></returns>
- private static string GetReadConnStr(string phyfilepath)
- {
- string endstr = phyfilepath.Substring(phyfilepath.IndexOf('.') + 1);
- if (endstr.ToLower() == "xlsx")
- {
- return "Provider=Microsoft.ACE.OleDb.12.0;Extended Properties=\"Excel 12.0;HDR=yes;IMEX=1\";Data Source="+phyfilepath;
- }
-
- return "Provider=Microsoft.Jet." +
- "OLEDB.4.0;Extended Properties=\"Excel 8.0;HDR=Yes;IMEX=1\";Data Source="+phyfilepath;
- }
-
-
- public static DataTable GetExcelDataTable(string phyfilepath)
- {
- OleDbConnection conn = null;
- string sheetName = "Sheet1";
- DataTable dataTable = null;
-
- try
- {
- using (conn = new OleDbConnection(GetReadConnStr(phyfilepath)))
- {
- conn.Open();
- DataTable sheetNames = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);
-
- foreach (DataRow dr in sheetNames.Rows)
- {
- sheetName = dr[2].ToString().Trim();
- break;
- }
- OleDbDataAdapter oada = new OleDbDataAdapter("select * from [" + sheetName + "]", conn);
- DataSet ds = new DataSet();
- oada.Fill(ds, "InitData");
-
- dataTable = ds.Tables["InitData"];
- }
- }
- catch (Exception ex)
- {
- throw new BaseDBException(ex.Message);
- }
- finally
- {
- conn.Close();
- }
-
- return dataTable;
- }
-
- public static DataTable GetExcelSheetTable(string phyfilepath)
- {
- OleDbConnection conn = null;
- string sheetName = "Sheet1$";
- DataTable dataTable = null;
-
- try
- {
- using (conn = new OleDbConnection(GetReadConnStr(phyfilepath)))
- {
- conn.Open();
- OleDbDataAdapter oada = new OleDbDataAdapter("select * from [" + sheetName + "]", conn);
- DataSet ds = new DataSet();
- oada.Fill(ds, "InitData");
-
- dataTable = ds.Tables["InitData"];
- }
- }
- catch (Exception ex)
- {
- throw new BaseDBException(ex.Message);
- //return null;
-
- }
- finally
- {
- conn.Close();
- }
-
- return dataTable;
- }
-
- public static DataTable GetExcelSheetTable(string phyfilepath,string SheetName)
- {
- OleDbConnection conn = null;
- string sheetName = SheetName;
- DataTable dataTable = null;
-
- try
- {
- using (conn = new OleDbConnection(GetReadConnStr(phyfilepath)))
- {
- conn.Open();
- DataTable sheetNames = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);
-
-
- OleDbDataAdapter oada = new OleDbDataAdapter("select * from [" + sheetName + "]", conn);
- DataSet ds = new DataSet();
- oada.Fill(ds, "InitData");
-
- dataTable = ds.Tables["InitData"];
- }
- }
- catch (Exception ex)
- {
- throw new BaseDBException(ex.Message);
- }
- finally
- {
- conn.Close();
- }
-
- return dataTable;
- }
-
- public static void ExcelColDataUpdate(string phyfilepath, string sheetName,string setvalue,string where)
- {
- OleDbConnection conn = null;
- try
- {
- using (conn = new OleDbConnection(GetOptionConnstr(phyfilepath)))
- {
- conn.Open();
- OleDbCommand cmd = new OleDbCommand();
- cmd.CommandType = CommandType.Text;
-
- cmd.CommandText = "UPDATE ["+sheetName+"$] "+setvalue+" "+where;
- cmd.Connection = conn;
- cmd.ExecuteNonQuery();
-
- }
- }
- catch (Exception ex)
- {
- throw new BaseDBException(ex.Message);
- }
- finally
- {
- conn.Close();
- }
-
-
- }
-
- public static void ExcelColDataInsert(string phyfilepath, string sheetName, string columnNames, string values)
- {
- OleDbConnection conn = null;
- try
- {
- using (conn = new OleDbConnection(GetOptionConnstr(phyfilepath)))
- {
- conn.Open();
- OleDbCommand cmd = new OleDbCommand();
- cmd.CommandType = CommandType.Text;
-
- cmd.CommandText = "insert into [" + sheetName + "$] (" + columnNames + ") values(" + values + ")";
- cmd.Connection = conn;
- cmd.ExecuteNonQuery();
-
- }
- }
- catch (Exception ex)
- {
- throw new BaseDBException(ex.Message);
- }
- finally
- {
- conn.Close();
- }
-
- }
-
- public static void ExcelVoucherDataInsert(string filePath, string sheetName, DataTable dt)
- {
- StringBuilder sb = new StringBuilder();
- if (dt == null || dt.Rows.Count == 0) return;
- try
- {
- using (OleDbConnection conn = new OleDbConnection(GetOptionConnstr(filePath)))
- {
- conn.Open();
- foreach (DataRow row in dt.Rows)
- {
- OleDbCommand cmd = new OleDbCommand();
- cmd.CommandType = CommandType.Text;
- cmd.CommandText = "insert into [" + sheetName + "$] values('" + row["FName"].ToString() + "','" + row["FNo"].ToString() + "','" + row["FIName"].ToString() + "')";
- cmd.Connection = conn;
- cmd.ExecuteNonQuery();
- }
- }
- }
- catch (Exception ex)
- {
- throw new BaseDBException(ex.Message);
- }
- }
-
- public static void ExcelVoucherDataInsert(string filePath, string sheetName, string itemClass , string number , string name)
- {
- try
- {
- using (OleDbConnection conn = new OleDbConnection(GetOptionConnstr(filePath)))
- {
- conn.Open();
- OleDbCommand cmd = new OleDbCommand();
- cmd.CommandType = CommandType.Text;
-
- cmd.CommandText = "insert into [" + sheetName + "$] values('" + itemClass + "','" + number + "','" + name + "')";
- cmd.Connection = conn;
- cmd.ExecuteNonQuery();
- }
- }
- catch(Exception ex)
- {
- throw new BaseDBException(ex.Message);
- }
- }
-
-
- public static void ExcelColDataInsert(string phyfilepath, string sheetName, string columnName, string[] values)
- {
- OleDbConnection conn = null;
- try
- {
- using (conn = new OleDbConnection(GetOptionConnstr(phyfilepath)))
- {
- conn.Open();
- OleDbCommand cmd = new OleDbCommand();
- cmd.CommandType = CommandType.Text;
-
- foreach (string str in values)
- {
- cmd.CommandText = "insert into [" + sheetName + "$] (" + columnName + ") values(' " + str + "')";
- cmd.Connection = conn;
- cmd.ExecuteNonQuery();
- }
- }
- }
- catch (Exception ex)
- {
- throw new BaseDBException(ex.Message);
- }
- finally
- {
- conn.Close();
- }
- }
-
- }
-
- }
excel 파일을 연결하고 조작하는 공통 함수 작성
-
-
- protected void DoOleSql(string sql, string database)
-
- {
-
- OleDbConnection conn = new OleDbConnection();
-
- conn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Server.MapPath("\\") + database + "; Extended Properties='Excel 8.0;HDR=no;IMEX=0'";
-
- try
-
- {//
-
- conn.Open();
-
- }
-
- catch (Exception e)
-
- {
-
- Response.Write(e.ToString());
-
- }
-
- OleDbCommand olecommand = new OleDbCommand(sql, conn);
-
- try
-
- {//
-
- olecommand.ExecuteNonQuery();
-
- }
-
- catch (Exception eee)
-
- {
-
- Response.Write(eee.ToString());
-
- conn.Close();
-
- }
-
- finally
-
- {
-
- conn.Close();//
-
- }
-
- conn.Close();
-
- }
참고: 1) Excel 워크북을 사용할 때 기본적으로 영역의 첫 번째 줄은 제목 줄 (또는 필드 이름) 입니다.첫 번째 영역에 제목이 없으면 연결 문자열의 확장 속성에 HDR=NO를 지정할 수 있습니다.연결 문자열에 HDR=NO를 지정하면 Jet OLE DB 공급자가 자동으로 필드를 지정합니다(F1은 첫 번째 필드를 나타내고 F2는 두 번째 필드를 나타냅니다).2) IMEX=1 읽은 모든 데이터를 문자로 간주하고 다른 값(0, 2)은 관련 도움말 문서를 참조하십시오.3) "설치할 수 있는 isam을 찾을 수 없습니다"오류가 발생하면 연결 문자열 오류 3, excel 파일에서 데이터 읽기string sql = "select * from [sheet1$]"DoOleSql(sql,"test.xls"); 4. excel 파일의 데이터string sql ='update [sheet1$] set FieldName1='333'where FieldName2='b3'를 업데이트합니다.DoOleSql(sql,"test.xls"); 5. excel 파일에 데이터string sql = "insert into [sheet1$](FieldName1, FieldName2,...)values('a','b','...)";DoOleSql(sql,"test.xls"); 6. excel 파일의 데이터 삭제: 이런 방법을 사용하지 않습니다. 7. 비표준 구조의 excel 표에 대해 excel의 sheet의 범위를 지정할 수 있습니다. 1) 데이터 읽기:string sql ="select* from [sheet1$A3:F20]"2) 업데이트 데이터:string sql ='update [sheet1$A9:F15] set FieldName='333'where AnotherFieldName='b3';3) 데이터 삽입:string sql ='insert into [sheet1$A9:F15](FieldName1, FieldName2,...)values('a','b','...)';4) 데이터 삭제: 주: 1) 코드는 필요에 따라 스스로 수정할 수 있다.2) "업데이트할 수 있는 조회를 사용해야 합니다."오류가 발생하면 sql 문장에서 excel 파일의 "필드"인용에 오류가 있거나 excel 파일에 "수정"권한이 없을 수 있습니다.3) "선택한 범위를 확장할 수 없습니다"오류가 발생하면 excel 파일에 인용된'범위'에 오류가 있을 수 있습니다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
PostgreSQL에서 대량 데이터 가져오기 성능을 향상시키는 n가지 방법키워드: 대량 데이터 가져오기, 데이터 로드, 대량 삽입, 가속, 속도 향상 다원화된 선택 시대, 인생에서 많은 것들이 그렇고 모든 일에는 변함없는 방식과 방법이 없다.흰 고양이든 검은 고양이든 쥐를 잡을 수 있는 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.