สอบถามเรื่องการ Import Excel File เข้า Sql database ผ่านหน้า web ค่ะ โดยที่เราสามารถเลือก File Excel แล้ว Import ผ่านหน้า web ใช้ asp.net c#
หุหุ ข้างบนไม่ลองบอกซักนิดเหรอ
1. ใช้ fileupload + validate expression เพื่อกรองเฉพาะ excel
2. upload ไฟล์ไปใช้ใน server ก่อน อาจเปลี่ยนชื่อด้วยการระบุวันเวลา
เพื่อป้องกันการ upload ทับไฟล์เดียว ในกรณีใช้พร้อมกันหลายๆ คน
3. เอา path + ชื่อไฟล์ ของไฟล์ที่ update ไว้ใน server มาใช้เป็น connection string ในการติดต่อ
4. ใช้ oledb สร้าง connection แล้วใน sql command query ข้อมูลออกมาเก็บไว้ใน datatable
5. ใช้ dataadapter เป็นตัวกลางเพื่อนำข้อมูลจาก datatable ไปเก็บที่ sql server 2008 (ถ้าไม่ใช้ dataadater ก็วนลูปเอา)
Date :
2010-12-21 14:01:13
By :
ตังค์แมน
ขอบคุนมากคะ เพิ่งเริ่มหัดเขียนอะ เดี๋ยวจาลองทำตามดูนะคะ ถ้ามีตัวอย่าง code แนะนำด้วยนะคะ ขอบคุนมากคะ
Date :
2010-12-21 17:41:05
By :
FFF
ตอนแรก อ่านตรงเนื่อหา ยัง งง ว่าถามอะไร แต่พอไปดูหัวข้อ พึ่งรู้ = =a
โทษทีครับ ไม่ทันได้อ่านหัว
Date :
2010-12-21 22:16:52
By :
ฟฟฟ
การกำหนด validate expression เพื่อกรองเฉพาะ excel ต้องเขียน Format แบบไหนคะ
Date :
2010-12-22 14:11:20
By :
FFF
อ่าน excel ด้วย ADO.NET จะได้เป็น DataTable แล้วค่อยเอา Insert ลงใน Database ก้ได้ครับ
Date :
2010-12-22 17:37:09
By :
webmaster
using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using System.Data.SqlClient;
using System.Text.RegularExpressions;
using Excel = Microsoft.Office.Interop.Excel;
public partial class Operation_importfile : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void Button1_Click(object sender, EventArgs e)
{
if (!(FileUpload1.PostedFile == null))
{
string UlFileName;
int i;
UlFileName = ("MyXls/" + System.IO.Path.GetFileName(FileUpload1.FileName));
// *** Save Images ***'
FileUpload1.PostedFile.SaveAs(Server.MapPath(UlFileName));
// *** Create Excel.Application ***'
Excel.Application xlApp = new Excel.Application();
Excel.Workbook xlBook;
Excel.Worksheet xlSheet1;
xlBook = xlApp.WorkbookOpen += (Server.MapPath(UlFileName));
xlBook.Application.Visible = false;
xlSheet1 = xlBook.Worksheets(1);
// *** Create DataTable ***'
System.Data.DataTable dt = new System.Data.DataTable();
System.Data.DataRow dr;
// *** Column ***'
dt.Columns.Add("PID");
dt.Columns.Add("FName");
dt.Columns.Add("LName");
dt.Columns.Add("OtherName");
dt.Columns.Add("SDay");
dt.Columns.Add("SMonth");
i = 2;
while (!(xlSheet1.Cells.Item[i, 1].Value.Trim() == ""))
{
dr = dt.NewRow;
dr["PID"] = xlSheet1.Cells.Item[i, 1].Value;
dr["FName"] = xlSheet1.Cells.Item[i, 2].Value;
dr["LName"] = xlSheet1.Cells.Item[i, 3].Value;
dr["OtherName"] = xlSheet1.Cells.Item[i, 4].Value;
dr["SDay"] = xlSheet1.Cells.Item[i, 5].Value;
dr["SMonth"] = xlSheet1.Cells.Item[i, 6].Value;
dt.Rows.Add(dr);
i = (i + 1);
}
// *** End DataTable ***'
// *** Insert to Database ***'
SqlConnection objConn;
SqlCommand objCmd;
string strConnString;
string strSQL;
strConnString = ("Provider=System.Data.SqlClient;Data Source=LAPTOP\\MSSQLSERVER2008;Initial Catalog=TEST;Integrated Security=True"
+ (Server.MapPath("database/mydatabase.mdb") + ";"));
objConn = new SqlConnection(strConnString);
objConn.Open();
for (i = 0; (i
<= (dt.Rows.Count - 1)); i++)
{
// *** Insert Record ***'
strSQL = ("INSERT INTO Profile (PID,FName,LName,OtherName,SDay,SMonth) " + (" VALUES (\'"
+ (dt.Rows[i]["PID"] + ("\',\'"
+ (dt.Rows[i]["FName"] + ("\' " + (",\'"
+ (dt.Rows[i]["LName"] + ("\',\'"
+ (dt.Rows[i]["OtherName"] + ("\' " + (",\'"
+ (dt.Rows[i]["SDay"] + ("\',\'"
+ (dt.Rows[i]["SMonth"] + "\') ")))))))))))))));
objCmd = new SqlCommand(strSQL, objConn);
objCmd.ExecuteNonQuery();
}
this.lblText.Text = "Record Inserted.";
objConn.Close();
objConn = null;
xlApp.Application.Quit();
xlApp.Quit();
xlSheet1 = null;
xlBook = null;
xlApp = null;
}
}
}
รบกวนพี่ๆช่วยดูหน่อยนะคะ ไม่รู้ว่าผิดตรงไหน ขอบคุนมากค่ะ
Date :
2010-12-23 01:42:50
By :
FFF
สุดท้ายก็ไม่รู้ว่าคุณ.. เขาได้คำตอบไปรึป่าวนะ
เงียบหายกันไปซะงั้น ...
Date :
2011-01-06 15:53:32
By :
5555
ยังแน่นอน ดูจากโค้ดแล้ว
ไม่ต้องไปเปิด excel อ่านหรอก
สร้าง connection แบบ database (ใช้ excel เป็น database)
แล้ว query ก็ออกแระ เอามาใส่ datatable แล้วค่อยใช้ dataadapter ไปส่ง database อีกที
Date :
2011-01-06 16:15:05
By :
ตังค์แมน
Load balance : Server 02