C #을 Excel로 데이터를 저장하는 경우, 필요가 원본 데이터 형식을 유지하기보다는 단순히 디지털 텍스트로 데이터를 저장합니다.
SaveByOLEDB (DataTable의 DT, 문자열 경로) 부울 공공 정적 { 부울 성공 = 진정한; 문자열 connStr = "제공자 = Microsoft.Jet.OleDb.4.0;" "; 속성 = 엑셀 8.0 확장;"+ "데이터 원본 ="+ 경로 + //仅支持2003格式的엑셀 되어 OleDbConnection CONN = 새로운되어 OleDbConnection (connStr); 에서 OleDbCommand cmd를 새에서 OleDbCommand = (); cmd.Connection = CONN; cmd.CommandType = CommandType.Text; 시도 { conn.Open를 (); 문자열 cmdText = "테이블 시트 1을 (만들기"] 에 대해 INT (I = 0; I <dt.Columns.Count은, 내가 ++) { 문자열 COLUMNNAME dt.Columns = [I] .ColumnName; cmdText + = ""+ COLUMNNAME; 문자열 유형 이름 = GetExcelMapDataType (dt.Columns [I ] .DataType.Name); cmdText + = ""+ 유형 이름; 경우 (I == dt.Columns.Count - 1) { cmdText + = ")"; } 다른 { cmdText + = ""; } } cmd.CommandText = cmdText; cmd.ExecuteNonQuery (); 대해 INT (I = 0; i가 dt.Rows.Count를 <; 내가 ++) { cmdText가 = "시트 1 값 (내로 삽입", 대 (INT의 J = 0; J <dt.Columns.Count, J ++) { 문자열 COLUMNNAME = DT .Columns [J] .ColumnName; cmdText + = "@"+ COLUMNNAME; cmd.Parameters.AddWithValue ( "@"+ COLUMNNAME, dt.Rows [I] [COLUMNNAME]); 만약 (j == dt.Columns.Count - 1) pm.ParameterName = "@"+ COLUMNNAME; pm.OleDbType = OleDbType.Date; pm.Value는 = DT. } 다른 { cmdText + = ""; } } 에 cmd = 새에서 OleDbCommand (cmdText 코네티컷); 대 (INT의 J = 0; J <dt.Columns.Count, J ++) { 문자열 COLUMNNAME = dt.Columns [J] .ColumnName; 문자열 columnType = dt.Columns [J] .DataType.Name; 경우 (columnType.ToLower () == "날짜") { OleDbParameter의 PM = 새로운 OleDbParameter (); cmd.Parameters.Add (오후); 잇다; } cmdText + = "@"+ COLUMNNAME; cmd.Parameters.AddWithValue ( "@"+ COLUMNNAME, dt.Rows [I] [COLUMNNAME]); } cmd.ExecuteNonQuery (); } } 캐치 (예외 예) { } 마지막으로 { conn.Close (); conn.Dispose (); } 성공을 반환; }
OLEDB 호환 가능한 데이터 유형에 대한 요구의 특별한 유형.
정적 스트링 GetExcelMapDataType (문자열 데이터 유형) { 문자열 결과 = dataType와; 스위치 (dataType.ToLower ()) { 경우 "INT" 케이스 "INT32" 결과 = "INTEGER"; 단절; 경우 "날짜" 결과 = "DATE"; 단절; 케이스 "부울" 결과 = "비트"; 단절; 기본값 : 휴식; } 반환 결과; }
엑셀 데이터 형식의 첨부 파일
변환시 OLEDB는 중간층 C #의 데이터 유형 및 데이터 유형 맵핑 엑셀로서 실현하지만, 데이터 타입으로 C # 1 OLEDB 데이터 유형은 여기 자체 프로세싱을 필요로한다.
HTTPS : //www.promotic.eu/en/pmdoc/Subsystems/Db/Excel/DataTypes.htm에서 사진 가로 채기