ส่งออกข้อมูลไปยัง Excel

ในบทความนี้ เราจะแสดงวิธีการส่งออกข้อมูลไปยัง Excel ใน C# และ VB.NET จากแหล่งข้อมูลต่างๆ เช่น อาร์เรย์ คอลเลกชันของออบเจ็กต์แบบกำหนดเอง DataTable, DataView, DataGrid, GridView, HTML, JSON และ CSV

ส่งออกข้อมูลไปยัง Excel ใน C# ด้วย Aspose.Cells API

Aspose.Cells for .NET คือ API การจัดการสเปรดชีตอันทรงพลังที่ให้คุณสร้าง แก้ไข หรือแปลงไฟล์ Excel ภายในแอปพลิเคชัน .NET วิธีการที่ใช้งานง่ายของ API ช่วยให้คุณสามารถดำเนินการคุณลักษณะการทำงานอัตโนมัติของ Excel ได้อย่างราบรื่นโดยใช้โค้ดเพียงไม่กี่บรรทัด NuGet เป็นวิธีที่ง่ายที่สุดในการดาวน์โหลดและติดตั้ง Aspose.Cells API สำหรับ .NET เปิดหน้าต่างจัดการแพ็คเกจ NuGet แล้วพิมพ์ “Aspose.Cells" ในกล่องข้อความค้นหาเพื่อค้นหาแพ็คเกจ Aspose.Cells .NET สุดท้ายคลิกปุ่มติดตั้งเพื่อติดตั้งแพ็คเกจเวอร์ชันล่าสุด

C# Export Array ไปยัง Excel - บทช่วยสอนสั้น ๆ

เราสามารถส่งออกอาร์เรย์ (หนึ่งมิติหรือสองมิติ) ของประเภทการอ้างอิงหรือประเภทค่าไปยังเอกสาร Excel เราใช้เมธอด ImportArray ของคอลเลกชัน Cells เพื่อส่งออกข้อมูลไปยังสเปรดชีตจากอาร์เรย์ เวอร์ชันที่โอเวอร์โหลดของเมธอด ImportArray มีดังต่อไปนี้

ชื่อคำอธิบาย
ImportArray(Double[], Int32, Int32, บูลีน)ส่งออกอาร์เรย์สองเท่าลงในเวิร์กชีต
ImportArray(Int32[], Int32, Int32, บูลีน)ส่งออกอาร์เรย์ของจำนวนเต็มลงในแผ่นงาน
ImportArray(สตริง[], Int32, Int32, บูลีน)ส่งออกอาร์เรย์ของสตริงลงในแผ่นงาน
ImportArray(Double[,], Int32, Int32)ส่งออกอาร์เรย์สองมิติของ double ลงในเวิร์กชีต
ImportArray(Int32[,], Int32, Int32)ส่งออกอาร์เรย์สองมิติของจำนวนเต็มลงในแผ่นงาน
ImportArray(String[,], Int32, Int32)ส่งออกอาร์เรย์สองมิติของสตริงลงในเวิร์กชีต

การโอเวอร์โหลดทั่วไปจะใช้พารามิเตอร์ต่อไปนี้:

  • Array วัตถุอาร์เรย์ที่คุณกำลังส่งออกเนื้อหา
  • หมายเลขแถว หมายเลขแถวของเซลล์แรก (แบบศูนย์) ที่จะส่งออกข้อมูลไป
  • หมายเลขคอลัมน์ หมายเลขคอลัมน์ของเซลล์แรก (เลขศูนย์) ที่จะส่งออกข้อมูลไป
  • เป็นแนวตั้ง ซึ่งเป็นค่าบูลีนที่ระบุว่าจะส่งออกข้อมูลในแนวตั้งหรือแนวนอน

ต่อไปนี้เป็นขั้นตอนในการส่งออกอาร์เรย์ไปยังไฟล์ Excel ใน C#

  1. สร้างวัตถุ สมุดงาน คลาส สมุดงาน แสดงถึงไฟล์ Microsoft Excel
  2. รับการอ้างอิงไปยังแผ่นงานที่ต้องการ คลาส สมุดงาน มีคอลเลกชัน แผ่นงาน ที่อนุญาตให้เข้าถึงแต่ละแผ่นงานในไฟล์ Excel
  3. เรียกเมธอด ImportArray ของคอลเลกชั่น Cells เพื่อส่งออกอาร์เรย์ไปยังเวิร์กชีตที่แถวและคอลัมน์ที่ระบุ คลาส แผ่นงาน มีคอลเลกชัน เซลล์
  4. บันทึกไฟล์ Excel โดยใช้วิธี Workbook.Save(string)

ตัวอย่างโค้ดต่อไปนี้แสดงวิธีการส่งออกอาร์เรย์ของ String ไปยังไฟล์ Excel ใน C#

// Instantiating a Workbook object
Workbook workbook = new Workbook();

// Obtaining the reference of the worksheet
Worksheet worksheet = workbook.Worksheets[0];

// Creating an array containing names as string values
string[] names = new string[] { "Laurence Chen", "Roman Korchagin", "Kyle Huang" };

// Exporting the array of names to first row and first column vertically
worksheet.Cells.ImportArray(names, 0, 0, true);

// Saving the Excel file
workbook.Save("StringsArray.xlsx");
ส่งออกอาร์เรย์สตริงไปยัง Excel

ส่งออกอาร์เรย์ข้อมูลไปยัง Excel

ในทำนองเดียวกัน เราสามารถส่งออกอาร์เรย์สองมิติไปยังไฟล์ Excel ได้ ตัวอย่างโค้ดต่อไปนี้แสดงวิธีการส่งออกอาร์เรย์สองมิติไปยังไฟล์ Excel ใน C#

// Creating a two-dimensional array of integers
int[,] array2D = new int[4, 2] { { 1, 2 }, { 3, 4 }, { 5, 6 }, { 7, 8 } };

// Exporting a two-dimensional array at the first row and first column of the worksheet
worksheet.Cells.ImportArray(array2D, 0, 0);

C# ส่งออก ArrayList ไปยัง Excel

หากต้องการส่งออกข้อมูลจาก ArrayList ไปยังเวิร์กชีท ให้เรียกใช้เมธอด ImportArrayList ของคอลเลกชัน Cells ImportArrayList วิธีการใช้พารามิเตอร์ต่อไปนี้:

  • รายการอาร์เรย์แสดงถึงวัตถุ ArrayList ที่คุณกำลังส่งออก
  • หมายเลขแถวหมายถึงหมายเลขแถวของเซลล์แรกที่ข้อมูลจะถูกส่งออกไป
  • หมายเลขคอลัมน์แสดงถึงหมายเลขคอลัมน์ของเซลล์แรกที่จะส่งออกข้อมูลไป
  • แนวตั้งเป็นค่าบูลีนที่ระบุว่าจะส่งออกข้อมูลในแนวตั้งหรือแนวนอน

ตัวอย่างโค้ดต่อไปนี้แสดงวิธีการส่งออก ArrayList ไปยังไฟล์ Excel ใน C#

// Instantiating a Workbook object
Workbook workbook = new Workbook();

// Obtaining the reference of the worksheet
Worksheet worksheet = workbook.Worksheets[0];

// Instantiating an ArrayList object
ArrayList list = new ArrayList();

// Add few names to the list as string values
list.Add("Laurence Chen");
list.Add("Roman Korchagin");
list.Add("Kyle Huang");
list.Add("Tommy Wang");

// Exporting the contents of ArrayList vertically at the first row and first column of the worksheet. 
worksheet.Cells.ImportArrayList(list, 0, 0, true);

// Saving the Excel file
workbook.Save("ArrayListExport.xlsx");

C# ส่งออกคอลเลกชันของวัตถุที่กำหนดเองไปยัง Excel

ในการส่งออกข้อมูลจากคอลเลกชันของออบเจ็กต์ที่กำหนดเองไปยังเวิร์กชีท เราใช้เมธอด ImportCustomObjects วิธีการนี้มีโอเวอร์โหลดสองเวอร์ชัน

  1. ImportCustomObjects (รายการ ICollection, สตริง [] propertyNames, บูลีน isPropertyNameShown, Int32 firstRow, Int32 firstColumn, Int32 rowNumber, การแทรกบูลีน, สตริง dateFormatString, บูลีน ConvertStringToNumber)
  2. ImportCustomObjects (รายการ ICollection, Int32 firstRow, Int32 firstColumn, ตัวเลือก ImportTableOptions)

เราจะสำรวจวิธีการโอเวอร์โหลดแต่ละวิธีทีละวิธี คำอธิบายของพารามิเตอร์ของวิธีโอเวอร์โหลดวิธีแรกมีดังต่อไปนี้:

  • รายการคอลเลกชันของออบเจ็กต์แบบกำหนดเอง
  • propertyNames ชื่อของคุณสมบัติของออบเจ็กต์ที่จะส่งออก หากเป็นค่าว่าง คุณสมบัติทั้งหมดจะถูกส่งออก
  • isPropertyNameShown ระบุว่าชื่อคุณสมบัติจะถูกส่งออกไปยังแถวแรกหรือไม่
  • firstRow หมายเลขแถวของเซลล์แรกที่จะส่งออกไป
  • firstColumn หมายเลขคอลัมน์ของเซลล์แรกที่จะส่งออกไป
  • rowNumber จำนวนออบเจ็กต์ที่จะส่งออก
  • insertRows ระบุว่ามีการเพิ่มแถวพิเศษเพื่อให้พอดีกับข้อมูลหรือไม่
  • dateFormatString สตริงรูปแบบวันที่สำหรับเซลล์
  • ConvertStringToNumber ระบุว่าวิธีนี้จะพยายามแปลงสตริงเป็นตัวเลขหรือไม่

ในตัวอย่างต่อไปนี้ เรากำลังส่งออกรายการวัตถุบุคคลไปยังเอกสาร Excel ในภาษา C# โปรดทราบว่าเรากำลังส่งออกคุณสมบัติเพียงสองรายการ (ชื่อและอายุ) ของวัตถุบุคคล

// Instantiate a new Workbook
Workbook book = new Workbook();
// Obtaining the reference of the worksheet
Worksheet sheet = book.Worksheets[0];

// Define List
List<Person> list = new List<Person>();

list.Add(new Person("Mike", 25, "Software Engineer"));
list.Add(new Person("Steve", 30, "Doctor"));
list.Add(new Person("Billy", 35, "Teacher"));

// We pick only Name and Age columns, not all, to export to the worksheet         
sheet.Cells.ImportCustomObjects((System.Collections.ICollection)list,
    new string[] { "Name", "Age" }, // propertyNames
    true, // isPropertyNameShown
    0, // firstRow
    0, // firstColumn
    list.Count, // Number of objects to be exported
    true, // insertRows
    null, // dateFormatString
    false); // convertStringToNumber

// Save the Excel file
book.Save("ExportedCustomObjects.xlsx");
       
public class Person
{
    public string Name { get; set; }

    public int Age { get; set; }

    public string Occupation { get; set; }

    public Person(string name, int age, string occupation)
    {
        Age = age;
        Name = name;
        Occupation = occupation;
    }
}
ส่งออกรายการวัตถุไปยัง Excel

ส่งออกรายการวัตถุบุคคลไปยัง Excel

ตอนนี้เราสำรวจวิธีการโอเวอร์โหลดวิธีที่สองของ ImportCustomObjects คำอธิบายของพารามิเตอร์ของวิธีการได้รับด้านล่าง:

  • list รายการของออบเจ็กต์แบบกำหนดเอง
  • firstRow หมายเลขแถวของเซลล์แรกที่จะส่งออกไป
  • firstColumn หมายเลขคอลัมน์ของเซลล์แรกที่จะส่งออกไป
  • ตัวเลือก ImportTableOptions วัตถุ

พารามิเตอร์ ImportTableOptions มีตัวเลือกมากมายสำหรับการส่งออกข้อมูลไปยังเซลล์ บางส่วนได้รับด้านล่าง:

  • CheckMergedCells เอกสาร Excel มีเซลล์ที่ผสานหรือไม่
  • ColumnIndexes อาร์เรย์จำนวนเต็มของดัชนีคอลัมน์ (แบบ 0) ที่จะส่งออกจากแหล่งข้อมูล null หมายความว่าควรส่งออกคอลัมน์ทั้งหมด
  • ConvertGridStyle ระบุว่าจะใช้สไตล์ของมุมมองตารางกับเซลล์หรือไม่
  • ConvertNumericData ค่าบูลีนที่ระบุว่าค่าสตริงควรแปลงเป็นค่าตัวเลขหรือวันที่
  • DateFormat รับหรือตั้งค่าสตริงรูปแบบวันที่สำหรับเซลล์ที่มีค่า DateTime ที่ส่งออก
  • DefaultValues ค่าเริ่มต้นสำหรับเซลล์ในตารางเป็นโมฆะ
  • InsertRows ระบุว่าควรเพิ่มแถวใหม่เพื่อส่งออกบันทึกข้อมูลหรือไม่
  • IsFieldNameShown ระบุว่าควรส่งออกชื่อฟิลด์หรือไม่
  • IsFormulas ระบุว่าข้อมูลเป็นสูตรหรือไม่
  • IsHtmlString ระบุว่าข้อมูลมีแท็ก HTML หรือไม่ หากเราตั้งค่าเป็นจริง การจัดรูปแบบ HTML จะยังคงรักษาไว้ในขณะที่ส่งออกข้อมูลไปยังเอกสาร Excel
  • NumberFormats รับหรือตั้งค่ารูปแบบตัวเลข
  • ShiftFirstRowDown ระบุว่าแถวแรกควรเลื่อนลงเมื่อแทรกแถวหรือไม่
  • TotalColumns รับหรือตั้งค่าจำนวนคอลัมน์ทั้งหมดที่จะส่งออกจากแหล่งข้อมูล -1 หมายถึงคอลัมน์ทั้งหมดของแหล่งข้อมูลที่กำหนด
  • TotalRows รับหรือตั้งค่าจำนวนแถวทั้งหมดที่จะส่งออกจากแหล่งข้อมูล -1 หมายถึงแถวทั้งหมดของแหล่งข้อมูลที่กำหนด

ในตัวอย่างต่อไปนี้ เรากำลังส่งออกข้อมูลจากคอลเลกชันของออบเจ็กต์ไปยังเวิร์กชีตที่มีเซลล์ที่ผสาน เรากำลังตั้งค่าคุณสมบัติ ImportTableOptions.CheckMergedCells ให้เป็นจริง เนื่องจากเอกสาร Excel มีเซลล์ที่ผสานกัน

// Opening an existing Workbook.
Workbook workbook = new Workbook("SampleMergedTemplate.xlsx");
List<Product> productList = new List<Product>();

// Creating a collection of Products
for (int i = 0; i < 3; i++)
{
    Product product = new Product
    {
        ProductId = i,
        ProductName = "Test Product - " + i
    };
    productList.Add(product);
}

ImportTableOptions tableOptions = new ImportTableOptions();
// Set CheckMergedCells property to true
tableOptions.CheckMergedCells = true;
tableOptions.IsFieldNameShown = false;

//Export data to excel template (in second row, first column) 
workbook.Worksheets[0].Cells.ImportCustomObjects((ICollection)productList, 1, 0, tableOptions);
workbook.Save("SampleMergedTemplate_out.xlsx", SaveFormat.Xlsx);

public class Product
{
    public int ProductId { get; set; }

    public string ProductName { get; set; }
}
ส่งออกข้อมูลจากคอลเลกชันของออบเจ็กต์ไปยังแผ่นงานที่มีเซลล์ที่ผสาน

ส่งออกข้อมูลไปยังเอกสาร Excel ที่มีเซลล์ที่ผสาน

C# คัดลอกแถวและคอลัมน์จากไฟล์ Excel หนึ่งไปยังอีกไฟล์หนึ่ง

เราสามารถคัดลอกแถวและคอลัมน์จากเอกสาร Excel หนึ่งไปยังอีกเอกสารหนึ่งโดยทางโปรแกรมได้ เมื่อคัดลอกแถว (หรือคอลัมน์) ข้อมูลที่อยู่ในนั้น รวมถึงสูตรที่มีการอ้างอิงที่อัปเดต และค่า ความคิดเห็น การจัดรูปแบบ เซลล์ที่ซ่อน รูปภาพ และวัตถุการวาดภาพอื่นๆ จะถูกคัดลอกด้วย นอกจากนี้เรายังสามารถคัดลอกแถวและคอลัมน์ภายในแผ่นงานเดียวกันหรือข้ามแผ่นงานอื่นในเอกสาร Excel ได้ Aspose.Cells มีวิธีการต่อไปนี้ในการคัดลอกแถวและคอลัมน์

โค้ดตัวอย่างต่อไปนี้แสดงวิธีการคัดลอกแถวจากเอกสาร Excel หนึ่งไปยังอีกเอกสารหนึ่งใน C#

// Open the source excel file.
Workbook srcWorkbook = new Workbook("Source_Workbook.xlsx");

// Instantiate the destination excel file.
Workbook destWorkbook = new Workbook();

// Get the first worksheet of the source workbook.
Worksheet srcWorksheet = srcWorkbook.Worksheets[0];

// Get the first worksheet of the destination workbook.
Worksheet desWorksheet = destWorkbook.Worksheets[0];

// Copy all the rows of the first worksheet of source Workbook to
// the first worksheet of destination Workbook.
desWorksheet.Cells.CopyRows(srcWorksheet.Cells, 0, 0, srcWorksheet.Cells.MaxDisplayRange.RowCount);

// Save the excel file.
destWorkbook.Save("Destination_Workbook.xlsx");

โค้ดตัวอย่างต่อไปนี้แสดงวิธีการคัดลอกแถวเฉพาะของเอกสาร Excel หนึ่งไปยังอีกแถวหนึ่ง

// Open the source excel file.
Workbook srcWorkbook = new Workbook("Source_Workbook.xlsx");

// Instantiate the destination excel file.
Workbook destWorkbook = new Workbook();

// Get the first worksheet of the source workbook.
Worksheet srcWorksheet = srcWorkbook.Worksheets[0];

// Get the first worksheet of the destination workbook.
Worksheet desWorksheet = destWorkbook.Worksheets[0];

// Copy the second row of the source Workbook to the first row of destination Workbook.
desWorksheet.Cells.CopyRow(srcWorksheet.Cells, 1, 0);

// Copy the fourth row of the source Workbook to the second row of destination Workbook.
desWorksheet.Cells.CopyRow(srcWorksheet.Cells, 3, 1);

// Save the excel file.
destWorkbook.Save("Destination_Workbook.xlsx");
คัดลอกข้อมูลของแถวจากเอกสาร Excel หนึ่งไปยังอีกเอกสารหนึ่ง

ในทำนองเดียวกันเราสามารถคัดลอกข้อมูลของคอลัมน์จากเอกสาร Microsoft Excel หนึ่งไปยังอีกเอกสารหนึ่งได้โดยใช้วิธี CopyColumn หรือ CopyColumns

C# ส่งออก DataTable ไปยัง Excel

ข้อมูลจากออบเจ็กต์ ADO.NET เช่น DataTable, DataColumn และ DataView สามารถส่งออกไปยังแผ่นงาน Excel ได้ ในการส่งออกข้อมูลจาก DataTable เราเรียกเมธอด ImportData ของการรวบรวม Cells มีเมธอด ImportData เวอร์ชันโอเวอร์โหลดหลายเวอร์ชัน แต่เราใช้ดังนี้:

public int ImportData(
	DataTable table,
	int firstRow,
	int firstColumn,
	ImportTableOptions options
)

คำอธิบายของพารามิเตอร์ได้รับด้านล่าง:

  • ตาราง DataTable วัตถุที่จะส่งออก
  • firstRow หมายเลขแถวของเซลล์แรกที่จะส่งออกไป
  • firstColumn หมายเลขคอลัมน์ของเซลล์แรกที่จะส่งออกไป
  • optionsType ImportTableOptions วัตถุ

ในโค้ดตัวอย่างต่อไปนี้ เรากำลังสร้างวัตถุ DataTable ที่มีสามคอลัมน์และสองแถว และส่งออกไปยังแผ่นงาน Excel

// Instantiating a Workbook object            
Workbook workbook = new Workbook();

// Obtaining the reference of the worksheet
Worksheet worksheet = workbook.Worksheets[0];

// Instantiating a "Products" DataTable object
DataTable dataTable = new DataTable("Products");

// Adding columns to the DataTable object
dataTable.Columns.Add("Product ID", typeof(int));
dataTable.Columns.Add("Product Name", typeof(string));
dataTable.Columns.Add("Units In Stock", typeof(int));

// Creating an empty row in the DataTable object
DataRow dr = dataTable.NewRow();

// Adding data to the row
dr[0] = 1;
dr[1] = "Aniseed Syrup";
dr[2] = 15;

// Adding filled row to the DataTable object
dataTable.Rows.Add(dr);

// Creating another empty row in the DataTable object
dr = dataTable.NewRow();

// Adding data to the row
dr[0] = 2;
dr[1] = "Boston Crab Meat";
dr[2] = 123;

// Adding filled row to the DataTable object
dataTable.Rows.Add(dr);

// Setting IsFieldNameShown property to true will add column names // of the DataTable to the worksheet as a header row
ImportTableOptions tableOptions = new ImportTableOptions();
tableOptions.IsFieldNameShown = true;

// Exporting the contents of DataTable at the first row and first column.
worksheet.Cells.ImportData(dataTable, 0, 0, tableOptions);

// Saving the Excel file
workbook.Save("DataTable_Eport.xlsx");
ส่งออก DataTable ไปยัง Excel

ส่งออก DataTable ไปยัง Excel

ส่งออกข้อมูลของ Selective DataColumns ไปยัง Excel ใน C#

เราสามารถส่งออก DataColumns แบบเลือกสรรของ DataTable หรือ DataView ไปยังเอกสาร Excel ตามที่กล่าวไว้ก่อนหน้านี้ วิธี ImportData ยอมรับอาร์กิวเมนต์ประเภท ImportTableOptions คลาส ImportTableOptions มีคุณสมบัติ ColumnIndexes ที่ยอมรับอาร์เรย์ของดัชนีคอลัมน์ (แบบเป็นศูนย์) ที่เราต้องการส่งออก ในตัวอย่างโค้ดต่อไปนี้ เรากำลังส่งออก DataColumns ของ DataTable เพียงสองคอลัมน์ไปยังแผ่นงาน Excel

// Instantiating a "Products" DataTable object
DataTable dataTable = new DataTable("Products");

// Adding columns to the DataTable object
dataTable.Columns.Add("Product ID", typeof(int));
dataTable.Columns.Add("Product Name", typeof(string));
dataTable.Columns.Add("Units In Stock", typeof(int));

// Creating an empty row in the DataTable object
DataRow dr = dataTable.NewRow();

// Adding data to the row
dr[0] = 1;
dr[1] = "Aniseed Syrup";
dr[2] = 15;

// Adding filled row to the DataTable object
dataTable.Rows.Add(dr);

// Creating another empty row in the DataTable object
dr = dataTable.NewRow();

// Adding data to the row
dr[0] = 2;
dr[1] = "Boston Crab Meat";
dr[2] = 123;

// Adding filled row to the DataTable object
dataTable.Rows.Add(dr);

// Instantiate a new Workbook
Workbook book = new Workbook();

Worksheet sheet = book.Worksheets[0];

// Create export options
ImportTableOptions importOptions = new ImportTableOptions();
// Sets the columns (0-based) to export from data source.
// null means all columns should be exported.
importOptions.ColumnIndexes = new int[] { 0, 1 };
importOptions.IsFieldNameShown = true;

// Exporting the values of 1st and 2nd columns of the data table
sheet.Cells.ImportData(dataTable, 0, 0, importOptions);

book.Save("DataColumsExport.xlsx");
ส่งออกข้อมูลของ Selective DataColumns ไปยัง Excel

ผลลัพธ์ของ DataColumns ไปยัง Excel

ส่งออกข้อมูลจาก DataView ไปยัง Excel ใน C#

DataView เป็นมุมมองบน DataTable ที่สามารถปรับแต่งให้นำเสนอชุดย่อยของข้อมูลจาก DataTable เราใช้เมธอด ImportData เวอร์ชันโอเวอร์โหลดต่อไปนี้เพื่อส่งออกข้อมูลจาก DataView ไปยังเอกสาร Excel

public int ImportData(
	DataView dataView,
	int firstRow,
	int firstColumn,
	ImportTableOptions options
)

เรารู้ว่ามีสองวิธีในการสร้าง DataView เราสามารถใช้ตัวสร้าง DataView หรือเราสามารถสร้างการอ้างอิงไปยังคุณสมบัติ DefaultView ของ DataTable ในตัวอย่างโค้ดต่อไปนี้ เรากำลังใช้วิธีถัดไปในการสร้าง DataView

worksheet.Cells.ImportData(dataTable.DefaultView, 0, 0, options);

ส่งออกข้อมูลจาก DataGrid และ GridView ไปยัง Excel ใน C#

ไลบรารี Aspose.Cells ช่วยให้เราสามารถส่งออกข้อมูลจากตัวควบคุม Microsoft Grid เช่น DataGrid และ GridView ไปยังแผ่นงาน Excel มีวิธีการ ImportDataGrid เพื่อส่งออกข้อมูลจาก DataGrid และวิธี ImportGridView เพื่อส่งออกข้อมูลจาก GridView

มีเมธอด ImportDataGrid เวอร์ชันโอเวอร์โหลดหลายเวอร์ชัน แต่การโอเวอร์โหลดทั่วไปใช้พารามิเตอร์ต่อไปนี้:

  • dataGrid วัตถุ DataGrid ที่เราส่งออกเนื้อหามา
  • firstRow คือหมายเลขแถวของเซลล์แรกที่ข้อมูลจะถูกส่งออกไป
  • firstColumn คือหมายเลขคอลัมน์ของเซลล์แรกที่ข้อมูลจะถูกส่งออกไป
  • insertRows คุณสมบัติบูลีนที่ระบุว่าควรเพิ่มแถวพิเศษลงในเวิร์กชีตเพื่อให้พอดีกับข้อมูลหรือไม่
  • importStyle ซึ่งเป็นคุณสมบัติบูลีนที่ระบุว่าควรส่งออกสไตล์เซลล์หรือไม่

ตัวอย่างโค้ดต่อไปนี้แสดงวิธีการส่งออกข้อมูลจาก DataGrid ไปยังไฟล์ Excel ใน C#

// Create a DataTable object and set it as the DataSource of the DataGrid.
DataTable dataTable = new DataTable("Products");
dataTable.Columns.Add("Product ID", typeof(int));
dataTable.Columns.Add("Product Name", typeof(string));
dataTable.Columns.Add("Units In Stock", typeof(int));

DataRow dr = dataTable.NewRow();
dr[0] = 1;
dr[1] = "Aniseed Syrup";
dr[2] = 15;
dataTable.Rows.Add(dr);

dr = dataTable.NewRow();
dr[0] = 2;
dr[1] = "Boston Crab Meat";
dr[2] = 123;
dataTable.Rows.Add(dr);

// Now take care of DataGrid
DataGrid dg = new DataGrid();
dg.DataSource = dataTable;
dg.DataBind();

// We have a DataGrid object with some data in it.
// Lets export it to an Excel worksheet.

// Creat a new workbook
Workbook workbook = new Workbook();
Worksheet worksheet = workbook.Worksheets[0];

// Exporting the contents of the DataGrid to the worksheet
worksheet.Cells.ImportDataGrid(dg, 0, 0, false);

// Save it as Excel file
workbook.Save("ExportDataGrid.xlsx");

ส่งออกข้อมูลที่จัดรูปแบบ HTML ไปยัง Excel ใน C#

Aspose.Cells ช่วยให้คุณสามารถส่งออกข้อมูลที่จัดรูปแบบ HTML ไปยังแผ่นงาน Excel API แยกวิเคราะห์ข้อความที่จัดรูปแบบ HTML ขณะส่งออกข้อมูลและแปลง HTML ให้เป็นค่าของเซลล์ที่จัดรูปแบบ ในโค้ดตัวอย่างต่อไปนี้ DataTable มีข้อความที่จัดรูปแบบ HTML และเรากำลังส่งออกไปยังเอกสาร Excel โดยใช้วิธี ImportData

// Prepare a DataTable with some HTML formatted values
DataTable dataTable = new DataTable("Products");

dataTable.Columns.Add("Product ID", typeof(int));
dataTable.Columns.Add("Product Name", typeof(string));
dataTable.Columns.Add("Units In Stock", typeof(int));

DataRow dr = dataTable.NewRow();
dr[0] = 1;
// Make text italicize
dr[1] = "<i>Aniseed</i> Syrup";
dr[2] = 15;
dataTable.Rows.Add(dr);

dr = dataTable.NewRow();
dr[0] = 2;
// Make text bold
dr[1] = "<b>Boston Crab Meat</b>";
dr[2] = 123;
dataTable.Rows.Add(dr);

// Create export options
ImportTableOptions exportOptions = new ImportTableOptions();
exportOptions.IsFieldNameShown = true;
// Set IsHtmlString property to true as the data contains HTML tags. 
exportOptions.IsHtmlString = true;

// Create workbook
Workbook workbook = new Workbook();
Worksheet worksheet = workbook.Worksheets[0];

worksheet.Cells.ImportData(dataTable, 0, 0, exportOptions);

workbook.Save("HTMLFormattedData_Out.xlsx");
ข้อมูลในรูปแบบ HTML เป็นสเปรดชีต

ผลลัพธ์ของข้อมูลที่ส่งออก HTML ไปยังเอกสาร Excel

ส่งออกไฟล์ HTML ไปยัง Excel ใน C#

Aspose.Cells ช่วยให้เราสามารถส่งออกไฟล์ HTML ไปยัง Excel ไฟล์ HTML ควรเป็นแบบ Microsoft Excel เช่น MS-Excel ควรจะสามารถเปิดได้

// An HTML file
string filePath = "Book1.html";

// Instantiate LoadOptions specified by the LoadFormat.
HtmlLoadOptions loadOptions = new HtmlLoadOptions(LoadFormat.Html);

// Create a Workbook object and open the HTML file.
Workbook wb = new Workbook(filePath, loadOptions);

// Save the file as Excel Document
wb.Save("Book1_out.xlsx");

ส่งออกข้อมูล JSON ไปยัง Excel ใน C#

บางครั้งเราจำเป็นต้องส่งออกข้อมูล JSON ไปยังเอกสาร Excel ด้วย Aspose.Cells เราสามารถทำสิ่งนี้ได้อย่างง่ายดายโดยใช้โค้ดเพียงไม่กี่บรรทัด Aspose.Cells มีคลาส JsonUtility ที่มีเมธอด ImportData สำหรับการส่งออกข้อมูล JSON ไปยังเอกสาร Excel วิธีการ ImportData ยอมรับ JsonLayoutOptions วัตถุเป็นพารามิเตอร์ คลาส JsonLayoutOptions แสดงถึงตัวเลือกของโครงร่าง JSON และมีคุณสมบัติดังต่อไปนี้

  • ArrayAsTable: Indicates whether the array should be processed as a table.
  • ConvertNumericOrDate: Gets or sets a value that indicates whether the string in JSON is to be converted to numeric or date.
  • DateFormat: Gets and sets the format of the date value.
  • IgnoreArrayTitle: Indicates whether to ignore the title if the property of the object is an array.
  • IgnoreNull: Indicates whether the null value should be ignored.
  • IgnoreObjectTitle: Indicates whether to ignore the title if the property of the object is an object.
  • NumberFormat: Gets and sets the format of the numeric value.
  • TitleStyle: Gets and sets the style of the title.

ในโค้ดตัวอย่างต่อไปนี้ เรากำลังส่งออกข้อมูล JSON ไปยังไฟล์ Excel ใน C#

// Instantiating a Workbook object
Workbook workbook = new Workbook();
Worksheet worksheet = workbook.Worksheets[0];

// Read JSON file
string jsonInput = File.ReadAllText("Sample.json");

// Set Styles
CellsFactory factory = new CellsFactory();
Style style = factory.CreateStyle();
style.HorizontalAlignment = TextAlignmentType.Center;
style.Font.Color = System.Drawing.Color.BlueViolet;
style.Font.IsBold = true;

// Set JsonLayoutOptions
JsonLayoutOptions options = new JsonLayoutOptions();
options.TitleStyle = style;
options.ArrayAsTable = true;

// Export JSON Data
JsonUtility.ImportData(jsonInput, worksheet.Cells, 0, 0, options);

// Save Excel file
workbook.Save("ExportingJsonData.xlsx");
{
  "quiz": {
    "sport": {
      "q1": {
        "question": "Which one is correct team name in NBA?",
        "answer": "Huston Rocket"
      }
    },
    "maths": {
      "q1": {
        "question": "5 + 7 = ?",
        "answer": "12"
      },
      "q2": {
        "question": "12 - 8 = ?",
        "answer": "4"
      }
    }
  }
}
ข้อมูล JSON ไปยังเอกสาร Excel

ส่งออกข้อมูล JSON ไปยัง Excel

ส่งออกข้อมูล CSV ไปยัง Excel ใน C#

ไฟล์ค่าที่คั่นด้วยเครื่องหมายจุลภาค (CSV) เป็นไฟล์ข้อความที่ใช้ตัวคั่นซึ่งใช้เครื่องหมายจุลภาคเพื่อแยกค่า โดยทั่วไปไฟล์ CSV จะจัดเก็บข้อมูลแบบตาราง (ตัวเลขและข้อความ) ในรูปแบบข้อความธรรมดา ซึ่งในกรณีนี้แต่ละบรรทัดจะมีจำนวนฟิลด์เท่ากัน

ตัวอย่างโค้ดต่อไปนี้แสดงวิธีที่เราสามารถเปิดไฟล์ CSV และบันทึกเป็นไฟล์ Excel โดยใช้ไลบรารี Aspose.Cells

// Instantiate LoadOptions with CSV LoadFormat.
LoadOptions loadOptions = new LoadOptions(LoadFormat.CSV);

// Open CSV file as a Workbook object
Workbook wb = new Workbook("Business-Price.csv", loadOptions);

// Save the file as an Excel Documnt
wb.Save("CSVAsAnExcelDocument.xlsx");
เปิดไฟล์ CSV ในเอกสารสเปรดชีต

CSV เป็นเอกสาร Excel

บทสรุป

ในโพสต์นี้ คุณได้เห็นว่าคุณสามารถส่งออกข้อมูลไปยัง Excel ใน C# จาก Array, DataTable, DataView, DataGrid และ GridView ได้อย่างง่ายดายเพียงใด คุณยังได้เห็นวิธีการส่งออกข้อมูล HTML, JSON, CSV ไปยังแผ่นงาน Excel โปรดตรวจสอบ เอกสารประกอบ เพื่อเรียนรู้เพิ่มเติมเกี่ยวกับคุณสมบัติเหล่านี้และคุณสมบัติอื่น ๆ ที่ Aspose.Cells API นำเสนอ หากคุณมีคำถามใด ๆ โปรดติดต่อเราผ่านทาง ฟอรัมการสนับสนุน

ดูสิ่งนี้ด้วย