엑셀 C 번호에 데이터를 저장

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에서 사진 가로 채기

 

추천

출처www.cnblogs.com/andy-2014/p/11320527.html