บูรณาการข้อมูล Excel ไปยังการนำเสนอ PowerPoint
บทนำ
การนำเสนอ PowerPoint เป็นวิธีที่ทรงพลังในการแสดงและสื่อสารข้อมูล พวกมันมักใช้ร่วมกับสมุดงาน Excel ซึ่ง Excel ทำหน้าที่เป็นแหล่งข้อมูลโครงสร้างที่ยอดเยี่ยมและ PowerPoint มีความเก่งในการสร้างภาพข้อมูลนั้นสำหรับผู้ชม
มีหลายสถานการณ์การใช้งานที่การรวม Excel กับ PowerPoint เป็นสิ่งจำเป็น: การทำเมลเมิร์จ, การเติมข้อมูลในตาราง, การสร้างสไลด์หนึ่งต่อหนึ่งบันทึกข้อมูล (การสร้างสไลด์เป็นชุด), การสร้างสื่อการฝึกอบรม, และการรวมรายงาน Excel หลายฉบับเป็นงานนำเสนอเดียว, เป็นต้น
จนถึงตอนนี้ การดำเนินคุณลักษณะเหล่านี้ด้วย Aspose.Slides API จำเป็นต้องพึ่งพาโซลูชันของบุคคลที่สามเช่น Aspose.Cells แม้ว่าเครื่องมือเหล่านี้จะแข็งแรง แต่ก็อาจซับซ้อนเกินไปและมีค่าใช้จ่ายสูงสำหรับผู้ใช้ที่ต้องการเพียงฟังก์ชันการรวมข้อมูลพื้นฐานเท่านั้น
วิธีทำงาน
เพื่อทำให้การทำงานกับข้อมูล Excel ง่ายขึ้นและเป็นกระบวนการที่ราบรื่นยิ่งขึ้น Aspose.Slides ได้แนะนำคลาสใหม่สำหรับการอ่านข้อมูลจากสมุดงาน Excel และการนำเข้าข้อมูลลงในงานนำเสนอ คุณสมบัตินี้เปิดโอกาสใหม่ที่ทรงพลังสำหรับผู้ใช้ API ที่ต้องการใช้ Excel เป็นแหล่งข้อมูลในเวิร์กโฟลว์การนำเสนอของตน
ฟังก์ชันใหม่ได้รับการออกแบบเพื่อการเข้าถึงข้อมูลทั่วไปและไม่ได้ถูกรวมเข้ากับ Presentation Document Object Model (DOM) นั่นหมายความว่า มันไม่อนุญาตให้แก้ไขหรือบันทึกไฟล์ Excel — จุดประสงค์เพียงอย่างเดียวคือการเปิดสมุดงานและนำทางผ่านเนื้อหาของมันเพื่อดึงข้อมูลเซลล์
ที่แกนกลางของคุณสมบัตินี้คือคลาสใหม่ ExcelDataWorkbook คลาสนี้ทำให้คุณโหลดสมุดงาน Excel จากไฟล์ในเครื่องหรือสตรีม เมื่อโหลดแล้วจะให้เมธอด get_cell ที่มีหลายรูปแบบให้เลือกใช้เพื่อดึงเซลล์เฉพาะตามตำแหน่ง (เช่น ดัชนีแถวและคอลัมน์หรือช่วงที่ตั้งชื่อ)
การเรียกใช้แต่ละครั้งของ get_cell จะคืนค่าเป็นอินสแตนซ์ของคลาส ExcelDataCell วัตถุนี้แทนเซลล์เดียวในสมุดงาน Excel และให้คุณเข้าถึงค่าของมันในรูปแบบที่ง่ายและเป็นธรรมชาติมากขึ้น
นำเข้ากราฟจาก Excel
ขั้นตอนต่อไปเพื่อขยายฟังก์ชันคือคลาส ExcelWorkbookImporter คลาสยูทิลิตี้นี้ให้ฟังก์ชันสำหรับการนำเข้าข้อมูลจากสมุดงาน Excel ลงในงานนำเสนอ มันมีเมธอด add_chart_from_workbook หลายรูปแบบที่ช่วยให้คุณดึงกราฟที่เลือกจากสมุดงาน Excel ที่ระบุและเพิ่มลงในตำแหน่งสุดท้ายของคอลเลกชันรูปร่างที่กำหนดตามพิกัดที่ระบุ
สรุปแล้ว มันเป็น API ที่เบาและตรงไปตรงมาสำหรับการอ่านข้อมูล Excel — สิ่งที่นักพัฒนาหลายคนต้องการโดยไม่ต้องพึ่งพาห้องสมุดการประมวลผลสเปรดชีตแบบเต็มรูปแบบ
มาเขียนโค้ดกัน
ตัวอย่างสถานการณ์เมลเมิร์จ
ในตัวอย่างต่อไปนี้ เราจะทำตามสถานการณ์เมลเมิร์จแบบง่ายโดยสร้างงานนำเสนอหลายไฟล์จากข้อมูลที่เก็บในสมุดงาน Excel
เพื่อเริ่มต้น เราต้องการสองสิ่ง:
- สมุดงาน Excel ที่มีข้อมูล

- เทมเพลตงานนำเสนอ PowerPoint

import aspose.slides as slides
# โหลดสมุดงาน Excel ที่มีข้อมูลพนักงาน.
workbook = slides.excel.ExcelDataWorkbook("TemplateData.xlsx")
worksheet_index = 0
# โหลดเทมเพลตการนำเสนอ.
with slides.Presentation("PresentationTemplate.pptx") as template_presentation:
# วนลูปผ่านแถวของ Excel (ยกเว้นหัวข้อที่แถวที่ 0).
for row_index in range(1, 5):
# สร้างการนำเสนอใหม่สำหรับแต่ละบันทึกพนักงาน.
with slides.Presentation() as employee_presentation:
# ลบสไลด์เปล่าเริ่มต้นออก.
employee_presentation.slides.remove_at(0)
# คัดลอกสไลด์เทมเพลตไปยังการนำเสนอใหม่.
slide = employee_presentation.slides.add_clone(template_presentation.slides[0])
# ดึงย่อหน้าจากรูปร่างเป้าหมาย (สมมติว่าใช้รูปดัชนี 1).
paragraphs = slide.shapes[1].text_frame.paragraphs
# แทนที่ตำแหน่งตัวแปรด้วยข้อมูลจาก Excel.
employee_name = workbook.get_cell(worksheet_index, row_index, 0).value
name_portion = paragraphs[0].portions[0]
name_portion.text = name_portion.text.replace("{{EmployeeName}}", employee_name)
department = workbook.get_cell(worksheet_index, row_index, 1).value
department_portion = paragraphs[1].portions[0]
department_portion.text = department_portion.text.replace("{{Department}}", department)
years_of_service = str(workbook.get_cell(worksheet_index, row_index, 2).value)
years_portion = paragraphs[2].portions[0]
years_portion.text = years_portion.text.replace("{{YearsOfService}}", years_of_service)
# บันทึกการนำเสนอที่ปรับแต่งแล้วเป็นไฟล์แยก.
employee_presentation.save(f"{employee_name} Report.pptx", slides.export.SaveFormat.PPTX)

ตัวอย่างตาราง Excel
ในตัวอย่างที่สอง เราเพียงคัดลอกข้อมูลจากตาราง Excel และแสดงบนสไลด์ PowerPoint ในรูปแบบที่ดูสวยงามยิ่งขึ้น
ในตัวอย่างนี้ เราใช้สมุดงาน Excel เดียวกันจากตัวอย่างแรก ซึ่งมีตารางพนักงานแบบง่าย
# โหลดสมุดงาน Excel ที่มีข้อมูลพนักงาน.
workbook = slides.excel.ExcelDataWorkbook("TemplateData.xlsx")
worksheet_index = 0
# สร้างการนำเสนอ PowerPoint ใหม่.
with slides.Presentation() as presentation:
# เพิ่มรูปร่างตารางไปยังสไลด์แรก.
table = presentation.slides[0].shapes.add_table(
50, 200,
[200, 200, 200],
[30, 30, 30, 30, 30]
)
# เติมตาราง PowerPoint ด้วยข้อมูลจากสมุดงาน Excel.
for row_index in range(0, 5):
for column_index in range(0, 3):
cell_value = str(workbook.get_cell(worksheet_index, row_index, column_index).value)
table.columns[column_index][row_index].text_frame.text = cell_value
# บันทึกการนำเสนอที่ได้เป็นไฟล์.
presentation.save("Table.pptx", slides.export.SaveFormat.PPTX)

ตัวอย่างการนำเข้ากราฟจาก Excel
ในตัวอย่างนี้ เรานำเข้ากราฟจากแผ่นงานแรกของสมุดงาน Excel ที่ใช้ในตัวอย่างก่อนหน้า กราฟจะลิงก์ไปยังสมุดงานภายนอกในงานนำเสนอที่ได้ผลลัพธ์
แรกเราจะเพิ่มกราฟวงกลมลงในสมุดงาน Excel โดยอิงจากตารางพนักงาน

# สร้างการนำเสนอ PowerPoint ใหม่.
with slides.Presentation() as presentation:
# ดึงคอลเลกชันรูปร่างของสไลด์แรก.
shapes = presentation.slides[0].shapes
# นำเข้ากราฟที่มีชื่อ "Chart 1" จากแผ่นแรกของสมุดงานและเพิ่มไปยังคอลเลกชันรูปร่าง.
slides.importing.ExcelWorkbookImporter.add_chart_from_workbook(
shapes, 10, 10, "TemplateData.xlsx", "Sheet1", "Chart 1", False)
# บันทึกการนำเสนอที่ได้เป็นไฟล์.
presentation.save("Chart.pptx", slides.export.SaveFormat.PPTX)

ตัวอย่างการนำเข้ากราฟ Excel ทั้งหมด
ลองนึกว่าคุณมีสมุดงาน Excel เต็มไปด้วยกราฟและต้องการนำเข้าทั้งหมดเข้าสู่งานนำเสนอ แต่ละกราฟควรวางบนสไลด์ใหม่
โค้ดต่อไปนี้จะวนลูปผ่านแผ่นงานทั้งหมดในไฟล์ Excel ต้นทาง ดึงกราฟจากแต่ละแผ่นงาน และเพิ่มกราฟแต่ละอันลงบนสไลด์แยกกันโดยใช้เคาน์เท้นท์สไลด์เปล่า ในงานนำเสนอที่ได้ผลลัพธ์ จะฝังเฉพาะข้อมูลกราฟ ไม่ได้ฝังสมุดงานทั้งหมด
# โหลดสมุดงาน Excel ที่มีข้อมูลพนักงาน.
workbook = slides.excel.ExcelDataWorkbook("ExcelWithCharts.xlsx")
# สร้างการนำเสนอ PowerPoint ใหม่.
with slides.Presentation() as presentation:
# ดึงรูปแบบสไลด์เปล่า.
blank_layout = presentation.layout_slides.get_by_type(slides.SlideLayoutType.BLANK)
# รับชื่อของแผ่นงานทั้งหมดที่อยู่ในสมุดงาน Excel.
worksheet_names = workbook.get_worksheet_names()
for name in worksheet_names:
# ดึงพจนานุกรมที่แมปดัชนีกราฟกับชื่อกราฟสำหรับแผ่นงาน.
worksheet_charts = workbook.get_charts_from_worksheet(name)
for chart in worksheet_charts:
# เพิ่มสไลด์ใหม่โดยใช้รูปแบบสไลด์เปล่า.
slide = presentation.slides.add_empty_slide(blank_layout)
# นำเข้ากราฟที่ระบุจากสมุดงาน Excel ไปยังคอลเลกชันรูปร่างของสไลด์.
slides.importing.ExcelWorkbookImporter.add_chart_from_workbook(
slide.shapes, 10, 10, workbook, name, chart.key, False)
# บันทึกการนำเสนอที่ได้เป็นไฟล์.
presentation.save("Charts.pptx", slides.export.SaveFormat.PPTX)
สรุป
กลไกนี้ ซึ่งมีให้ใช้โดยตรงใน Aspose.Slides ผสานการทำงานกับข้อมูล Excel และงานนำเสนอไว้ในที่เดียว มันช่วยให้คุณสร้างสไลด์ที่มีกราฟภาพและข้อมูลที่แสดงเป็นตาราง Excel ได้ — โดยไม่ต้องใช้ไลบรารีเพิ่มเติมหรือการผสานที่ซับซ้อน