Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用C#和VB.Net将Excel电子表格数据导入ASP.Net中的SQL Server_C#_Asp.net_Excel - Fatal编程技术网

使用C#和VB.Net将Excel电子表格数据导入ASP.Net中的SQL Server

使用C#和VB.Net将Excel电子表格数据导入ASP.Net中的SQL Server,c#,asp.net,excel,C#,Asp.net,Excel,我有这段代码,我正试图使用ASP.net将数据从Excel文件导入SQL server,但它抛出了一个错误,我不知道为什么? 编译时,它表示连接字符串属性尚未初始化。谢谢你的帮助 protected void LoadFile(object sender, EventArgs e) { { //Upload and save the file string excelPath = Path.GetFileName(File

我有这段代码,我正试图使用ASP.net将数据从Excel文件导入SQL server,但它抛出了一个错误,我不知道为什么? 编译时,它表示连接字符串属性尚未初始化。谢谢你的帮助

protected void LoadFile(object sender, EventArgs e)
    {
        {
            //Upload and save the file
            string excelPath =  Path.GetFileName(FileUpload1.PostedFile.FileName);


            string conString = string.Empty;
            string extension = Path.GetExtension(FileUpload1.PostedFile.FileName);
            switch (extension)
            {
                case ".xls": //Excel 97-03
                    conString = ("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + path + "; Extended Properties=\"Excel 8.0;HDR=Yes;IMEX=2\"");
                    break;
                case ".xlsx": //Excel 07 or higher
                    conString = (@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + path + "; Extended Properties='Excel 12.0;HDR=YES;IMEX=1;';");
                    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]["toll"].ToString();


                DataTable dtExcelData = new DataTable();


                dtExcelData.Columns.AddRange(new DataColumn[4] { 
            new DataColumn("Tag", typeof(string)),
            new DataColumn("Exit",typeof(string)),
            new DataColumn("Location",typeof(string)),
            new DataColumn("Amount",typeof(decimal)) });

                using (OleDbDataAdapter oda = new OleDbDataAdapter("SELECT * FROM [" + sheet1 + "]", excel_con))
                {

                    oda.Fill(dtExcelData);
                }
                excel_con.Close();


                using (SqlConnection con = new SqlConnection(ConString))
                {
                    using (SqlBulkCopy sqlBulkCopy = new SqlBulkCopy(con))
                    {
                        //Set the database table name
                        sqlBulkCopy.DestinationTableName = "MY Table";

                        //[OPTIONAL]: Map the Excel columns with that of the database table
                        sqlBulkCopy.ColumnMappings.Add("Amount", "Amount");
                        sqlBulkCopy.ColumnMappings.Add("Tag", "Tag");
                        sqlBulkCopy.ColumnMappings.Add("Exit", "Exit");
                        sqlBulkCopy.ColumnMappings.Add("Exit", "Exit");
                        con.Open();
                        sqlBulkCopy.WriteToServer(dtExcelData);
                        con.Close();
                    }
                }

只是猜测而已。似乎您正在设置
扩展
上的switch语句中的
收缩
。您确定某个
case
子句被击中了吗?它可能找不到任何匹配项,并且由于没有默认值,因此将保持为空。您可能需要检查switch语句后的
分析
。是。处理默认情况。excel文件也可以具有xlsm扩展名(启用宏)。如果文件名为空或无扩展名,您仍然可以通过
PostedFile.ContentType
(mime类型)来决定。但是请稍候:什么是
路径
?它必须是字符串文字“{0}”,才能使
string.Format(consting,excelPath)
工作。。。在尝试打开之前,是否确实将上载的文件保留到服务器上的物理路径这是服务器端代码。感谢您的帮助,需要先将文件保存到服务器,文件名为
string excelpath=server.MapPath(“~/Files/”)+Path.GetFileName(FileUpload1.PostedFile.FileName);FileUpload1.SaveAs(excelpath)当我尝试将文件上载到SQL时,它会通过,但会插入空值,有没有建议为什么不在我正在上载的excel文件中插入值?只是猜测而已。似乎您正在设置
扩展
上的switch语句中的
收缩
。您确定某个
case
子句被击中了吗?它可能找不到任何匹配项,并且由于没有默认值,因此将保持为空。您可能需要检查switch语句后的
分析
。是。处理默认情况。excel文件也可以具有xlsm扩展名(启用宏)。如果文件名为空或无扩展名,您仍然可以通过
PostedFile.ContentType
(mime类型)来决定。但是请稍候:什么是
路径
?它必须是字符串文字“{0}”,才能使
string.Format(consting,excelPath)
工作。。。在尝试打开之前,是否确实将上载的文件保留到服务器上的物理路径这是服务器端代码。感谢您的帮助,需要先将文件保存到服务器,文件名为
string excelpath=server.MapPath(“~/Files/”)+Path.GetFileName(FileUpload1.PostedFile.FileName);FileUpload1.SaveAs(excelpath)
当我尝试将文件上载到SQL时,它会通过,但会插入空值,有没有建议为什么不在我正在上载的excel文件中插入值?