|
อ่าน Excel (xlsx) บน .Net Application ด้วย Library ของ EPPlus (VB.Net,C#) |
อ่าน Excel (xlsx) บน .Net Application ด้วย Library ของ EPPlus (VB.Net,C#) อีกความสามารถหนึ่งของ EPPlus ที่มีประโยชน์และควรศึกษานำไปใช้งาน คือ การใช้ EPPlus อ่านข้อมูลจาก Excel ไฟล์เพื่อนำไปใช้กับ Application ที่พัฒนาด้วย .Net Application โดยวิธีการอ่านนั้น ในตัวอย่างนี้จะมีทั้งแบบการอ่านข้อมูลทีล่ะ Cell แล้วดึงค่าไปใช้ หรือว่าจะอ่านข้อมูลทั้ง Column และ Rows แล้วนำไปจัดเก็บลงใน DataTable หรือว่า List<T> ซึ่งจะสะดวกต่อการนำไปใช้งาน อาทิเชร นำไปใช้กับพวก Control ที่เป็น DataSource ต่างๆ สำหรับตัวอย่างในบทความนี้มีทั้งภาษา VB.Net และ C# และมีตัวอย่างประกอบอยู่ 2-3 ตัวอย่าง
EPPlus .Net Library for Excel Spreadsheets
ตอนที่ 1 : EPPlus สุดยอด .Net Library Spreadsheets ในการอ่าน-เขียนไฟล์ Excel (VB.Net,C#)
สำหรับความรวดเร็วในการอ่านนั้นทางผู้พัฒนาแจ้งว่าสามารถอ่านได้ถึง 50,000 Cell ต่อ 1 วินาที ซึ่งเป็นเป็นความสามารถที่สามารถอ่านได้อย่างรวดเร็ว เมื่อเปรียบเทียบกับ Library อื่นๆ ที่เคยใช้มา
ในการเรียกใช้งานให้ Import หรือ using ต่างๆ ดังนี้ System.Text, System.IO, OfficeOpenXml, System.Data
Example 1 : การอ่านไฟล์ Excel แบบง่าย ๆ
ไฟล์ Excel ที่จะอ่าน
Code (VB.Net)
Dim excel As New FileInfo(Server.MapPath("Xls/myData.xlsx"))
Using package = New ExcelPackage(excel)
Dim workbook = package.Workbook
'*** Sheet 1
Dim worksheet = workbook.Worksheets.First()
'*** Result
Me.lblResult1.Text = worksheet.Cells("A1").Text
Me.lblResult2.Text = worksheet.Cells("B2").Text
Me.lblResult3.Text = worksheet.Cells("C3").Text
End Using
Code (C#)
FileInfo excel = new FileInfo(Server.MapPath(@"Xls/myData.xlsx"));
using (var package = new ExcelPackage(excel))
{
var workbook = package.Workbook;
//*** Sheet 1
var worksheet = workbook.Worksheets.First();
//*** Result
this.lblResult1.Text = worksheet.Cells["A1"].Text;
this.lblResult2.Text = worksheet.Cells["B2"].Text;
this.lblResult3.Text = worksheet.Cells["C3"].Text;
}
Result
Example 2 : การอ่าน Excel แล้วแปลงให้เป็น DataTable
ตัวอย่างไฟล์ Excel ที่จะอ่านและแปลงให้เป็น DataTable
Code (VB.Net)
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Dim excel As New FileInfo(Server.MapPath("Xls/myData.xlsx"))
Using package = New ExcelPackage(excel)
Dim workbook = package.Workbook
'*** Sheet 1
Dim worksheet = workbook.Worksheets.First()
'*** DataTable & DataSource
Dim dt As DataTable = ConvertToDataTable(worksheet)
Me.myGridView.DataSource = dt
Me.myGridView.DataBind()
End Using
End Sub
Private Function ConvertToDataTable(oSheet As ExcelWorksheet) As DataTable
Dim totalRows As Integer = oSheet.Dimension.[End].Row
Dim totalCols As Integer = oSheet.Dimension.[End].Column
Dim dt As New DataTable(oSheet.Name)
Dim dr As DataRow = Nothing
For i As Integer = 1 To totalRows
If i > 1 Then
dr = dt.Rows.Add()
End If
For j As Integer = 1 To totalCols
If i = 1 Then
dt.Columns.Add(oSheet.Cells(i, j).Value.ToString())
Else
dr(j - 1) = oSheet.Cells(i, j).Value.ToString()
End If
Next
Next
Return dt
End Function
Code (C#)
protected void Page_Load(object sender, EventArgs e)
{
FileInfo excel = new FileInfo(Server.MapPath(@"Xls/myData.xlsx"));
using (var package = new ExcelPackage(excel))
{
var workbook = package.Workbook;
//*** Sheet 1
var worksheet = workbook.Worksheets.First();
//*** DataTable & DataSource
DataTable dt = ConvertToDataTable(worksheet);
this.myGridView.DataSource = dt;
this.myGridView.DataBind();
}
}
private DataTable ConvertToDataTable(ExcelWorksheet oSheet)
{
int totalRows = oSheet.Dimension.End.Row;
int totalCols = oSheet.Dimension.End.Column;
DataTable dt = new DataTable(oSheet.Name);
DataRow dr = null;
for (int i = 1; i <= totalRows; i++)
{
if (i > 1) dr = dt.Rows.Add();
for (int j = 1; j <= totalCols; j++)
{
if (i == 1)
dt.Columns.Add(oSheet.Cells[i, j].Value.ToString());
else
dr[j - 1] = oSheet.Cells[i, j].Value.ToString();
}
}
return dt;
}
Result
Example 3 : การอ่านข้อมูลจาก Excel และ Import/Insert ลงใน Database ของ SQL Server
ตัวอย่างไฟล์ Excel ที่จะนำเข้า Database
สร้าง Table เพื่อรองรับข้อมูลที่จะ Insert
Code (VB.Net)
Dim excel As New FileInfo(Server.MapPath("Xls/myData.xlsx"))
Using package = New ExcelPackage(excel)
Dim workbook = package.Workbook
'*** Sheet 1
Dim worksheet = workbook.Worksheets.First()
Dim strConnString As String = "Server=localhost;UID=sa;PASSWORD=;database=mydatabase"
Dim objConn = New SqlConnection(strConnString)
objConn.Open()
'*** Loop to Insert
Dim totalRows As Integer = worksheet.Dimension.[End].Row
For i As Integer = 2 To totalRows
Dim strSQL As String = "INSERT INTO myTable (Column1,Column2,Column3,Column4,Column5) " &
" VALUES (" + " '" + worksheet.Cells(i, 1).Text.ToString() + "', " &
" '" + worksheet.Cells(i, 2).Text.ToString() + "', " &
" '" + worksheet.Cells(i, 3).Text.ToString() + "', " &
" '" + worksheet.Cells(i, 4).Text.ToString() + "', " &
" '" + worksheet.Cells(i, 5).Text.ToString() + "' " + ")"
Dim objCmd = New SqlCommand(strSQL, objConn)
objCmd.ExecuteNonQuery()
Next
objConn.Close()
End Using
Code (C#)
FileInfo excel = new FileInfo(Server.MapPath(@"Xls/myData.xlsx"));
using (var package = new ExcelPackage(excel))
{
var workbook = package.Workbook;
//*** Sheet 1
var worksheet = workbook.Worksheets.First();
string strConnString = @"Server=localhost;UID=sa;PASSWORD=;database=mydatabase";
var objConn = new SqlConnection(strConnString);
objConn.Open();
//*** Loop to Insert
int totalRows = worksheet.Dimension.End.Row;
for (int i = 2; i <= totalRows; i++)
{
string strSQL = "INSERT INTO myTable (Column1,Column2,Column3,Column4,Column5) "
+ " VALUES ("
+ " '" + worksheet.Cells[i, 1].Text.ToString() + "', "
+ " '" + worksheet.Cells[i, 2].Text.ToString() + "', "
+ " '" + worksheet.Cells[i, 3].Text.ToString() + "', "
+ " '" + worksheet.Cells[i, 4].Text.ToString() + "', "
+ " '" + worksheet.Cells[i, 5].Text.ToString() + "' "
+ ")";
var objCmd = new SqlCommand(strSQL, objConn);
objCmd.ExecuteNonQuery();
}
objConn.Close();
}
Result
ข้อมูลถุก Insert ลงใน Database ของ SQL Server
ในตัวอย่างนี้จะใช้ Database ของ SQL Server ในกรณีที่จะใช้ Database อื่น ๆ อ่านได้จากบทความนี้
บทความที่เกี่ยวข้อง
Go to : ASP.Net Excel and EPPlus Generate Excel file
Go to : ASP.Net Excel & EPPlus Cell Ranges/Border
Go to : ASP.Net Excel & EPPlus Cell styling (Color, Font, Alignments)
Go to : ASP.Net Excel & EPPlus Open Excel and Write Excel (Template)
Go to : ASP.Net Excel & EPPlus Read Excel/Cell file
Go to : ASP.Net Excel & EPPlus Convert Excel DataTable
Go to : ASP.Net Excel & EPPlus Import Excel To Database
Go to : ASP.Net Excel & EPPlus Generate Excel Report from Database
|
|
|
|
|
|
|
|
By : |
TC Admin
|
|
Article : |
บทความเป็นการเขียนโดยสมาชิก หากมีปัญหาเรื่องลิขสิทธิ์ กรุณาแจ้งให้ทาง webmaster ทราบด้วยครับ |
|
Score Rating : |
|
|
Create Date : |
2017-03-21 |
|
Download : |
No files |
|
Sponsored Links |
|
|
|
|
|
|