วิธีบันทึกสเปรดชีตเป็น CSV ใน Python
ปัญหา
บันทึกเวิร์กบุ๊ก Excel (.xlsx) เป็นไฟล์ CSV โดยใช้ Aspose.Cells FOSS ใน Python โหลดเวิร์กบุ๊กด้วย Workbook() แล้วเรียก save_as_csv() เพื่อเขียนเวิร์กชีตที่ใช้งานอยู่ไปยังไฟล์ค่าที่คั่นด้วยเครื่องหมายจุลภาค หรือส่งออบเจ็กต์ CSVSaveOptions เพื่อควบคุมตัวคั่น การเข้ารหัส และพฤติกรรมการใส่เครื่องหมายคำพูด
ข้อกำหนดเบื้องต้น
ในการบันทึกสเปรดชีตเป็น CSV โดยใช้ Aspose.Cells FOSS ใน Python ตรวจสอบให้แน่ใจว่าสภาพแวดล้อมของคุณตรงตามข้อกำหนดต่อไปนี้
- ติดตั้ง Python 3.7 หรือใหม่กว่า
- ติดตั้ง Aspose.Cells FOSS ผ่าน
pip install aspose-cells-foss>=26.3.1 - นำเข้าไลบรารีโดยใช้
from aspose.cells_foss import Workbook - ความรู้พื้นฐานเกี่ยวกับการจัดการไฟล์ใน Python
ขั้นตอนการบันทึก
ขั้นตอนที่ 1: ติดตั้งไลบรารี
ติดตั้ง Aspose.Cells FOSS จาก PyPI ไม่จำเป็นต้องมีไฟล์ลิขสิทธิ์สำหรับการใช้งาน FOSS
pip install aspose-cells-fossขั้นตอนที่ 2: โหลดเวิร์กบุ๊ก
สร้างอินสแตนซ์ Workbook ด้วยเส้นทางไปยังไฟล์ .xlsx ที่มีอยู่ คอนสตรักเตอร์รับพารามิเตอร์ password ที่เป็นทางเลือกสำหรับเวิร์กบุ๊กที่ได้รับการป้องกัน
from aspose.cells_foss import Workbook
workbook = Workbook("input.xlsx")หากต้องการทำงานกับเวิร์กบุ๊กใหม่ ให้ละเว้นเส้นทางไฟล์:
from aspose.cells_foss import Workbook
workbook = Workbook()
worksheet = workbook.worksheets[0]
# Populate some cells
worksheet.cells["A1"].value = "Product"
worksheet.cells["B1"].value = "Price"
worksheet.cells["A2"].value = "Widget"
worksheet.cells["B2"].value = 9.99
worksheet.cells["A3"].value = "Gadget"
worksheet.cells["B3"].value = 24.95ขั้นตอนที่ 3: บันทึกชีตที่ใช้งานอยู่เป็น CSV
เรียก Workbook.save_as_csv() ด้วยเส้นทางเอาต์พุตที่ต้องการ เมธอดเขียนเวิร์กชีตแรก (ที่ใช้งานอยู่) ตามค่าเริ่มต้น
workbook.save_as_csv("output.csv")หรือใช้เมธอด Workbook.save() ทั่วไป — Aspose.Cells FOSS อนุมานรูปแบบ CSV จากนามสกุล .csv:
workbook.save("output.csv")ทั้งสองการเรียกให้ผลลัพธ์เหมือนกันเมื่อไม่จำเป็นต้องมีตัวเลือกที่กำหนดเอง
ขั้นตอนที่ 4: บันทึกด้วยตัวเลือก CSV
Workbook.save_as_csv() รับอินสแตนซ์ CSVSaveOptions ที่เป็นทางเลือกเป็นอาร์กิวเมนต์ที่สอง สร้างอินสแตนซ์ CSVSaveOptions จาก aspose.cells_foss.csv_handler และส่งผ่านตรงๆ เพื่อควบคุมพฤติกรรมการส่งออก เช่น การเลือกตัวคั่นหรือการเข้ารหัสที่ไม่ใช่ค่าเริ่มต้น
from aspose.cells_foss import Workbook
from aspose.cells_foss.csv_handler import CSVSaveOptions
workbook = Workbook("input.xlsx")
# Create options instance — configure attributes per your environment's needs
options = CSVSaveOptions()
workbook.save_as_csv("output_custom.csv", options)เมื่อไม่ส่ง CSVSaveOptions save_as_csv() จะใช้ค่าเริ่มต้นในตัวของไลบรารี (ตัวคั่นเครื่องหมายจุลภาค การเข้ารหัส UTF-8) ส่งออบเจ็กต์ตัวเลือกเมื่อใดก็ตามที่คุณต้องการแทนที่ค่าเริ่มต้นเหล่านั้นด้วยโปรแกรม
ขั้นตอนที่ 5: ส่งออกเวิร์กชีตเฉพาะ
เมื่อเวิร์กบุ๊กมีหลายชีต ชีตที่ใช้งานอยู่จะถูกส่งออก ใช้ Workbook.set_active_worksheet() เพื่อเลือกชีตที่จะส่งออกก่อนบันทึก
from aspose.cells_foss import Workbook
workbook = Workbook("multi_sheet.xlsx")
# Export the second worksheet (index 1)
workbook.set_active_worksheet(1)
workbook.save_as_csv("sheet2_output.csv")หากต้องการส่งออกทุกชีตไปยังไฟล์ CSV ของตัวเอง ให้วนซ้ำ workbook.worksheets:
from aspose.cells_foss import Workbook
workbook = Workbook("multi_sheet.xlsx")
for index in range(len(workbook.worksheets)):
ws = workbook.get_worksheet_by_index(index)
workbook.set_active_worksheet(index)
workbook.save_as_csv(f"sheet_{ws.name}.csv")ตัวอย่างที่สมบูรณ์
ตัวอย่างแบบสแตนด์อโลนต่อไปนี้สร้างเวิร์กบุ๊ก เติมข้อมูลตัวอย่าง และบันทึกเป็นทั้ง CSV มาตรฐานและ CSV ที่คั่นด้วยเครื่องหมายอัฒภาค
from aspose.cells_foss import Workbook
from aspose.cells_foss.csv_handler import CSVSaveOptions
# Create workbook and populate data
workbook = Workbook()
worksheet = workbook.worksheets[0]
headers = ["Name", "Department", "Salary"]
rows = [
["Alice", "Engineering", 95000],
["Bob", "Marketing", 72000],
["Carol", "Finance", 81000],
]
for col, header in enumerate(headers):
col_letter = chr(ord("A") + col)
worksheet.cells[f"{col_letter}1"].value = header
for row_idx, row in enumerate(rows, start=2):
for col_idx, val in enumerate(row):
col_letter = chr(ord("A") + col_idx)
worksheet.cells[f"{col_letter}{row_idx}"].value = val
# Save as standard CSV (default options)
workbook.save_as_csv("employees.csv")
# Save with explicit CSVSaveOptions instance
options = CSVSaveOptions()
workbook.save_as_csv("employees_custom.csv", options)
print("CSV files written successfully.")ปัญหาทั่วไป
ไฟล์เอาต์พุตว่างเปล่า
หากไฟล์ CSV เอาต์พุตว่างเปล่าหรือมีเฉพาะบรรทัดว่าง ให้ตรวจสอบว่าค่าเซลล์ถูกกำหนดก่อนที่จะเรียก save_as_csv() เมธอดนี้ส่งออกเวิร์กชีตที่ใช้งานอยู่ — ยืนยันว่าชีตที่ถูกต้องเป็นชีตที่ใช้งานอยู่โดยใช้ workbook.get_active_worksheet()
ปัญหาการเข้ารหัส (อักขระที่ไม่สามารถอ่านได้)
เมื่อเปิด CSV ใน Excel และเห็นอักขระที่เสียหาย ให้ตรวจสอบการเข้ารหัสที่ใช้ระหว่างการส่งออก Aspose.Cells FOSS ใช้ UTF-8 ตามค่าเริ่มต้น Excel บน Windows อาจคาดหวัง Byte Order Mark (BOM) เพื่อรับรู้การเข้ารหัสอย่างถูกต้อง กำหนดค่าการเข้ารหัสผ่าน CSVSaveOptions และส่งไปยัง save_as_csv()
เวิร์กบุ๊กหลายชีตส่งออกเพียงชีตเดียว
CSV เป็นรูปแบบตารางเดียว สามารถบันทึกได้เพียงหนึ่งเวิร์กชีตต่อไฟล์ ส่งออกแต่ละชีตแยกกันโดยใช้ set_active_worksheet(index) ดังที่แสดงในขั้นตอนที่ 5
เซลล์ที่มีตัวคั่น
หากค่าเซลล์มีอักขระตัวคั่น (เช่น เครื่องหมายจุลภาคในเอาต์พุตที่คั่นด้วยเครื่องหมายจุลภาค) Aspose.Cells FOSS จะใส่เครื่องหมายคำพูดล้อมรอบค่าโดยอัตโนมัติระหว่างการส่งออก ใช้ CSVSaveOptions เพื่อกำหนดพฤติกรรมการใส่เครื่องหมายคำพูดหากจำเป็น
คำถามที่พบบ่อย
ถาม: workbook.save("output.csv") ให้ผลลัพธ์เหมือนกันกับ save_as_csv() หรือไม่?
ใช่ Workbook.save() ตรวจสอบนามสกุลไฟล์และมอบหมายให้ save_as_csv() เมื่อนามสกุลคือ .csv เรียก save_as_csv() โดยตรงและส่งอินสแตนซ์ CSVSaveOptions เมื่อคุณต้องการกำหนดการส่งออกให้เกินกว่าค่าเริ่มต้นในตัว
ถาม: ฉันสามารถส่งออกไปยังสตริง CSV แทนไฟล์ได้หรือไม่?
ใช่ ใช้ CSVHandler.save_csv_to_string(workbook, options) จาก aspose.cells_foss.csv_handler ซึ่งจะส่งคืนเนื้อหา CSV เป็นสตริง Python ที่คุณสามารถเขียนลงในสตรีม อัปโหลด หรือประมวลผลเพิ่มเติมได้โดยไม่ต้องสัมผัสระบบไฟล์
from aspose.cells_foss import Workbook
from aspose.cells_foss.csv_handler import CSVHandler, CSVSaveOptions
workbook = Workbook("input.xlsx")
csv_string = CSVHandler().save_csv_to_string(workbook, CSVSaveOptions())
print(csv_string)ถาม: ฉันจะโหลด CSV กลับเข้าสู่เวิร์กบุ๊กหลังจากบันทึกได้อย่างไร?
ใช้ Workbook.load_csv("file.csv") บนอินสแตนซ์ Workbook ที่มีอยู่ หรือเรียกฟังก์ชันสะดวก load_csv_workbook("file.csv") จาก aspose.cells_foss.csv_handler เพื่อรับเวิร์กบุ๊กที่พร้อมใช้งานในขั้นตอนเดียว
ถาม: รองรับ Python เวอร์ชันใดบ้าง?
Aspose.Cells FOSS ต้องการ Python 3.7 หรือใหม่กว่า ไม่จำเป็นต้องมีส่วนขยายเนทีฟเพิ่มเติมสำหรับการส่งออก CSV ไลบรารีเป็น Python บริสุทธิ์
ถาม: ฉันสามารถบันทึกเฉพาะบางส่วนของเวิร์กชีต (ช่วงเซลล์) เป็น CSV ได้หรือไม่?
Aspose.Cells FOSS ส่งออกช่วงที่ใช้งานทั้งหมดของเวิร์กชีตที่ใช้งานอยู่ หากต้องการจำกัดเอาต์พุตให้อยู่ในช่วงที่กำหนด ให้คัดลอกเซลล์ที่ต้องการไปยังเวิร์กบุ๊กชั่วคราวและส่งออกเวิร์กบุ๊กนั้น
ดูเพิ่มเติม
- วิธีบันทึกไฟล์ด้วย Aspose.Cells FOSS — ภาพรวมการบันทึกทั่วไปที่ครอบคลุม XLSX และ Markdown
- วิธีแปลง CSV เป็น JSON ใน Python — โหลด CSV และส่งออกเป็นรูปแบบ JSON
- วิธีส่งออก Excel เป็น Markdown ใน Python — การส่งออกตาราง Markdown โดยใช้
save_as_markdown() - Aspose.Cells FOSS สำหรับ Python: คู่มือนักพัฒนา — เอกสารประกอบฟีเจอร์อย่างครอบคลุม
- เอกสาร API —
Workbook,CSVHandler,CSVSaveOptions