【问题标题】:how to import excel to sql unknown data如何将excel导入sql未知数据
【发布时间】:2013-12-14 10:34:30
【问题描述】:

如何将未知数据从excel记录导入SQL Server

我有一个基于 C# Web 的项目,用户必须上传一个 Excel 表格,我需要将该 Excel 表格中的数据存储到 SQL Server。

有一条说明用户记录是未知的,请告诉我如何将这些未知记录导入 SQL。

通过这种方式,我可以捕获记录并将它们显示到 GridView 中。我也需要将它们存储到 SQL 中。

    protected void btnUpload_Click(object sender, EventArgs e)
{
    if (FileUpload1.HasFile)
    {
        string FileName = Path.GetFileName(FileUpload1.PostedFile.FileName);
        string Extension = Path.GetExtension(FileUpload1.PostedFile.FileName);
        string FolderPath = ConfigurationManager.AppSettings["FolderPath"];

        string FilePath = Server.MapPath(FolderPath + FileName);
        FileUpload1.SaveAs(FilePath);
        Import_To_Grid(FilePath, Extension, rbHDR.SelectedItem.Text);
    }
}

private void Import_To_Grid(string FilePath, string Extension, string isHDR)
{
    string conStr = "";
    switch (Extension)
    {
        case ".xls": //Excel 97-03
            conStr = ConfigurationManager.ConnectionStrings["Excel03ConString"].ConnectionString;
            break;
        case ".xlsx": //Excel 07
            conStr = ConfigurationManager.ConnectionStrings["Excel07ConString"].ConnectionString;
            break;
    }
    conStr = String.Format(conStr, FilePath, isHDR);
    OleDbConnection connExcel = new OleDbConnection(conStr);
    OleDbCommand cmdExcel = new OleDbCommand();
    OleDbDataAdapter oda = new OleDbDataAdapter();
    DataTable dt = new DataTable();
    cmdExcel.Connection = connExcel;

    //Get the name of First Sheet
    connExcel.Open();
    DataTable dtExcelSchema;
    dtExcelSchema = connExcel.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);
    string SheetName = dtExcelSchema.Rows[0]["TABLE_NAME"].ToString();
    connExcel.Close();

    //Read Data from First Sheet
    connExcel.Open();
    cmdExcel.CommandText = "SELECT * From [" + SheetName + "]";
    oda.SelectCommand = cmdExcel;
    oda.Fill(dt);
    connExcel.Close();

    //Bind Data to GridView
    GridView1.Caption = Path.GetFileName(FilePath);
    GridView1.DataSource = dt;
    GridView1.DataBind();
}

【问题讨论】:

    标签: c# sql .net sql-server excel


    【解决方案1】:

    您可以使用SqlBulkCopy.WriteToServer 方法将其导入 SQL Server。

    【讨论】:

      猜你喜欢
      • 2023-04-02
      • 2018-04-07
      • 2011-09-26
      • 1970-01-01
      • 2022-11-08
      • 2020-02-27
      • 2015-01-02
      • 1970-01-01
      相关资源
      最近更新 更多