将 excel 文件保存在应用程序文件夹中,并使用 Windows 窗体和 C# 将内容上载到 SQL Server

本文关键字:窗体 Server SQL 上载 Windows 存在 保存 文件 excel 应用程序 文件夹 | 更新日期: 2023-09-27 17:56:25

我正在开发一个简单的应用程序,该应用程序需要浏览一个 excel 文件并将其上传到 SQL Server,并将该文件复制到应用程序文件夹。通过使用下面的代码,我可以在网络中做到这一点。但是在winforms中没有替代FileUpload工具。下面是我尝试在 Windows 窗体中复制的代码。

protected void Upload(object sender, EventArgs e)
{
    //Upload and save the file
    string excelPath = Server.MapPath("~/Files/") + Path.GetFileName(FileUpload1.PostedFile.FileName);
    FileUpload1.SaveAs(excelPath);
    string conString = string.Empty;
    string extension = Path.GetExtension(FileUpload1.PostedFile.FileName);
    switch (extension)
    {
        case ".xls": //Excel 97-03
            conString = ConfigurationManager.ConnectionStrings["Excel03ConString"].ConnectionString;
            break;
        case ".xlsx": //Excel 07 or higher
            conString = ConfigurationManager.ConnectionStrings["Excel07+ConString"].ConnectionString;
            break;
    }
    conString = string.Format(conString, excelPath);
    using (OleDbConnection excel_con = new OleDbConnection(conString))
    {
        excel_con.Open();
        string sheet1 = excel_con.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null).Rows[0]["TABLE_NAME"].ToString();
        DataTable dtExcelData = new DataTable();
        dtExcelData.Columns.AddRange(new DataColumn[3] { new DataColumn("Id", typeof(int)),
            new DataColumn("Name", typeof(string)),
            new DataColumn("Salary",typeof(decimal)) });
        using (OleDbDataAdapter oda = new OleDbDataAdapter("SELECT * FROM [" + sheet1 + "]", excel_con))
        {
            oda.Fill(dtExcelData);
        }
        excel_con.Close();
        string consString = ConfigurationManager.ConnectionStrings["constr"].ConnectionString;
        using (SqlConnection con = new SqlConnection(consString))
        {
            using (SqlBulkCopy sqlBulkCopy = new SqlBulkCopy(con))
            {
                //Set the database table name
                sqlBulkCopy.DestinationTableName = "dbo.tblPersons";
                sqlBulkCopy.ColumnMappings.Add("Id", "PersonId");
                sqlBulkCopy.ColumnMappings.Add("Name", "Name");
                sqlBulkCopy.ColumnMappings.Add("Salary", "Salary");
                con.Open();
                sqlBulkCopy.WriteToServer(dtExcelData);
                con.Close();
            }
        }
    }
}

将 excel 文件保存在应用程序文件夹中,并使用 Windows 窗体和 C# 将内容上载到 SQL Server

WinForm 中 FileUpload 的替代品是 OpenFileDialog:

string excelPath = "";
using(OpenFileDialog ofd = new OpenFileDialog())
{
  ofd.Filter = "Excel(.xls)|*.xls|Excel(.xlsx)|*.xlsx|All Files (*.*)|*.*";
  ofd.Multiselect = false;
  var result = ofd.ShowDialog();
  if (result == DialogResult.OK)
  {
    excelPath = ofd.FileName;
  }
}
//... continue with your sql code

上传到sql服务器的代码仍然相同,您也可以在winform中使用它。从上面的示例中,"excelPath"在我的示例"ofd"中。文件名"