asp net導入Excel表
阿新 • • 發佈:2019-01-20
saveas 人工智 nec 自己的 remove 數據導入 into mat base
{
InputDataBLL input = new InputDataBLL();
this.Label1.Text = "";
if (this.FileUpload1.HasFile)
{
// string filename = this.FileUpload1.PostedFile.FileName.ToString().Trim();
DataTable inputdt = new DataTable();
int len = this.FileUpload1.FileName.ToString().Trim().Length;
string path = "~/temp/upfile/"+this.FileUpload1 .FileName .ToString ().Trim();
path = Server.MapPath(path);
this.FileUpload1.SaveAs(path); //上傳文件
inputdt = input.InputExcel(path, this.FileUpload1.FileName.ToString().Trim().Substring(0, len - 4),this.TextBox1.Text.Trim ());
if (Session["inputdt"] != null)
Session.Remove( "inputdt");
Session.Add("inputdt", inputdt);
if (inputdt.Rows.Count > 0)
{
this.GridView1.DataSource = inputdt;
this.GridView1.DataBind();
}
}
else
throw new Exception("請選擇導入表的路徑");
}
catch (Exception ex)
{
Response.Write("<script language=‘javascript‘>alert(‘" + ex.Message + "‘);</script>");
}
/// 導入數據到數據集中
/// </summary>
/// <param name="Path"></param>
/// <param name="TableName"></param>
/// <param name="tablename2">如果這個有就以他為表名,沒有的話就以TableName</param>
/// <returns></returns>
public DataTable InputExcel(string Path,string TableName,string tablename2)
{
try
{
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;
if (tablename2.Length > 0 && !tablename2.Equals(string.Empty))
TableName = tablename2;
strExcel = "select * from [" + TableName + "$]";
myCommand = new OleDbDataAdapter(strExcel, strConn);
DataTable dt = new DataTable();
myCommand.Fill(dt);
conn.Close();
return dt;
}
catch (Exception ex)
{
throw new Exception(ex.Message);
}
}
{
new StockBaseBLL().ISUserModel("物料導入", Response, Request, Server);
MaterialBLL material = new MaterialBLL();
foreach (DataRow row in inputdt.Rows)//inputdt為剛剛從函數中返回的數據源
{
float MaterialPrice = 0.0f;
float MaterialTaxPrice = 0.0f;
float TaxRate = 0.0f;
float Moneys = 0.0f;
int temp=0;
if (row["單價"].ToString().Trim() != "")
MaterialPrice = float.Parse(row["單價"].ToString().Trim());
if (row["含稅單價"].ToString().Trim()!="")
MaterialTaxPrice=float.Parse(row["含稅單價"].ToString().Trim());
if (row["稅率"].ToString().Trim()!="")
TaxRate= float.Parse(row["稅率"].ToString().Trim());
if (row["金額"].ToString().Trim()!="")
Moneys=float.Parse(row["金額"].ToString().Trim());
if (material.SelectMaterialsDynamic("MaterialID=‘" + row["物料長代碼"].ToString() + "‘", "").Rows.Count <= 0) //不存在,其實可以不要,因為編號是主鍵,如果相同則插不進去
temp = material.InsertMaterial(row["物料長代碼"].ToString(), row["物料名稱"].ToString(), row["單位"].ToString().Trim(), MaterialPrice, MaterialTaxPrice, TaxRate, Moneys, 0);
else
NotIntoID += row["物料長代碼"].ToString()+",";
if (temp > 0)
index += temp;
temp = 0;
}
}
一、導入Excel的界面
這個界面很簡單,代碼就不列出來了。
二、導入的代碼
我分了兩部分,第一部分是點擊查看數據的代碼,這個是將數據導入到DataTable裏面,但是還沒有導入到數據庫裏。這裏需要註意的是當程序在服務器運行時,要先把導入的文件上傳到服務器上,否則不能導入,會出現莫名奇妙的錯誤,為了改這個錯誤當初弄了好久,希望大家不要走我的彎路啊。如果是在自己的機器上就不用上穿文件。
第二部分是選擇相應的表,然後將數據導入到表裏面,這部分很簡單。
1、
{
InputDataBLL input = new InputDataBLL();
if (this.FileUpload1.HasFile)
{
// string filename = this.FileUpload1.PostedFile.FileName.ToString().Trim();
DataTable inputdt = new DataTable();
int len = this.FileUpload1.FileName.ToString().Trim().Length;
string path = "~/temp/upfile/"+this.FileUpload1 .FileName .ToString ().Trim();
this.FileUpload1.SaveAs(path); //上傳文件
inputdt = input.InputExcel(path, this.FileUpload1.FileName.ToString().Trim().Substring(0, len - 4),this.TextBox1.Text.Trim ());
if (Session["inputdt"] != null)
Session.Remove(
Session.Add("inputdt", inputdt);
if (inputdt.Rows.Count > 0)
{
this.GridView1.DataSource = inputdt;
this.GridView1.DataBind();
}
}
else
throw new Exception("請選擇導入表的路徑");
}
catch (Exception ex)
{
Response.Write("<script language=‘javascript‘>alert(‘" + ex.Message + "‘);</script>");
}
導入的函數
/// 導入數據到數據集中
/// </summary>
/// <param name="Path"></param>
/// <param name="TableName"></param>
/// <param name="tablename2">如果這個有就以他為表名,沒有的話就以TableName</param>
/// <returns></returns>
public DataTable InputExcel(string Path,string TableName,string tablename2)
{
try
{
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;
if (tablename2.Length > 0 && !tablename2.Equals(string.Empty))
TableName = tablename2;
strExcel = "select * from [" + TableName + "$]";
myCommand = new OleDbDataAdapter(strExcel, strConn);
DataTable dt = new DataTable();
myCommand.Fill(dt);
conn.Close();
return dt;
}
catch (Exception ex)
{
throw new Exception(ex.Message);
}
}
二、將數據導入到數據庫裏
這部分其實很簡單,就是插入數據。
{
new StockBaseBLL().ISUserModel("物料導入", Response, Request, Server);
MaterialBLL material = new MaterialBLL();
foreach (DataRow row in inputdt.Rows)//inputdt為剛剛從函數中返回的數據源
{
float MaterialPrice = 0.0f;
float MaterialTaxPrice = 0.0f;
float TaxRate = 0.0f;
float Moneys = 0.0f;
int temp=0;
if (row["單價"].ToString().Trim() != "")
MaterialPrice = float.Parse(row["單價"].ToString().Trim());
if (row["含稅單價"].ToString().Trim()!="")
MaterialTaxPrice=float.Parse(row["含稅單價"].ToString().Trim());
if (row["稅率"].ToString().Trim()!="")
TaxRate= float.Parse(row["稅率"].ToString().Trim());
if (row["金額"].ToString().Trim()!="")
Moneys=float.Parse(row["金額"].ToString().Trim());
if (material.SelectMaterialsDynamic("MaterialID=‘" + row["物料長代碼"].ToString() + "‘", "").Rows.Count <= 0) //不存在,其實可以不要,因為編號是主鍵,如果相同則插不進去
temp = material.InsertMaterial(row["物料長代碼"].ToString(), row["物料名稱"].ToString(), row["單位"].ToString().Trim(), MaterialPrice, MaterialTaxPrice, TaxRate, Moneys, 0);
else
NotIntoID += row["物料長代碼"].ToString()+",";
if (temp > 0)
index += temp;
temp = 0;
}
}
再分享一下我老師大神的人工智能教程吧。零基礎!通俗易懂!風趣幽默!還帶黃段子!希望你也加入到我們人工智能的隊伍中來!https://blog.csdn.net/jiangjunshow
asp net導入Excel表