จัดการแถวและคอลัมน์ในตาราง PowerPoint ด้วย Java
บทนำ
Aspose.Slides for Java ช่วยให้คุณจัดการโครงสร้างและการจัดรูปแบบตารางในงานนำเสนอ PowerPoint ผ่านคลาส ตาราง และอินเทอร์เฟซ ITable คุณสามารถกำหนดแถวหัวเรื่อง, คัดลอกหรือลบแถวและคอลัมน์, และใช้การจัดรูปแบบข้อความกับแถวหรือคอลัมน์ทั้งหมดได้
บทความนี้อธิบายการดำเนินการเหล่านี้ด้วยตัวอย่าง Java นอกจากนี้ยังแสดงวิธีดึงค่าตั้งล่วงหน้าของสไตล์ตารางเพื่อให้คุณสามารถใช้งานซ้ำได้ ดัชนีแถวและคอลัมน์ของตารางเริ่มนับจากศูนย์
ควบคุมความสูงของแถว
ใช้ IRow.setMinimalHeight เพื่อตั้งค่าความสูงขั้นต่ำของแถวเป็นหน่วยจุด เป็นค่าต่ำสุด ไม่ใช่ความสูงคงที่ IRow.getHeight จะคืนค่าความสูงจริง เข้าถึงแถวผ่าน ITable.getRows.
ตัวอย่างโหลดไฟล์ row-height-input.pptx ซึ่งมีตารางเป็นรูปร่างแรกบนสไลด์แรก แถวแรกเริ่มที่ 70 จุด เซลล์ใช้ข้อความ Arial ขนาด 18 จุด, มีการตัดบรรทัด, และระยะขอบบนและล่าง 6 จุด; ข้อความที่ยาวในคอลัมน์ที่สองตัดบรรทัดหลายบรรทัด ตัวอย่างเพิ่มค่าขั้นต่ำเป็น 100 จุด แล้วลดลงเหลือ 20 จุด พิมพ์ความสูงจริงหลังการเปลี่ยนแปลงแต่ละครั้ง และบันทึกผลลัพธ์ทั้งสอง
import com.aspose.slides.*;
Presentation presentation = new Presentation("row-height-input.pptx");
try {
ISlide slide = presentation.getSlides().get_Item(0);
ITable table = (ITable)slide.getShapes().get_Item(0);
IRow row = table.getRows().get_Item(0);
row.setMinimalHeight(100);
System.out.printf("Increased: minimum = %.1f, actual = %.1f pt%n", row.getMinimalHeight(), row.getHeight());
presentation.save("row-height-increased.pptx", SaveFormat.Pptx);
row.setMinimalHeight(20);
System.out.printf("Decreased: minimum = %.1f, actual = %.1f pt%n", row.getMinimalHeight(), row.getHeight());
presentation.save("row-height-decreased.pptx", SaveFormat.Pptx);
} finally {
presentation.dispose();
}
ด้วยงานนำเสนอที่ให้มา การเพิ่มค่าขั้นต่ำจะเพิ่มพื้นที่ให้กับแถว การลดค่าขั้นต่ำจะลบพื้นที่ส่วนเกินนั้นออก แต่ความสูงจริงยังคงมากกว่า 20 จุดเพราะข้อความและระยะขอบของเซลล์ต้องการพื้นที่มากกว่านั้น การลดค่าขั้นต่ำอย่างเดียวไม่สามารถบังคับให้แถวต่ำกว่าพื้นที่ที่เนื้อหาต้องการได้
หลายปัจจัยส่งผลต่อความสูงจริง:
- ข้อความและขนาดฟอนต์: ข้อความที่ยาว, การแทรกการขึ้นบรรทัดใหม่โดยเจตนา, หรือฟอนต์ที่ใหญ่กว่า สามารถต้องการพื้นที่แนวตั้งมากขึ้น
- การตัดบรรทัดและความกว้างของคอลัมน์: เมื่อเปิดการตัดบรรทัด, การลดความกว้างของคอลัมน์ด้วย IColumn.setWidth จะทำให้เกิดบรรทัดเพิ่มขึ้น คอลัมน์ที่กว้างขึ้นสามารถลดพื้นที่ที่ต้องการในแนวตั้ง
- ระยะขอบของเซลล์: ICell.setMarginTop และ ICell.setMarginBottom เพิ่มพื้นที่แนวตั้ง ICell.setMarginLeft และ ICell.setMarginRight ลดความกว้างที่ใช้สำหรับข้อความและอาจทำให้เกิดการตัดบรรทัดเพิ่มเติม
สำหรับตารางนี้ไม่มีการรวมเซลล์ เซลล์ที่ต้องการพื้นที่แนวตั้งมากที่สุดจะกำหนดขอบเขตล่างของแถวทั้งหมด หากต้องการทำให้แถวสั้นลง คุณอาจต้องทำให้ข้อความสั้นลง, ลดขนาดฟอนต์หรือระยะขอบ, หรือทำให้คอลัมน์กว้างขึ้น
ภาพด้านล่างแสดงตารางเดียวกันในสเกลเดียวกัน ในผลลัพธ์ที่แสดง ความสูงจริงคือ 70, 100 และ 55.2 จุด: แถวสุดท้ายยังคงสูงกว่าค่าขั้นต่ำ 20 จุด การวัดข้อความที่แม่นยำอาจแตกต่างกันตามฟอนต์ที่มีในสภาพแวดล้อมของคุณ ดาวน์โหลดผลลัพธ์ที่บันทึกไว้: เพิ่มขั้นต่ำ และ ลดขั้นต่ำ
| ต้นฉบับ: ขั้นต่ำ 70 pt, จริง 70 pt | เพิ่ม: ขั้นต่ำ 100 pt, จริง 100 pt | ลด: ขั้นต่ำ 20 pt, ความสูงจริง 55.2 pt |
|---|---|---|
![]() |
![]() |
![]() |
ตั้งค่าแถวแรกเป็นหัวเรื่อง
ใช้เมธอด setFirstRow เพื่อทำเครื่องหมายแถวแรกสำหรับการจัดรูปแบบหัวเรื่อง การแสดงผลขึ้นกับสไตล์ตารางที่ใช้กับตาราง
- โหลดงานนำเสนอด้วยคลาส Presentation
- เข้าถึงสไลด์แรก
- เข้าถึงตารางที่เก็บเป็นรูปร่างแรกบนสไลด์
- เปิดการจัดรูปแบบหัวเรื่องสำหรับแถวแรกของมัน
- บันทึกงานนำเสนอที่แก้ไขแล้ว
ตัวอย่างต้องการไฟล์ table.pptx ที่มีตารางเป็นรูปร่างแรกบนสไลด์แรก จะเปิดการจัดรูปแบบหัวเรื่องสำหรับแถวแรกและบันทึกเป็น First_row_header.pptx
import com.aspose.slides.*;
Presentation presentation = new Presentation("table.pptx");
try {
ISlide slide = presentation.getSlides().get_Item(0);
ITable table = (ITable)slide.getShapes().get_Item(0);
table.setFirstRow(true);
presentation.save("First_row_header.pptx", SaveFormat.Pptx);
} finally {
presentation.dispose();
}
คัดลอกแถวหรือคอลัมน์ของตาราง
คัดลอกแถวหรือคอลัมน์เพื่อใช้เนื้อหาและการจัดรูปแบบซ้ำ คุณสามารถต่อท้ายสำเนาที่ส่วนท้ายของตารางหรือแทรกในตำแหน่งเฉพาะ
- โหลดงานนำเสนอด้วยคลาส Presentation
- เข้าถึงสไลด์แรก
- กำหนดความกว้างของคอลัมน์และความสูงของแถว
- เพิ่มตารางด้วยเมธอด addTable
- คัดลอกแถวที่ต้องการ
- คัดลอกคอลัมน์ที่ต้องการ
- บันทึกงานนำเสนอที่แก้ไขแล้ว
ตัวอย่างต้องการไฟล์ Test.pptx ที่มีอย่างน้อยหนึ่งสไลด์ จะสร้างตารางที่มีสามคอลัมน์และห้าแถว โดยกำหนดขนาดเป็นหน่วยจุด จะต่อท้ายสำเนาแถวแรกและคอลัมน์แรก จากนั้นแทรกสำเนาแถวที่สองและคอลัมน์ที่สองที่ตำแหน่งดัชนี 3 (ตำแหน่งที่สี่) ตารางผลลัพธ์จะมีเจ็ดแถวและห้าคอลัมน์ อาร์กิวเมนต์ false ปิดการคัดลอกเข้าแถวหรือคอลัมน์ที่รวมอยู่ติดกัน; ตารางนี้ไม่มีเซลล์ที่รวมกัน
import com.aspose.slides.*;
Presentation presentation = new Presentation("Test.pptx");
try {
ISlide slide = presentation.getSlides().get_Item(0);
double[] columnWidths = new double[] { 50, 50, 50 };
double[] rowHeights = new double[] { 50, 30, 30, 30, 30 };
ITable table = slide.getShapes().addTable(100, 50, columnWidths, rowHeights);
table.get_Item(0, 0).getTextFrame().setText("Row 1 Cell 1");
table.get_Item(1, 0).getTextFrame().setText("Row 1 Cell 2");
table.getRows().addClone(table.getRows().get_Item(0), false);
table.get_Item(0, 1).getTextFrame().setText("Row 2 Cell 1");
table.get_Item(1, 1).getTextFrame().setText("Row 2 Cell 2");
table.getRows().insertClone(3, table.getRows().get_Item(1), false);
table.getColumns().addClone(table.getColumns().get_Item(0), false);
table.getColumns().insertClone(3, table.getColumns().get_Item(1), false);
presentation.save("table_out.pptx", SaveFormat.Pptx);
} finally {
presentation.dispose();
}
ลบแถวหรือคอลัมน์จากตาราง
ลบแถวหรือคอลัมน์ที่ไม่จำเป็นอีกต่อไปในตาราง การลบรายการจะทำให้ดัชนีของแถวหรือคอลัมน์ที่ตามมาถูกปรับเปลี่ยน
- สร้างงานนำเสนอด้วยคลาส Presentation
- เข้าถึงสไลด์แรก
- กำหนดความกว้างของคอลัมน์และความสูงของแถว
- เพิ่มตารางด้วยเมธอด addTable
- ลบแถวที่สองและคอลัมน์ที่สอง
- บันทึกงานนำเสนอที่แก้ไขแล้ว
ตัวอย่างนี้สร้างตาราง 3x3 และลบแถวและคอลัมน์ที่ดัชนี 1 ทำให้เหลือตาราง 2x2 ในไฟล์ TestTable_out.pptx ขนาดเป็นหน่วยจุด อาร์กิวเมนต์ false ปิดการลบแถวหรือคอลัมน์ที่รวมอยู่ติดกัน; ตารางนี้ไม่มีเซลล์ที่รวมกัน
import com.aspose.slides.*;
Presentation presentation = new Presentation();
try {
ISlide slide = presentation.getSlides().get_Item(0);
double[] columnWidths = new double[] { 100, 50, 30 };
double[] rowHeights = new double[] { 30, 50, 30 };
ITable table = slide.getShapes().addTable(100, 100, columnWidths, rowHeights);
table.getRows().removeAt(1, false);
table.getColumns().removeAt(1, false);
presentation.save("TestTable_out.pptx", SaveFormat.Pptx);
} finally {
presentation.dispose();
}
ตั้งค่าการจัดรูปแบบข้อความระดับแถวของตาราง
ใช้การจัดรูปแบบข้อความกับแถวทั้งหมดเพื่อให้เซลล์ทั้งหมดสอดคล้อง คุณสามารถตั้งค่าคุณสมบัติดีไซน์ฟอนต์, การจัดรูปแบบย่อหน้า, และทิศทางข้อความโดยไม่ต้องจัดรูปแบบแต่ละเซลล์แยกกัน
- โหลดงานนำเสนอด้วยคลาส Presentation
- เข้าถึงตารางบนสไลด์แรก
- ใช้เมธอด setFontHeight สำหรับแถวแรก
- ใช้เมธอด setAlignment และ setMarginRight สำหรับแถวแรก
- ใช้เมธอด setTextVerticalType สำหรับแถวที่สอง
- บันทึกงานนำเสนอที่แก้ไขแล้ว
ตัวอย่างต้องการไฟล์ table.pptx ที่มีตารางเป็นรูปร่างแรกบนสไลด์แรกและมีอย่างน้อยสองแถว จะใช้ข้อความขนาด 25 จุด, จัดชิดขวา, และตั้งระยะขอบย่อหน้าขวา 20 จุดสำหรับแถวแรก จากนั้นตั้งข้อความแนวตั้งในแถวที่สอง
import com.aspose.slides.*;
Presentation presentation = new Presentation("table.pptx");
try {
ISlide slide = presentation.getSlides().get_Item(0);
ITable table = (ITable)slide.getShapes().get_Item(0);
PortionFormat portionFormat = new PortionFormat();
portionFormat.setFontHeight(25);
table.getRows().get_Item(0).setTextFormat(portionFormat);
ParagraphFormat paragraphFormat = new ParagraphFormat();
paragraphFormat.setAlignment(TextAlignment.Right);
paragraphFormat.setMarginRight(20);
table.getRows().get_Item(0).setTextFormat(paragraphFormat);
TextFrameFormat textFrameFormat = new TextFrameFormat();
textFrameFormat.setTextVerticalType(TextVerticalType.Vertical);
table.getRows().get_Item(1).setTextFormat(textFrameFormat);
presentation.save("row_formatting.pptx", SaveFormat.Pptx);
} finally {
presentation.dispose();
}
ตั้งค่าการจัดรูปแบบข้อความระดับคอลัมน์ของตาราง
ใช้การจัดรูปแบบข้อความกับคอลัมน์ทั้งหมดเพื่อให้เซลล์ทั้งหมดสอดคล้อง คุณสามารถตั้งค่าคุณสมบัติดีไซน์ฟอนต์, การจัดรูปแบบย่อหน้า, และทิศทางข้อความโดยไม่ต้องจัดรูปแบบแต่ละเซลล์แยกกัน
- โหลดงานนำเสนอด้วยคลาส Presentation
- เข้าถึงตารางบนสไลด์แรก
- ใช้เมธอด setFontHeight สำหรับคอลัมน์แรก
- ใช้เมธอด setAlignment และ setMarginRight สำหรับคอลัมน์แรก
- ใช้เมธอด setTextVerticalType สำหรับคอลัมน์ที่สอง
- บันทึกงานนำเสนอที่แก้ไขแล้ว
ตัวอย่างต้องการไฟล์ table.pptx ที่มีตารางเป็นรูปร่างแรกบนสไลด์แรกและมีอย่างน้อยสองคอลัมน์ จะใช้ข้อความขนาด 25 จุด, จัดชิดขวา, และตั้งระยะขอบย่อหน้าขวา 20 จุดสำหรับคอลัมน์แรก จากนั้นตั้งข้อความแนวตั้งในคอลัมน์ที่สอง
import com.aspose.slides.*;
Presentation presentation = new Presentation("table.pptx");
try {
ISlide slide = presentation.getSlides().get_Item(0);
ITable table = (ITable)slide.getShapes().get_Item(0);
PortionFormat portionFormat = new PortionFormat();
portionFormat.setFontHeight(25);
table.getColumns().get_Item(0).setTextFormat(portionFormat);
ParagraphFormat paragraphFormat = new ParagraphFormat();
paragraphFormat.setAlignment(TextAlignment.Right);
paragraphFormat.setMarginRight(20);
table.getColumns().get_Item(0).setTextFormat(paragraphFormat);
TextFrameFormat textFrameFormat = new TextFrameFormat();
textFrameFormat.setTextVerticalType(TextVerticalType.Vertical);
table.getColumns().get_Item(1).setTextFormat(textFrameFormat);
presentation.save("column_formatting.pptx", SaveFormat.Pptx);
} finally {
presentation.dispose();
}
รับคุณสมบัติสไตล์ตาราง
ใช้เมธอด getStylePreset เพื่อดึงค่าตั้งล่วงหน้าที่ใช้กับตารางและนำไปใช้กับตารางอื่น วิธีนี้จะระบุค่าตั้งล่วงหน้าแทนการเขียนทับการจัดรูปแบบเซลล์แต่ละรายการ
ตัวอย่างสร้างตาราง, ใช้ TableStylePreset.DarkStyle1, แล้วอ่านค่าตั้งล่วงกลับมา พิมพ์ค่าตัวเลขที่สอดคล้องกับ DarkStyle1 และบันทึกตารางในไฟล์ table.pptx
import com.aspose.slides.*;
Presentation presentation = new Presentation();
try {
ISlide slide = presentation.getSlides().get_Item(0);
double[] columnWidths = new double[] { 100, 150 };
double[] rowHeights = new double[] { 5, 5, 5 };
ITable table = slide.getShapes().addTable(10, 10, columnWidths, rowHeights);
table.setStylePreset(TableStylePreset.DarkStyle1);
int stylePreset = table.getStylePreset();
System.out.println(stylePreset);
presentation.save("table.pptx", SaveFormat.Pptx);
} finally {
presentation.dispose();
}
คำถามที่พบบ่อย
ฉันสามารถใช้ธีมหรือสไตล์ของ PowerPoint กับตารางที่สร้างไว้แล้วได้หรือไม่?
ได้ ตารางจะสืบทอดธีมของสไลด์/เลย์เอาต์/มาสเตอร์ และคุณยังคงสามารถเขียนทับสีเติม, เส้นขอบ, และสีข้อความเหนือธีมนั้นได้
ฉันสามารถจัดเรียงแถวของตารางแบบใน Excel ได้หรือไม่?
ไม่ได้ ตารางของ Aspose.Slides ไม่มีการจัดเรียงหรือฟิลเตอร์ในตัว ให้จัดเรียงข้อมูลในหน่วยความจำก่อนแล้วค่อยเติมแถวตารางตามลำดับที่ต้องการ
ฉันสามารถทำคอลัมน์แบบมีแถบสีสลับพร้อมการกำหนดสีกำหนดเองให้กับเซลล์เฉพาะได้หรือไม่?
ได้ เปิดการใช้งานคอลัมน์แบบมีแถบสีสลับ แล้วเขียนทับเซลล์เฉพาะด้วยการจัดรูปแบบท้องถิ่น; การจัดรูปแบบระดับเซลล์จะมีลำดับความสำคัญสูงกว่าสไตล์ตาราง


