1. 程式人生 > >asp net導入Excel表

asp net導入Excel表

saveas 人工智 nec 自己的 remove 數據導入 into mat base

一、導入Excel的界面
技術分享圖片
這個界面很簡單,代碼就不列出來了。
二、導入的代碼
我分了兩部分,第一部分是點擊查看數據的代碼,這個是將數據導入到DataTable裏面,但是還沒有導入到數據庫裏。這裏需要註意的是當程序在服務器運行時,要先把導入的文件上傳到服務器上,否則不能導入,會出現莫名奇妙的錯誤,為了改這個錯誤當初弄了好久,希望大家不要走我的彎路啊。如果是在自己的機器上就不用上穿文件。
第二部分是選擇相應的表,然後將數據導入到表裏面,這部分很簡單。
1、

技術分享圖片try
技術分享圖片
{
技術分享圖片 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>
技術分享圖片
/// 導入數據到數據集中
技術分享圖片
/// </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);
技術分享圖片 }

技術分享圖片 }

二、將數據導入到數據庫裏
這部分其實很簡單,就是插入數據。

技術分享圖片 if (this.DropDownList1.SelectedItem.Text.ToString().Equals("Material"))//導物料
技術分享圖片
{
技術分享圖片
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表