데이터베이스로 EXCEL 테이블 데이터 가져오기
4501 단어 C#
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.OleDb;
using System.Data.SqlClient;
using System.IO;
using System.Linq;
using System.Text;
namespace ConsoleApplication11
{
class Program
{
static void Main(string[] args)
{
DataSet ds = CreateTables(@"Z:\C\2016 .xls");
foreach (DataTable table in ds.Tables)
{
PopulateData(table);
}
PressQToExist();
}
private static void PopulateData(DataTable dt)
{
string connStr = "Data Source=.; initial catalog =test; integrated security=true; ";
using (SqlConnection conn = new SqlConnection(connStr))
{
conn.Open();
foreach (DataRow row in dt.Rows)
{
SqlCommand sqlCmd = conn.CreateCommand();
StringBuilder cmd = new StringBuilder();
cmd.Append(string.Format(" INSERT INTO {0} ",dt.TableName));
cmd.Append(" VALUES ");
cmd.Append(" ( ");
int paramIndex = 0;
foreach (DataColumn col in dt.Columns)
{
string columnValue = row[col.ColumnName].ToString();
cmd.Append(string.Format("@param{0},",paramIndex));
sqlCmd.Parameters.Add(new SqlParameter(string.Format("@param{0}", paramIndex++), columnValue));
}
string cmd_temp = cmd.ToString().TrimEnd(',');
string cmd_final = cmd_temp + " ) ";
sqlCmd.CommandText = cmd_final;
sqlCmd.ExecuteNonQuery();
}
}
}
public static DataSet CreateTables(string Path)
{
string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=" + Path + ";" + "Extended Properties=Excel 8.0;";
OleDbConnection conn = new OleDbConnection(strConn);
conn.Open();
string strExcel = "";
OleDbDataAdapter myCommand = null;
DataSet ds = null;
DataTable excelSchema = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);
List tableName = new List();
foreach (DataRow row in excelSchema.Rows)
{
string tempTableName = row["TABLE_NAME"].ToString();
if (tempTableName.EndsWith("$"))
{
tableName.Add(tempTableName.TrimEnd('$'));
}
}
ds = new DataSet();
foreach (string tn in tableName)
{
strExcel = string.Format("select * from [{0}$]",tn);
myCommand = new OleDbDataAdapter(strExcel, strConn);
myCommand.Fill(ds, tn);
}
foreach(DataTable dt in ds.Tables)
{
CreateTable(dt);
}
return ds;
}
public static void CreateTable(DataTable dt)
{
StringBuilder cmd = new StringBuilder();
cmd.Append(string.Format("CREATE TABLE [dbo].[{0}]", dt.TableName));
cmd.Append("(");
foreach (DataColumn col in dt.Columns)
{
cmd.Append(string.Format("[{0}] [nvarchar](256) NOT NULL,", col.ColumnName));
}
string cmd_final = cmd.ToString().TrimEnd(',') + ")";
string connStr = "Data Source=.; initial catalog =test; integrated security=true; ";
using(SqlConnection conn = new SqlConnection(connStr))
{
conn.Open();
SqlCommand sqlCmd = conn.CreateCommand();
sqlCmd.CommandText = cmd_final;
sqlCmd.ExecuteNonQuery();
}
}
static void PressQToExist()
{
Console.WriteLine("Press Q to exist.");
ConsoleKey key;
do
{
key = Console.ReadKey().Key;
} while (key != ConsoleKey.Q);
}
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
WebView2를 Visual Studio 2017 Express에서 사용할 수 있을 때까지Evergreen .Net Framework SDK 4.8 VisualStudio2017에서 NuGet을 사용하기 때문에 패키지 관리 방법을 packages.config 대신 PackageReference를 사용해야...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.