使用C#和VB.Net将Excel电子表格数据导入ASP.Net中的SQL Server
我有这段代码,我正试图使用ASP.net将数据从Excel文件导入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
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文件中插入值?