โดยปกติสร้าง Excel Macro หรือการเขียนคำสั่งเพื่อ automate งานบางอย่างใน Microsoft Excel เรามักทราบว่าเราจะเขียนด้วยคำสั่ง VB หรือ VBA (Visual Basic for Applications)
แต่สำหรับหลายท่านที่คุ้นเคยกับ C# และ .NET เหมือนกับ admin คงชื่นชมที่จะเขียน code ด้วยคำสั่ง C# มากกว่า
ใน Excel ได้เปิดโอกาสให้เราสามารถเขียนคำสั่ง C# เข้าไปจัดการกับข้อมูลใน Excel file ได้ โดยบทความวันนี้เราจะมาลองเขียนำคำสั่ง C# เพื่ออ่านและแก้ไขข้อมูลใน Excel file กัน
สิ่งที่เตรียมพร้อมสำหรับการพัฒนา Excel Programming ด้วย C#
เมื่อได้ติดตั้งทุกอย่างเรียบร้อยแล้วก็เริ่มลงมือเขียน program กันได้เลยครับ
private void MainSheet_Startup(object sender, EventArgs e)
{
const int year = 2020;
var orderedDayOfWeeks = new[]
{
DayOfWeek.Monday,
DayOfWeek.Tuesday,
DayOfWeek.Wednesday,
DayOfWeek.Thursday,
DayOfWeek.Friday,
DayOfWeek.Saturday,
DayOfWeek.Sunday
};
var firstDateOfYear = new DateTime(year, 1, 1);
var firstMondayOfFirstWeek = firstDateOfYear.AddDays(
-Array.IndexOf(orderedDayOfWeeks, firstDateOfYear.DayOfWeek)
);
var weekRanges =
from date in Enumerable.Range(0, int.MaxValue)
let mondayOfWeek = firstMondayOfFirstWeek.AddDays(date * 7) // Create a next Monday
select (From: mondayOfWeek, To: mondayOfWeek.AddDays(4));
var weekRangesInYear = weekRanges.TakeWhile(x => x.From.Year <= year).ToArray();
var firstRowNumber = 5;
for (int index = 0; index < weekRangesInYear.Length; index++)
{
var range = get_Range($"A{ firstRowNumber + index}");
var formattedDate =
$"# {index + 1:0#}) {weekRangesInYear[index].From:MMM dd} - {weekRangesInYear[index].To:MMM dd}";
range.Value2 = formattedDate;
}
}
Run code แบบไม่ต้อง debug ด้วยการกดปุ่ม CTRL + F5 workbook Microsoft Excel จะเปิดขึ้นมาและเรียกใช้งาน work book ที่เราได้เขียนคำสั่งไว้
ตัวอย่างผลลัพธ์การทำงาน
(นี้เป็นความเห็นส่วนตัวของผมเองนะครับ)
Visual Studio
Microsoft Excel
ลองเอาไปใช้กันดูนะครับ