บันทึกสมุดงานเป็นรูปแบบข้อความ CSV
การแนะนำ
เมื่อต้องจัดการกับข้อมูล รูปแบบที่คุณเลือกสามารถกำหนดได้ว่าคุณสามารถทำงานกับข้อมูลนั้นได้ง่ายเพียงใด รูปแบบที่ใช้กันทั่วไปในการจัดการข้อมูลแบบตารางคือ CSV (Comma-Separated Values) หากคุณเป็นนักพัฒนาที่ทำงานกับไฟล์ Excel และจำเป็นต้องแปลงสมุดงานเป็นรูปแบบ CSV Aspose.Cells สำหรับ .NET เป็นไลบรารีที่ยอดเยี่ยมที่ช่วยลดความซับซ้อนของงานนี้ ในบทช่วยสอนนี้ เราจะอธิบายขั้นตอนในการแปลงสมุดงาน Excel เป็นรูปแบบ CSV แบบข้อความอย่างราบรื่น
ข้อกำหนดเบื้องต้น
ก่อนที่เราจะเริ่มต้น เรามาตรวจสอบให้แน่ใจก่อนว่าคุณได้เตรียมทุกอย่างให้พร้อมเพื่อเริ่มต้น:
- ความรู้พื้นฐานเกี่ยวกับ C# และ .NET: เนื่องจากเราจะเขียนโค้ดด้วย C# ความคุ้นเคยกับภาษาและกรอบงาน .NET จึงเป็นสิ่งสำคัญ
- ไลบรารี Aspose.Cells: ตรวจสอบให้แน่ใจว่าคุณได้ติดตั้งไลบรารี Aspose.Cells สำหรับ .NET ในสภาพแวดล้อมการพัฒนาของคุณแล้ว คุณสามารถดาวน์โหลดได้ที่นี่.
- Visual Studio หรือ IDE C# ใดๆ: คุณจะต้องมีสภาพแวดล้อมการพัฒนาแบบบูรณาการ (IDE) เพื่อเขียนและดำเนินการโค้ดของคุณ Visual Studio เป็นตัวเลือกยอดนิยม
- เวิร์กบุ๊ก Excel: เตรียมเวิร์กบุ๊ก Excel ตัวอย่าง (เช่น “book1.xls”) ที่มีข้อมูลบางส่วนเพื่อทดสอบการแปลง
แพ็คเกจนำเข้า
ตอนนี้เราได้ครอบคลุมข้อกำหนดเบื้องต้นแล้ว ขั้นตอนแรกของกระบวนการคือการนำเข้าแพ็คเกจที่จำเป็น ในโปรเจ็กต์ C# ของคุณ คุณต้องรวมเนมสเปซต่อไปนี้ไว้ที่ด้านบนของไฟล์โค้ดของคุณ:
using System.IO;
using Aspose.Cells;
using System;
เนมสเปซเหล่านี้จะทำให้คุณสามารถเข้าถึงคลาสและวิธีการที่จำเป็นสำหรับการทำงานกับไฟล์ Excel และการจัดการสตรีมหน่วยความจำ
ขั้นตอนที่ 1: กำหนดเส้นทางไปยังไดเร็กทอรีเอกสาร
ขั้นตอนแรกในกระบวนการของเราคือการกำหนดว่าเอกสารของเรา (สมุดงาน Excel) จะถูกเก็บไว้ที่ไหน ขั้นตอนนี้มีความสำคัญเนื่องจากจะช่วยให้โปรแกรมของเราทราบว่าจะค้นหาไฟล์ที่ต้องการประมวลผลได้จากที่ใด
// เส้นทางไปยังไดเร็กทอรีเอกสาร
string dataDir = "Your Document Directory";
อย่าลืมเปลี่ยน"Your Document Directory"
โดยใช้เส้นทางจริงที่ไฟล์ “book1.xls” ของคุณอยู่ ซึ่งอาจเป็นไดเร็กทอรีบนคอมพิวเตอร์ของคุณหรือเส้นทางไปยังเซิร์ฟเวอร์ก็ได้
ขั้นตอนที่ 2: โหลดสมุดงานต้นฉบับของคุณ
ต่อไปเราจะต้องโหลดเวิร์กบุ๊ก Excel ที่จะแปลงเป็นรูปแบบ CSV
// โหลดสมุดงานต้นฉบับของคุณ
Workbook workbook = new Workbook(dataDir + "book1.xls");
การWorkbook
คลาสจากไลบรารี Aspose.Cells ช่วยให้จัดการและเข้าถึงเวิร์กบุ๊ก Excel ได้ โดยการผ่านเส้นทางไฟล์ เราจะโหลดเวิร์กบุ๊กที่ระบุสำหรับการประมวลผล
ขั้นตอนที่ 3: เริ่มต้นอาร์เรย์ไบต์สำหรับข้อมูลเวิร์กบุ๊ก
ก่อนที่เราจะเริ่มแปลงเวิร์กบุ๊กเป็น CSV เราก็ต้องสร้างอาร์เรย์ไบต์ว่างก่อน ซึ่งจะเก็บข้อมูลเวิร์กชีตทั้งหมดไว้
// อาร์เรย์ 0 ไบต์
byte[] workbookData = new byte[0];
อาร์เรย์ไบต์นี้จะรวมข้อมูลจากแต่ละเวิร์กชีตเข้าเป็นโครงสร้างเดียวที่เราสามารถเขียนลงในไฟล์ในภายหลังได้
ขั้นตอนที่ 4: ตั้งค่าตัวเลือกการบันทึกข้อความ
ตอนนี้เรามาตั้งค่าตัวเลือกในการบันทึกรูปแบบข้อความกัน คุณสามารถเลือกตัวแบ่งแบบกำหนดเองหรือใช้แท็บก็ได้
// ตัวเลือกการบันทึกข้อความ คุณสามารถใช้ตัวคั่นประเภทใดก็ได้
TxtSaveOptions opts = new TxtSaveOptions();
opts.Separator = '\t'; // ตั้งค่าแท็บเป็นตัวคั่น
ในตัวอย่างนี้ เราใช้อักขระแท็บเป็นตัวคั่น คุณสามารถแทนที่'\t'
ด้วยอักขระใดๆ ก็ได้ที่คุณต้องการ เช่น เครื่องหมายจุลภาค (,
) ขึ้นอยู่กับว่าคุณต้องการให้ CSV ของคุณจัดรูปแบบอย่างไร
ขั้นตอนที่ 5: ทำซ้ำในแต่ละเวิร์กชีต
ต่อไปเราจะวนซ้ำผ่านเวิร์กชีตทั้งหมดภายในเวิร์กบุ๊ก และบันทึกแต่ละแผ่นลงในworkbookData
อาร์เรย์ แต่คุณต้องเลือกแผ่นงานที่จะทำงานก่อน
// คัดลอกข้อมูลเวิร์กชีตแต่ละแผ่นในรูปแบบข้อความภายในอาร์เรย์ข้อมูลเวิร์กบุ๊ก
for (int idx = 0; idx < workbook.Worksheets.Count; idx++)
{
// บันทึกแผ่นงานที่ใช้งานอยู่เป็นรูปแบบข้อความ
MemoryStream ms = new MemoryStream();
workbook.Worksheets.ActiveSheetIndex = idx;
workbook.Save(ms, opts);
ลูปนี้จะดำเนินการผ่านแต่ละแผ่นงานในเวิร์กบุ๊กActiveSheetIndex
ถูกตั้งค่าให้บันทึกเวิร์กชีตปัจจุบันทุกครั้งที่ผ่านลูป ผลลัพธ์จะถูกบันทึกลงในหน่วยความจำโดยใช้MemoryStream
.
ขั้นตอนที่ 6: ดึงข้อมูลเวิร์กชีต
หลังจากบันทึกเวิร์กชีตลงในสตรีมหน่วยความจำแล้ว ขั้นตอนถัดไปคือการดึงข้อมูลนี้และผนวกเข้ากับworkbookData
อาร์เรย์
// บันทึกข้อมูลแผ่นงานลงในอาร์เรย์ข้อมูลแผ่นงาน
ms.Position = 0; // รีเซ็ตตำแหน่งของสตรีมหน่วยความจำ
byte[] sheetData = ms.ToArray(); // รับอาร์เรย์ไบต์
ms.Position = 0;
รีเซ็ตตำแหน่งสำหรับการอ่านหลังจากเขียน จากนั้นเราใช้ToArray()
เพื่อแปลงสตรีมหน่วยความจำเป็นอาร์เรย์ไบต์ที่เก็บข้อมูลเวิร์กชีต
ขั้นตอนที่ 7: รวมข้อมูลเวิร์กชีต
ตอนนี้เราจะรวมข้อมูลจากแต่ละเวิร์กชีตเป็นแผ่นเดียวworkbookData
อาร์เรย์ถูกเริ่มต้นไว้ก่อนหน้านี้
// รวมข้อมูลเวิร์กชีตนี้ลงในอาร์เรย์ข้อมูลเวิร์กบุ๊ก
byte[] combinedArray = new byte[workbookData.Length + sheetData.Length];
Array.Copy(workbookData, 0, combinedArray, 0, workbookData.Length);
Array.Copy(sheetData, 0, combinedArray, workbookData.Length, sheetData.Length);
workbookData = combinedArray;
}
เราสร้างอาร์เรย์ใหม่ที่ใหญ่พอที่จะเก็บข้อมูลเวิร์กบุ๊กที่มีอยู่และข้อมูลเวิร์กชีตใหม่ จากนั้นจึงคัดลอกข้อมูลที่มีอยู่และข้อมูลใหม่ลงในอาร์เรย์รวมนี้เพื่อใช้ในภายหลัง
ขั้นตอนที่ 8: บันทึกข้อมูลเวิร์กบุ๊กทั้งหมดลงในไฟล์
ในที่สุดด้วยข้อมูลทั้งหมดรวมกันในของเราworkbookData
อาร์เรย์ เราสามารถบันทึกอาร์เรย์นี้ไปยังเส้นทางไฟล์ที่ระบุได้
//บันทึกข้อมูลสมุดงานทั้งหมดลงในไฟล์
File.WriteAllBytes(dataDir + "out.txt", workbookData);
WriteAllBytes
นำอาร์เรย์ไบต์รวมมาเขียนลงในไฟล์ข้อความชื่อ “out.txt” ในไดเร็กทอรีที่ระบุ
บทสรุป
และแล้วคุณก็ทำได้! คุณได้แปลงสมุดงาน Excel เป็นรูปแบบ CSV สำเร็จแล้วโดยใช้ Aspose.Cells สำหรับ .NET กระบวนการนี้ไม่เพียงแต่มีประสิทธิภาพเท่านั้น แต่ยังช่วยให้จัดการข้อมูล Excel ได้ง่ายขึ้นสำหรับการวิเคราะห์หรือการรายงานเพิ่มเติม ตอนนี้คุณสามารถทำให้กระบวนการประมวลผลข้อมูลของคุณเป็นแบบอัตโนมัติหรือแม้กระทั่งรวมฟังก์ชันนี้เข้ากับแอปพลิเคชันขนาดใหญ่
คำถามที่พบบ่อย
ฉันสามารถใช้ตัวคั่นที่แตกต่างกันสำหรับไฟล์ CSV ได้หรือไม่
ใช่ คุณสามารถเปลี่ยนแปลงได้opts.Separator
เป็นอักขระใดๆ ก็ได้ที่คุณต้องการ เช่น เครื่องหมายจุลภาค หรือ ท่อ
การใช้ Aspose.Cells ฟรีหรือไม่?
Aspose.Cells ไม่ฟรี แต่คุณสามารถทดลองใช้งานฟรีได้ที่นี่.
ฉันสามารถบันทึกไฟล์ในรูปแบบใดได้บ้างนอกจาก CSV?
Aspose.Cells ช่วยให้สามารถบันทึกเป็นรูปแบบต่างๆ ได้หลายแบบ รวมถึง XLSX, PDF และอื่นๆ อีกมากมาย
ฉันสามารถประมวลผลไฟล์ Excel ขนาดใหญ่โดยใช้ Aspose.Cells ได้หรือไม่
ใช่ Aspose.Cells ได้รับการออกแบบมาเพื่อจัดการไฟล์ขนาดใหญ่อย่างมีประสิทธิภาพ แต่ประสิทธิภาพอาจขึ้นอยู่กับทรัพยากรระบบ
ฉันสามารถหาเอกสารรายละเอียดเพิ่มเติมได้ที่ไหน
คุณสามารถค้นหาเอกสารและตัวอย่างที่ครอบคลุมได้ที่เว็บไซต์อ้างอิง.