|
EPPlus สุดยอด .Net Library Spreadsheets ในการอ่าน-เขียนไฟล์ Excel (VB.Net,C#) |
EPPlus สุดยอด .Net Library Spreadsheets ในการอ่าน-เขียนไฟล์ Excel (VB.Net,C#) ในการเขียนโปรแกรมด้วย .Net Application จัดการกับไฟล์ Excel เช่นการ อ่าน-เขียน (Read/Write) ในปัจจุบันอยากจะแนะนำให้ใช้ Library ตัวนี้คือ EPPlus ซึ่งมันได้ถูก พัฒนาและปรับปรุงมาซะพักใหญ่แล้ว 5-6 ปี ปัจจุบันอยู่ที่ Version 4.x เหตุผลที่ควรเลือกใช้ Library นี้คือ เป็น คลาสที่เรียกใช้งานได้ง่ายมาก อ่าน/เขียน ได้อย่างรวดเร็ว โดยสามารถอ่านได้ถึง 50,000 Cell ต่อวินาที รองรับ Excel 2007/2010 (Open Office Xml format (xlsx). ) มีฟีเจอร์ที่ใช้สำหรับการจัดการกับ Excel ได้หลากหลาย เกือบเรียกได้ว่าครบทุกความต้องการ เช่น การจัดการ Cell , Border , Style การเปิด Open/Write จากไฟล์เดิมที่มีอยู่แล้ว และมันมีประสิทธิภาพสูงเมื่อมากนำไปใช้ทดแทนพวก Library ของ interop ของ Microsoft Office Excel
EPPlus .Net Library for Excel Spreadsheets
EPPlus
http://epplus.codeplex.com/
เมื่อเลือกใช้ Library ของ EPPlus เราไม่จำเป็นจะต้องติดตั้งโปรแกรม Microsoft Office Excel ที่ฝั่งของ Server แต่อย่างใด ซึ่งเป็นจุดเด่น ที่เราจะหลีกเลี่ยงปัญหาเดิมๆ ที่เกิดจากการใช้งาน interop ของ Excel
Feature ของ Epplus
- Cell Ranges
- Cell styling (Border, Color, Fill, Font, Number, Alignments)
- Charts
- Pictures
- Shapes
- Comments
- Tables
- Protection
- Encryption
- Pivot tables
- Data validation
- Conditional formatting
- VBA
- Formula calculation
- Many more...
ในการเรียกใช้งาน EPPlus สามารถติดตั้งได้จาก Nuget Package
ติดตั้ง Library ของ EPPlus
ในการเรียกใช้งานให้ Import หรือ using ต่างๆ ดังนี้ System.Text, System.IO, OfficeOpenXml
Example 1 : การสร้างไฟล์ Excel แบบง่าย ๆ
Code (VB.Net)
Using package = New ExcelPackage()
Dim workbook = package.Workbook
'*** Sheet 1
Dim worksheet = workbook.Worksheets.Add("Sheet1")
worksheet.Cells("A1").Value = "ThaiCreate.Com"
worksheet.Cells("B2").Value = "2017"
package.SaveAs(New FileInfo(Server.MapPath("Xls/myExcel.xlsx")))
End Using
Code (C#)
using (var package = new ExcelPackage())
{
var workbook = package.Workbook;
//*** Sheet 1
var worksheet = workbook.Worksheets.Add("Sheet1");
worksheet.Cells["A1"].Value = "ThaiCreate.Com";
worksheet.Cells["B2"].Value = "2017";
package.SaveAs(new FileInfo(Server.MapPath(@"Xls/myExcel.xlsx")));
}
Result
Example 2 : การกำหนด Style เช่น Font , Border และ Color
Code (VB.Net)
Using package = New ExcelPackage()
Dim workbook = package.Workbook
'*** Sheet 1
Dim worksheet = workbook.Worksheets.Add("Sheet1")
worksheet.Cells("A1").Value = "ThaiCreate.Com"
worksheet.Cells("A1").Style.Font.Bold = True
worksheet.Cells("A1").Style.Font.Color.SetColor(System.Drawing.Color.Red)
worksheet.Cells("B3").Value = "2017"
worksheet.Cells("B3").Style.Font.Size = 20
worksheet.Column(5).Width = 50
worksheet.Cells("E5").Value = "New Member"
worksheet.Cells("E5").Style.Font.Size = 12
worksheet.Cells("E5").Style.HorizontalAlignment = OfficeOpenXml.Style.ExcelHorizontalAlignment.Right
Using range As ExcelRange = worksheet.Cells("A8:E9")
range.Merge = True
range.Style.Border.BorderAround(OfficeOpenXml.Style.ExcelBorderStyle.Medium, System.Drawing.Color.Black)
range.Value = "Sawatdee ThaiCreate.Com"
range.Style.HorizontalAlignment = OfficeOpenXml.Style.ExcelHorizontalAlignment.Center
range.Style.VerticalAlignment = OfficeOpenXml.Style.ExcelVerticalAlignment.Center
range.Style.Border.Top.Style = OfficeOpenXml.Style.ExcelBorderStyle.Thin
range.Style.Border.Left.Style = OfficeOpenXml.Style.ExcelBorderStyle.Thin
range.Style.Border.Right.Style = OfficeOpenXml.Style.ExcelBorderStyle.Thin
range.Style.Border.Bottom.Style = OfficeOpenXml.Style.ExcelBorderStyle.Thin
End Using
package.SaveAs(New FileInfo(Server.MapPath("Xls/myExcel.xlsx")))
End Using
Code (C#)
using (var package = new ExcelPackage())
{
var workbook = package.Workbook;
//*** Sheet 1
var worksheet = workbook.Worksheets.Add("Sheet1");
worksheet.Cells["A1"].Value = "ThaiCreate.Com";
worksheet.Cells["A1"].Style.Font.Bold = true;
worksheet.Cells["A1"].Style.Font.Color.SetColor(System.Drawing.Color.Red);
worksheet.Cells["B3"].Value = "2017";
worksheet.Cells["B3"].Style.Font.Size = 20;
worksheet.Column(5).Width = 50;
worksheet.Cells["E5"].Value = "New Member";
worksheet.Cells["E5"].Style.Font.Size = 12;
worksheet.Cells["E5"].Style.HorizontalAlignment = OfficeOpenXml.Style.ExcelHorizontalAlignment.Right;
using (ExcelRange range = worksheet.Cells["A8:E9"])
{
range.Merge = true;
range.Style.Border.BorderAround(OfficeOpenXml.Style.ExcelBorderStyle.Medium, System.Drawing.Color.Black);
range.Value = "Sawatdee ThaiCreate.Com";
range.Style.HorizontalAlignment = OfficeOpenXml.Style.ExcelHorizontalAlignment.Center;
range.Style.VerticalAlignment = OfficeOpenXml.Style.ExcelVerticalAlignment.Center;
range.Style.Border.Top.Style = OfficeOpenXml.Style.ExcelBorderStyle.Thin;
range.Style.Border.Left.Style = OfficeOpenXml.Style.ExcelBorderStyle.Thin;
range.Style.Border.Right.Style = OfficeOpenXml.Style.ExcelBorderStyle.Thin;
range.Style.Border.Bottom.Style = OfficeOpenXml.Style.ExcelBorderStyle.Thin;
}
package.SaveAs(new FileInfo(Server.MapPath(@"Xls/myExcel.xlsx")));
}
Result
Example 3 : การเปิด Template หรือไฟล์ Excel ที่มีอยู่แล้ว
ไฟล์ Template
Code (VB.Net)
Dim template As New FileInfo(Server.MapPath("Xls/Template.xlsx"))
Using package = New ExcelPackage(template)
Dim workbook = package.Workbook
'*** Sheet 1
Dim worksheet = workbook.Worksheets.First()
For i As Integer = 3 To 10
worksheet.Cells("A" + i).Value = "Data"
worksheet.Cells("B" + i).Value = "Data"
worksheet.Cells("C" + i).Value = "Data"
worksheet.Cells("D" + i).Value = "Data"
worksheet.Cells("E" + i).Value = "Data"
Next
package.SaveAs(New FileInfo(Server.MapPath("Xls/myExcel.xlsx")))
End Using
Code (C#)
FileInfo template = new FileInfo(Server.MapPath(@"Xls/Template.xlsx"));
using (var package = new ExcelPackage(template))
{
var workbook = package.Workbook;
//*** Sheet 1
var worksheet = workbook.Worksheets.First();
for (int i = 3; i <= 10; i++)
{
worksheet.Cells["A" + i].Value = "Data";
worksheet.Cells["B" + i].Value = "Data";
worksheet.Cells["C" + i].Value = "Data";
worksheet.Cells["D" + i].Value = "Data";
worksheet.Cells["E" + i].Value = "Data";
}
package.SaveAs(new FileInfo(Server.MapPath(@"Xls/myExcel.xlsx")));
}
Result
Example 4 : การออก Excel Report หรือรายงานจาก Database
ข้อมูลใน Table
Code (VB.Net)
Dim strConnString As String = "Server=localhost;UID=sa;PASSWORD=;database=mydatabase"
Dim objConn = New SqlConnection(strConnString)
Dim dtAdapter = New SqlDataAdapter()
Dim dt = New DataTable()
objConn.Open()
Dim strSQL As String = "SELECT * FROM myTable"
dtAdapter = New SqlDataAdapter(strSQL, objConn)
dtAdapter.Fill(dt)
Dim template As New FileInfo(Server.MapPath("Xls/Template.xlsx"))
Using package = New ExcelPackage(template)
Dim workbook = package.Workbook
'*** Sheet 1
Dim worksheet = workbook.Worksheets.First()
Dim startRows As Integer = 3
For i As Integer = 0 To dt.Rows.Count - 1
worksheet.Cells("A" + (i + startRows)).Value = dt.Rows(i)("Column1").ToString()
worksheet.Cells("B" + (i + startRows)).Value = dt.Rows(i)("Column2").ToString()
worksheet.Cells("C" + (i + startRows)).Value = dt.Rows(i)("Column3").ToString()
worksheet.Cells("D" + (i + startRows)).Value = dt.Rows(i)("Column4").ToString()
worksheet.Cells("E" + (i + startRows)).Value = dt.Rows(i)("Column5").ToString()
Next
package.SaveAs(New FileInfo(Server.MapPath("Xls/myExcel.xlsx")))
End Using
dtAdapter = Nothing
objConn.Close()
Code (C#)
string strConnString = @"Server=localhost;UID=sa;PASSWORD=;database=mydatabase";
var objConn = new SqlConnection(strConnString);
var dtAdapter = new SqlDataAdapter();
var dt = new DataTable();
objConn.Open();
string strSQL = "SELECT * FROM myTable";
dtAdapter = new SqlDataAdapter(strSQL, objConn);
dtAdapter.Fill(dt);
FileInfo template = new FileInfo(Server.MapPath(@"Xls/Template.xlsx"));
using (var package = new ExcelPackage(template))
{
var workbook = package.Workbook;
//*** Sheet 1
var worksheet = workbook.Worksheets.First();
int startRows = 3;
for (int i = 0; i < dt.Rows.Count; i++)
{
worksheet.Cells["A" + (i + startRows)].Value = dt.Rows[i]["Column1"].ToString();
worksheet.Cells["B" + (i + startRows)].Value = dt.Rows[i]["Column2"].ToString();
worksheet.Cells["C" + (i + startRows)].Value = dt.Rows[i]["Column3"].ToString();
worksheet.Cells["D" + (i + startRows)].Value = dt.Rows[i]["Column4"].ToString();
worksheet.Cells["E" + (i + startRows)].Value = dt.Rows[i]["Column5"].ToString();
}
package.SaveAs(new FileInfo(Server.MapPath(@"Xls/myExcel.xlsx")));
}
dtAdapter = null;
objConn.Close();
Result
ตัวอย่าง Report ของ Excel ที่ได้ จากการ Generate จาก EPPlus
บทความที่เกี่ยวข้อง
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 |
|
|
|
|
|
|