|
C#,VB.Net กับ .Net Import Excel (xls,xlsx) to Database (SQL Server,MySQL,Oracle) |
C#,VB.Net กับ .Net Import Excel (xls,xlsx) to Database (SQL Server,MySQL,Oracle) บทความนี้จะเป็นตัวอย่างการใช้ ExcelDataReader ซึ่งเป็น Library ที่ไว้สำหรับการอ่านข้อมูลจาก Excel โดยใช้วิธีการเปิดไฟล์ Excel แล้วนำไป Import หรือนำเข้าสู่ฐานข้อมูลของ SQL Server , MySQL และ Oracle Database ซึ่งวิธีการนั้นไม่มีอะไรซับซ้อน คือ ใช้วิธีการเปิดอ่านข้อมูลใน Excel และ Loop รายการข้อมูล และใน Loop ก็ใช้เพียงการแทรกคำสั่ง Insert ลงไปใน Table ข้อมูลต่างๆ ใน Excel ก็จะถูกนำเข้าสู่ Table ของ Database ที่ทำการเชื่อมต่ออยู่ในขณะนั้นๆ
C#,VB.Net กับ .Net Import Excel (xls,xlsx) to Database (SQL Server,MySQL,Oracle)
สำหรับ ExcelDataReader ปกติแล้วสามารถอ่าน Excel แล้วได้มาเป็น DataSet และ DataTable ได้เลย หรือจะใช้วิธีการอ่านแล้วค่อยมา Loop เพื่ออ่านข้อมูลมีล่ะรายการก็ได้ สำหรับวิธีการใช้งานเบื้องต้นแนะนำให้อ่านบทความนี้
อ่าน Excel ง่ายๆ ด้วย ExcelDataReader รองรับ xls, xlsx โดยไม่ต้องติดตั้ง Ms Office (VB.Net, C#)
ตัวอย่าง Excel ที่จะ Import รองรับทั้งนามสกุล .xls และ .xlsx
ข้อมูลบน Excel
ออกแบบตารางสำหรับการจัดเก็บข้อมูลแบบง่ายๆ
ตาราง
Ex 1 : ตัวอย่างการ Import เข้าสู่ฐานข้อมูล SQL Server Database
ASP.NET System.Data.SqlClient
C#
string strConnString = @"Server=localhost;UID=sa;PASSWORD=;database=mydatabase";
var objConn = new SqlConnection(strConnString);
objConn.Open();
using (FileStream stream = File.Open(Server.MapPath("Xls/myExcel.xlsx"), FileMode.Open, FileAccess.Read))
{
IExcelDataReader excelReader = ExcelReaderFactory.CreateOpenXmlReader(stream);
excelReader.IsFirstRowAsColumnNames = false;
int i = 0;
while (excelReader.Read())
{
if (i > 0)
{
string strSQL = "INSERT INTO myTable (Column1,Column2,Column3,Column4,Column5) "
+ " VALUES ("
+ " '" + excelReader.GetString(0) + "', "
+ " '" + excelReader.GetString(1) + "', "
+ " '" + excelReader.GetString(2) + "', "
+ " '" + excelReader.GetString(3) + "', "
+ " '" + excelReader.GetString(4) + "' "
+ ")";
var objCmd = new SqlCommand(strSQL, objConn);
objCmd.ExecuteNonQuery();
}
i++;
}
}
objConn.Close();
VB.Net
Dim strConnString As String = "Server=localhost;UID=sa;PASSWORD=;database=mydatabase"
Dim objConn = New SqlConnection(strConnString)
objConn.Open()
Using stream As FileStream = File.Open(Server.MapPath("Xls/myExcel.xlsx"), FileMode.Open, FileAccess.Read)
Dim excelReader As IExcelDataReader = ExcelReaderFactory.CreateOpenXmlReader(stream)
excelReader.IsFirstRowAsColumnNames = False
Dim i As Integer = 0
While excelReader.Read()
If i > 0 Then
Dim strSQL As String = "INSERT INTO myTable (Column1,Column2,Column3,Column4,Column5) " &
" VALUES (" &
" '" & excelReader.GetString(0) & "', " &
" '" & excelReader.GetString(1) & "', " &
" '" & excelReader.GetString(2) & "', " &
" '" & excelReader.GetString(3) & "', " &
" '" & excelReader.GetString(4) & "' " &
")"
Dim objCmd = New SqlCommand(strSQL, objConn)
objCmd.ExecuteNonQuery()
End If
i += 1
End While
End Using
objConn.Close()
Result
Ex 2 : ตัวอย่างการ Import เข้าสู่ฐานข้อมูล MySQL Database
ASP.NET MySql.Data.MySqlClient
C#
string strConnString = @"Server=localhost;User Id=root; Password=root; Database=mydatabase";
var objConn = new MySqlConnection(strConnString);
objConn.Open();
using (FileStream stream = File.Open(Server.MapPath("Xls/myExcel.xlsx"), FileMode.Open, FileAccess.Read))
{
IExcelDataReader excelReader = ExcelReaderFactory.CreateOpenXmlReader(stream);
excelReader.IsFirstRowAsColumnNames = false;
int i = 0;
while (excelReader.Read())
{
if (i > 0)
{
string strSQL = "INSERT INTO myTable (Column1,Column2,Column3,Column4,Column5) "
+ " VALUES ("
+ " '" + excelReader.GetString(0) + "', "
+ " '" + excelReader.GetString(1) + "', "
+ " '" + excelReader.GetString(2) + "', "
+ " '" + excelReader.GetString(3) + "', "
+ " '" + excelReader.GetString(4) + "' "
+ ")";
var objCmd = new MySqlCommand(strSQL, objConn);
objCmd.ExecuteNonQuery();
}
i++;
}
}
objConn.Close();
VB.Net
Dim strConnString As String = "Server=localhost;User Id=root; Password=root; Database=mydatabase"
Dim objConn = New MySqlConnection(strConnString)
objConn.Open()
Using stream As FileStream = File.Open(Server.MapPath("Xls/myExcel.xlsx"), FileMode.Open, FileAccess.Read)
Dim excelReader As IExcelDataReader = ExcelReaderFactory.CreateOpenXmlReader(stream)
excelReader.IsFirstRowAsColumnNames = False
Dim i As Integer = 0
While excelReader.Read()
If i > 0 Then
Dim strSQL As String = "INSERT INTO myTable (Column1,Column2,Column3,Column4,Column5) " &
" VALUES (" &
" '" & excelReader.GetString(0) & "', " &
" '" & excelReader.GetString(1) & "', " &
" '" & excelReader.GetString(2) & "', " &
" '" & excelReader.GetString(3) & "', " &
" '" & excelReader.GetString(4) & "' " &
")"
Dim objCmd = New MySqlCommand(strSQL, objConn)
objCmd.ExecuteNonQuery()
End If
i += 1
End While
End Using
objConn.Close()
Ex 3 : ตัวอย่างการ Import เข้าสู่ฐานข้อมูล Oracle Database
ASP.NET System.Data.OracleClient
C#
string strConnString = @"Data Source=TCDB;User Id=myuser;Password=mypassword;";
var objConn = new OracleConnection(strConnString);
objConn.Open();
using (FileStream stream = File.Open(Server.MapPath("Xls/myExcel.xlsx"), FileMode.Open, FileAccess.Read))
{
IExcelDataReader excelReader = ExcelReaderFactory.CreateOpenXmlReader(stream);
excelReader.IsFirstRowAsColumnNames = false;
int i = 0;
while (excelReader.Read())
{
if (i > 0)
{
string strSQL = "INSERT INTO myTable (Column1,Column2,Column3,Column4,Column5) "
+ " VALUES ("
+ " '" + excelReader.GetString(0) + "', "
+ " '" + excelReader.GetString(1) + "', "
+ " '" + excelReader.GetString(2) + "', "
+ " '" + excelReader.GetString(3) + "', "
+ " '" + excelReader.GetString(4) + "' "
+ ")";
var objCmd = new OracleCommand(strSQL, objConn);
objCmd.ExecuteNonQuery();
}
i++;
}
}
objConn.Close();
VB.Net
Dim strConnString As String = "Data Source=TCDB;User Id=myuser;Password=mypassword;"
Dim objConn = New OracleConnection(strConnString)
objConn.Open()
Using stream As FileStream = File.Open(Server.MapPath("Xls/myExcel.xlsx"), FileMode.Open, FileAccess.Read)
Dim excelReader As IExcelDataReader = ExcelReaderFactory.CreateOpenXmlReader(stream)
excelReader.IsFirstRowAsColumnNames = False
Dim i As Integer = 0
While excelReader.Read()
If i > 0 Then
Dim strSQL As String = "INSERT INTO myTable (Column1,Column2,Column3,Column4,Column5) " &
" VALUES (" &
" '" & excelReader.GetString(0) & "', " &
" '" & excelReader.GetString(1) & "', " &
" '" & excelReader.GetString(2) & "', " &
" '" & excelReader.GetString(3) & "', " &
" '" & excelReader.GetString(4) & "' " &
")"
Dim objCmd = New OracleCommand(strSQL, objConn)
objCmd.ExecuteNonQuery()
End If
i += 1
End While
End Using
objConn.Close()
สำหรับ Database อื่นๆ ก็สามารถที่จะใช้ Library ตาม Connector ของ Database นั้นๆ
|
|
|
|
|
|