ใช้สูตรเวิร์กชีตแผนภูมิในการนำเสนอใน Java

ภาพรวม

แผนภูมิ PowerPoint มักจะเก็บข้อมูลต้นแบบไว้ในเวิร์กชีตที่ฝังอยู่ ใน Aspose.Slides for Java คุณสามารถเข้าถึงเวิร์กชีตนั้นผ่าน workbook ของข้อมูลแผนภูมิ, เขียนค่าที่ป้อนเข้า, กำหนดสูตรให้เซลล์, คำนวณสูตรที่สนับสนุน, และใช้เซลล์ที่คำนวณแล้วเป็นข้อมูลแผนภูมิ

บทความนี้อธิบายกระบวนการทำงานเต็มรูปแบบของสูตร: สร้างแผนภูมิ, เติมข้อมูลในเวิร์กชีต, กำหนดสูตรแบบ A1 หรือ R1C1, คำนวณใหม่, อ่านค่าที่คำนวณได้, เชื่อมต่อเซลล์เหล่านั้นกับชุดข้อมูลของแผนภูมิ, และบันทึกงานนำเสนอ นอกจากนี้ยังอธิบายไวยากรณ์สูตรที่รองรับ, ชุดฟังก์ชันในตัว, ค่าที่แคชไว้, สูตรที่ไม่รองรับ, และข้อผิดพลาดเฉพาะสเปรดชีต

เวิร์กชีตและสูตรของแผนภูมิ

เวิร์กชีตของแผนภูมิประกอบด้วยประเภท, ชื่อชุดข้อมูล, และค่าที่แผนภูมิเชื่อมโยง ใน PowerPoint คุณสามารถตรวจสอบเวิร์กชีตได้โดยเปิดตัวแก้ไขข้อมูลแผนภูมิ:

PowerPoint chart with its embedded worksheet open, showing category and series data

ใน Aspose.Slides, เวิร์กชีตถูกเปิดเผยผ่านอินเตอร์เฟส IChartDataWorkbook ใช้ IChartDataCell.setFormula สำหรับสูตรแบบ A1 และ IChartDataCell.setR1C1Formula สำหรับสูตรแบบ R1C1 หลังจากเปลี่ยนเซลล์อินพุตหรือสูตร ให้เรียก IChartDataWorkbook.calculateFormulas เพื่อคำนวณสูตรที่สนับสนุนและอัปเดตค่าของเซลล์ที่สอดคล้องกัน

เซลล์ที่คำนวณแล้วยังคงเปิดเผยผลลัพธ์ผ่าน IChartDataCell.getValue ซึ่งสำคัญเมื่อต้องตรวจสอบผลลัพธ์ของสูตรในโค้ดหรือใช้เซลล์เป็นจุดข้อมูลของแผนภูมิ

สร้างแผนภูมิและคำนวณสูตรในเวิร์กชีต

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

import com.aspose.slides.*;

Presentation presentation = new Presentation();
try {
    ISlide slide = presentation.getSlides().get_Item(0);
    IChart chart = slide.getShapes().addChart(ChartType.ClusteredColumn, 50, 50, 600, 350);
    IChartDataWorkbook workbook = chart.getChartData().getChartDataWorkbook();
    int worksheetIndex = 0;

    chart.getChartData().getSeries().clear();
    chart.getChartData().getCategories().clear();
    workbook.clear(worksheetIndex);

    IChartDataCell category1 = workbook.getCell(worksheetIndex, "A2", "Q1");
    IChartDataCell category2 = workbook.getCell(worksheetIndex, "A3", "Q2");
    IChartDataCell category3 = workbook.getCell(worksheetIndex, "A4", "Q3");

    workbook.getCell(worksheetIndex, "B1", "Revenue");
    workbook.getCell(worksheetIndex, "C1", "Expenses");
    workbook.getCell(worksheetIndex, "D1", "Profit");

    workbook.getCell(worksheetIndex, "B2").setValue(120.0);
    workbook.getCell(worksheetIndex, "C2").setValue(80.0);
    workbook.getCell(worksheetIndex, "B3").setValue(150.0);
    workbook.getCell(worksheetIndex, "C3").setValue(95.0);
    workbook.getCell(worksheetIndex, "B4").setValue(135.0);
    workbook.getCell(worksheetIndex, "C4").setValue(110.0);

    IChartDataCell profit1 = workbook.getCell(worksheetIndex, "D2");
    IChartDataCell profit2 = workbook.getCell(worksheetIndex, "D3");
    IChartDataCell profit3 = workbook.getCell(worksheetIndex, "D4");

    profit1.setFormula("B2-C2");
    profit2.setFormula("B3-C3");
    profit3.setFormula("B4-C4");

    workbook.calculateFormulas();

    double q1Profit = ((Number) profit1.getValue()).doubleValue(); // 40
    double q2Profit = ((Number) profit2.getValue()).doubleValue(); // 55
    double q3Profit = ((Number) profit3.getValue()).doubleValue(); // 25

    System.out.println("Q1 profit: " + q1Profit);
    System.out.println("Q2 profit: " + q2Profit);
    System.out.println("Q3 profit: " + q3Profit);

    chart.getChartData().getCategories().add(category1);
    chart.getChartData().getCategories().add(category2);
    chart.getChartData().getCategories().add(category3);

    IChartSeries profitSeries = chart.getChartData().getSeries().add(workbook.getCell(worksheetIndex, "D1"), chart.getType());
    profitSeries.getDataPoints().addDataPointForBarSeries(profit1);
    profitSeries.getDataPoints().addDataPointForBarSeries(profit2);
    profitSeries.getDataPoints().addDataPointForBarSeries(profit3);
    profitSeries.getLabels().getDefaultDataLabelFormat().setShowValue(true);

    presentation.save("chart-formulas.pptx", SaveFormat.Pptx);
} finally {
    presentation.dispose();
}

จุดข้อมูลของแผนภูมิอ้างอิง D2:D4 ดังนั้นแผนภูมิจะใช้ค่ากำไรที่คำนวณแล้ว ไม่ต้องมีการเรียกรีเฟรชแผนภูมิแยกต่างหากในกระบวนการนี้: คำนวณ workbook ก่อน, จากนั้นใช้หรือบันทึกข้อมูลแผนภูมิที่ชี้ไปยังเซลล์ที่คำนวณแล้ว

ใช้สูตรแบบ A1

การระบุแบบ A1 ใช้อักษรเป็นคอลัมน์และตัวเลขเป็นแถว กำหนดนิพจน์แบบ A1 ผ่าน IChartDataCell.setFormula

import com.aspose.slides.*;

Presentation presentation = new Presentation();
try {
    ISlide slide = presentation.getSlides().get_Item(0);
    IChart chart = slide.getShapes().addChart(ChartType.ClusteredColumn, 50, 50, 500, 300);
    IChartDataWorkbook workbook = chart.getChartData().getChartDataWorkbook();

    workbook.getCell(0, "C3").setValue(10);
    workbook.getCell(0, "F2").setValue(2);
    workbook.getCell(0, "G2").setValue(3);
    workbook.getCell(0, "H2").setValue(4);

    IChartDataCell cell = workbook.getCell(0, "A2");
    cell.setFormula("C3+SUM(F2:H2)");

    workbook.calculateFormulas();

    Object value = cell.getValue(); // 19
} finally {
    presentation.dispose();
}

รูปแบบการอ้างอิง A1 ที่พบบ่อยมีดังนี้:

อ้างอิง สัมพัทธ์ สัมบูรณ์ ผสม
เซลล์ A2 $A$2 A$2, $A2
แถว 2:2 $2:$2
คอลัมน์ A:A $A:$A
ช่วง A2:C4 $A$2:$C$4 A$2:$C4, $A2:C$4

การอ้างอิงสัมพัทธ์อาจเปลี่ยนเมื่อสูตรถูกย้ายหรือคัดลอกโดยแอปสเปรดชีต ส่วนการอ้างอิงสัมบูรณ์จะคงค่าพิกัดทั้งสองคงที่ ส่วนการอ้างอิงผสมจะตรึงแค่แถวหรือคอลัมน์หนึ่งเท่านั้น

ใช้สูตรแบบ R1C1

การระบุแบบ R1C1 ใช้ตัวเลขระบุทั้งแถวและคอลัมน์ การอ้างอิงสัมพัทธ์ใช้ส่วนชดเชยในวงเล็บเหลี่ยม กำหนดไวยากรณ์นี้ผ่าน IChartDataCell.setR1C1Formula

import com.aspose.slides.*;

Presentation presentation = new Presentation();
try {
    ISlide slide = presentation.getSlides().get_Item(0);
    IChart chart = slide.getShapes().addChart(ChartType.ClusteredColumn, 50, 50, 500, 300);
    IChartDataWorkbook workbook = chart.getChartData().getChartDataWorkbook();

    workbook.getCell(0, "B2").setValue(12);
    workbook.getCell(0, "C2").setValue(5);

    IChartDataCell cell = workbook.getCell(0, "D2");
    cell.setR1C1Formula("RC[-2]-RC[-1]");

    workbook.calculateFormulas();

    Object value = cell.getValue(); // 7
} finally {
    presentation.dispose();
}

รูปแบบการอ้างอิง R1C1 ที่พบบ่อยมีดังนี้:

อ้างอิง สัมพัทธ์ สัมบูรณ์ ผสม
เซลล์ R[2]C[3] R2C3 R2C[3], R[2]C3
แถว R[2] R2
คอลัมน์ C[3] C3
ช่วง R[2]C[3]:R[5]C[7] R2C3:R5C7 R2C3:R[5]C[7], R[2]C3:R5C[7]

ตัวอย่างเช่น ในเซลล์ D2, RC[-2] หมายถึงเซลล์ในแถวเดียวกันสองคอลัมน์ทางซ้าย (B2)

ค่าคงที่และตัวดำเนินการของสูตร

เครื่องประเมินสูตรในตัวสนับสนุนค่าตรรกะ, ค่าตัวเลข, สตริง, ค่าข้อผิดพลาดของสเปรดชีต, ตัวดำเนินการทางคณิตศาสตร์, และตัวดำเนินการเปรียบเทียบ

ค่าคงที่และลิตทีรัล

ชนิด ตัวอย่าง หมายเหตุ
ตรรกะ TRUE, FALSE สามารถใช้โดยตรงในนิพจน์ตรรกะเช่น A2=TRUE
ตัวเลข 1, 0.5, .3, 1E-2 รองรับการเขียนแบบทั่วไปและแบบวิทยาศาสตร์
สตริง "abc", "2/3/2020 12:00" ลิตทีรัลข้อความต้องอยู่ในเครื่องหมายอัญประกาศคู่ภายในสูตร
ผลลัพธ์ข้อผิดพลาด #DIV/0!, #N/A, #REF! สูตรที่ถูกต้องอาจประเมินเป็นค่าข้อผิดพลาดของสเปรดชีตได้แทนค่าปกติ

ตัวอย่างนี้ใช้ค่าคงที่หลายชนิด:

import com.aspose.slides.*;

Presentation presentation = new Presentation();
try {
    ISlide slide = presentation.getSlides().get_Item(0);
    IChart chart = slide.getShapes().addChart(ChartType.ClusteredColumn, 50, 50, 500, 300);
    IChartDataWorkbook workbook = chart.getChartData().getChartDataWorkbook();

    workbook.getCell(0, "A2").setValue(false);
    workbook.getCell(0, "B2").setFormula("A2=TRUE");
    workbook.getCell(0, "C2").setFormula("1+0.5");
    workbook.getCell(0, "D2").setFormula(".3*1E-2");
    workbook.getCell(0, "E2").setFormula("\"abc\"");
    workbook.getCell(0, "F2").setFormula("2/0");

    workbook.calculateFormulas();

    Object logicalValue = workbook.getCell(0, "B2").getValue(); // เท็จ
    Object numericValue = workbook.getCell(0, "C2").getValue(); // 1.5
    Object scientificValue = workbook.getCell(0, "D2").getValue(); // 0.003
    Object stringValue = workbook.getCell(0, "E2").getValue(); // abc
    Object errorValue = workbook.getCell(0, "F2").getValue(); // #DIV/0!
} finally {
    presentation.dispose();
}

ตัวดำเนินการทางคณิตศาสตร์

ตัวดำเนินการ ความหมาย ตัวอย่าง
+ การบวกหรือเครื่องหมายบวกเอกพจน์ 2+3
- การลบหรือการทำลบเอกพจน์ 2-3, -3
* การคูณ 2*3
/ การหาร 2/3
% เปอร์เซ็นต์ 30%
^ ยกกำลัง 2^3

ใช้วงเล็บเพื่อระบุลำดับการประเมินอย่างชัดเจน เช่น (A2+B2)*C2

ตัวดำเนินการเปรียบเทียบ

นิพจน์เปรียบเทียบจะคืนค่าตรรกะ

ตัวดำเนินการ ความหมาย ตัวอย่าง
= เท่ากับ A2=3
<> ไม่เท่ากับ A2<>3
> มากกว่า A2>3
>= มากกว่าหรือเท่ากับ A2>=3
< น้อยกว่า A2<3
<= น้อยกว่าหรือเท่ากับ A2<=3

ฟังก์ชันที่กำหนดล่วงหน้าที่รองรับ

Aspose.Slides มีเครื่องประเมินสูตรในตัวสำหรับเวิร์กชีตของแผนภูมิ, แต่ไม่ใช่เครื่องยนต์คำนวณ Excel เต็มรูปแบบ ชุดฟังก์ชันที่เอกสารระบุมีจำกัดเพียงฟังก์ชันต่อไปนี้ อย่าสมมติว่าฟังก์ชัน Excel ใด ๆ สามารถคำนวณใหม่ได้โดย IChartDataWorkbook.calculateFormulas

ฟังก์ชัน จุดประสงค์หรือรูปแบบที่รองรับ ตัวอย่าง
ABS ค่าตัวเลขสัมบูรณ์ ABS(A2)
AVERAGE ค่าเฉลี่ยเลขคณิต AVERAGE(B2:B5)
CEILING ปัดเลขขึ้นเป็นหลายเท่า CEILING(A2,5)
CHOOSE เลือกค่าตามดัชนี CHOOSE(A2,"Low","High")
CONCAT เชื่อมข้อความ CONCAT(A2,B2)
CONCATENATE เชื่อมข้อความ CONCATENATE(A2," ",B2)
DATE สร้างค่าวันที่โดยใช้ระบบวันที่ 1900 DATE(2026,8,19)
DAYS คืนจำนวนวันระหว่างสองวันที่ DAYS(B2,A2)
FIND ค้นหาข้อความภายในข้อความอื่น FIND("-",A2)
FINDB ค้นหาข้อความแบบไบต์ FINDB("a",A2)
IF ผลลัพธ์ตามเงื่อนไข IF(A2>0,A2,0)
INDEX รูปแบบอ้างอิง INDEX(A2:C4,2,3)
LOOKUP รูปแบบเวกเตอร์ LOOKUP(A2,B2:B5,C2:C5)
MATCH รูปแบบเวกเตอร์ MATCH(A2,B2:B5,0)
MAX ค่าสูงสุด MAX(B2:B5)
SUM ผลรวม SUM(B2:B5)
VLOOKUP การค้นหาแนวตั้ง VLOOKUP(A2,B2:D10,3,FALSE)

ข้อจำกัดในตารางมีความสำคัญ: INDEX เอกสารในรูปแบบอ้างอิง, ส่วน LOOKUP และ MATCH เอกสารในรูปแบบเวกเตอร์ DATE ใช้ระบบวันที่ 1900 ฟีเจอร์และฟังก์ชันที่ไม่ได้ระบุในที่นี้ควรถือว่าไม่รองรับโดยเครื่องประเมินสูตรของ Aspose.Slides เว้นแต่จะมีเอกสารแยกต่างหาก

คำนวณสูตรด้วยวัฒนธรรมที่ต้องการ

ฟังก์ชันบางอย่างของ workbook แปลข้อความตามกฎของวัฒนธรรมเฉพาะ ซึ่งสำคัญโดยเฉพาะกับฟังก์ชันที่ออกแบบมาสำหรับภาษาที่ใช้ชุดอักขระสองไบต์ (DBCS) เพื่อคำนวณสูตรเหล่านั้นอย่างถูกต้อง ให้สร้าง LoadOptions, ตั้งค่าวัฒนธรรมที่ต้องการด้วย SpreadsheetOptions.setPreferredCulture, กำหนดตัวเลือกสเปรดชีตผ่าน LoadOptions.setSpreadsheetOptions, แล้วโหลดงานนำเสนอ

ตัวอย่างต่อไปนี้เลือกวัฒนธรรมญี่ปุ่น, เปิดงานนำเสนอด้วยตัวเลือกโหลดที่กำหนด, และเรียก IChartDataWorkbook.calculateFormulas สำหรับทุก workbook ของแผนภูมิ:

import com.aspose.slides.*;
import java.util.Locale;

Locale japaneseCulture = Locale.forLanguageTag("ja-JP");

ISpreadsheetOptions spreadsheetOptions = new SpreadsheetOptions();
spreadsheetOptions.setPreferredCulture(japaneseCulture);

LoadOptions loadOptions = new LoadOptions();
loadOptions.setSpreadsheetOptions(spreadsheetOptions);

Presentation presentation = new Presentation("presentation.pptx", loadOptions);
try {
    for (ISlide slide : presentation.getSlides()) {
        for (IShape shape : slide.getShapes()) {
            if (shape instanceof IChart) {
                IChart chart = (IChart) shape;
                chart.getChartData().getChartDataWorkbook().calculateFormulas();
            }
        }
    }
} finally {
    presentation.dispose();
}

วัฒนธรรมที่ต้องการเป็นส่วนหนึ่งของการกำหนดค่าการโหลดงานนำเสนอ ดังนั้นต้องตั้งค่าก่อนสร้างอ็อบเจ็กต์ Presentation ใช้วัฒนธรรมที่สูตรของ workbook คาดหวัง เช่น ja-JP สำหรับสูตรที่ควรปฏิบัติตามกฎการคำนวณ DBCS ของญี่ปุ่น

การคำนวณใหม่และค่าที่แคชไว้

ไฟล์สเปรดชีตมักจะเก็บทั้งสูตรและค่าที่คำนวณล่าสุด Aspose.Slides จึงสามารถอ่านค่าที่แคชจาก IChartDataCell.getValue เมื่อโหลดงานนำเสนอและข้อมูลแผนภูมิที่เกี่ยวข้องไม่ได้ถูกเปลี่ยนแปลง

หลังจากเปลี่ยนเซลล์อินพุตหรือสูตร อย่าอาศัยผลลัพธ์แคชเก่า ให้เรียก IChartDataWorkbook.calculateFormulas ก่อนอ่านค่าที่คำนวณหรือบันทึกข้อมูลแผนภูมิที่พึ่งพาค่าเหล่านั้น

สำหรับสูตรที่อยู่นอกชุดที่รองรับ Aspose.Slides อาจไม่สามารถแปลสูตรหรือกำหนดการพึ่งพาได้ หาก workbook ถูกแก้ไข ค่าที่แคชไว้ก่อนหน้านั้นจะไม่เชื่อถือได้ ในสถานการณ์นั้น การอ่านค่าของเซลล์ที่มีข้อมูลไม่รองรับอาจทำให้เกิด CellUnsupportedDataException

หากแผนภูมิของคุณพึ่งพาฟังก์ชัน Excel ที่ Aspose.Slides ไม่ประเมินผล ให้คำนวณสูตรเหล่านั้นด้วยเอนจินสเปรดชีตที่รองรับและเขียนค่าที่ได้กลับไปยัง workbook ของแผนภูมิ อย่าแทนที่สูตรที่ไม่รองรับด้วยค่าที่คาดเดา

จัดการข้อผิดพลาดของสูตร

มีปัญหา 2 ประเภทให้แยกแยะ

สูตรอาจถูกต้องแต่ให้ผลลัพธ์เป็นค่าข้อผิดพลาดของสเปรดชีต เช่น #DIV/0!, #N/A, #NAME?, #NULL!, #NUM!, #REF!, หรือ #VALUE! ในกรณีนี้ โทเค็นข้อผิดพลาดเป็นผลลัพธ์ของเซลล์และสามารถคืนค่าผ่าน IChartDataCell.getValue

สูตรอาจล้มเหลวที่ขั้นตอนการแปล, การอ้างอิง, การพึ่งพา, หรือระดับข้อมูลที่รองรับ Aspose.Slides ให้ข้อยกเว้นเฉพาะสเปรดชีตสำหรับกรณีเหล่านี้: CellInvalidFormulaException, CellInvalidReferenceException, CellCircularReferenceException, และ CellUnsupportedDataException

เมื่อสูตรมาจากเทมเพลตหรือการป้อนของผู้ใช้ ให้จัดการข้อยกเว้นเหล่านี้รอบการคำนวณใหม่และการเข้าถึงค่า:

import com.aspose.slides.*;

Presentation presentation = new Presentation();
try {
    ISlide slide = presentation.getSlides().get_Item(0);
    IChart chart = slide.getShapes().addChart(ChartType.ClusteredColumn, 50, 50, 500, 300);
    IChartDataWorkbook workbook = chart.getChartData().getChartDataWorkbook();
    IChartDataCell cell = workbook.getCell(0, "A2");
    cell.setFormula("SUM(B2:B5)");

    try {
        workbook.calculateFormulas();
        System.out.println(cell.getValue());
    } catch (CellInvalidFormulaException ex) {
        System.err.println("Invalid formula: " + ex.getMessage());
    } catch (CellInvalidReferenceException ex) {
        System.err.println("Invalid cell reference: " + ex.getMessage());
    } catch (CellCircularReferenceException ex) {
        System.err.println("Circular reference: " + ex.getMessage());
    } catch (CellUnsupportedDataException ex) {
        System.err.println("Unsupported spreadsheet data: " + ex.getMessage());
    }
} finally {
    presentation.dispose();
}

ข้อจำกัดเชิงปฏิบัติ

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

  • ใช้เฉพาะค่าคงที่, ตัวดำเนินการ, การอ้างอิง, และฟังก์ชันที่ระบุในเอกสารเมื่อจำเป็นให้ Aspose.Slides คำนวณสูตรใหม่
  • คำนวณใหม่หลังจากเปลี่ยนเซลล์ที่สูตรอิงถึง
  • ถือค่าที่แคชจากงานนำเสนอที่โหลดเป็นสแนปช็อต ไม่ใช่การทดแทนการคำนวณใหม่หลังแก้ไข
  • ทดสอบสูตรจากเทมเพลตที่มีอยู่ก่อนพึ่งพาค่าที่คำนวณแล้ว โดยเฉพาะเมื่อใช้ฟังก์ชันที่อยู่นอกรายการเอกสาร
  • สำหรับสูตรที่ต้องการเครื่องยนต์คำนวณสเปรดชีตเต็มรูปแบบ ให้คำนวณภายนอกแล้วอัปเดตค่าใน workbook ของแผนภูมิ

คำถามที่พบบ่อย

ความแตกต่างระหว่าง IChartDataCell.setFormula และ IChartDataCell.setR1C1Formula คืออะไร?

IChartDataCell.setFormula เก็บนิพจน์แบบ A1 เช่น B2-C2 ส่วน IChartDataCell.setR1C1Formula เก็บนิพจน์แบบ R1C1 เช่น RC[-2]-RC[-1] ใช้รูปแบบที่สอดคล้องกับวิธีการสร้างหรือคัดลอกสูตรของคุณ

ฉันต้องอ่านเซลล์เองหรือค่าในเซลล์หลังการคำนวณ?

IChartDataWorkbook.getCell คืนค่า IChartDataCell เพื่อให้ได้ผลลัพธ์ที่คำนวณแล้ว ให้เรียกเมธอด IChartDataCell.getValue ของเซลล์นั้นหลังการคำนวณใหม่

ควรเรียก IChartDataWorkbook.calculateFormulas เมื่อใด?

เรียก IChartDataWorkbook.calculateFormulas หลังจากเปลี่ยนค่ อินพุตหรือสูตร แล้วก่อนที่คุณจะพึ่งพาผลลัพธ์ที่คำนวณ ซึ่งจะอัปเดตค่าของสูตรที่เครื่องประเมินในตัวรองรับ

Aspose.Slides รองรับทุกฟังก์ชันของ Excel หรือไม่?

ไม่ โดยเครื่องประเมินในตัวรองรับชุดฟังก์ชันที่เอกสารกำหนดฟังก์ชันที่อยู่นอกชุดนั้นไม่ควรถือว่าคำนวณได้อย่างถูกต้อง หากต้องการความเข้ากันได้เต็มรูปแบบกับสูตร Excel ให้ทำการคำนวณด้วยเอนจินสเปรดชีตที่เหมาะสมและเขียนค่าที่ได้ลงใน workbook ของแผนภูมิ

เกิดอะไรขึ้นถ้างานนำเข้าที่โหลดมีสูตรที่ไม่รองรับ?

หากข้อมูลแผนภูมิไม่เปลี่ยน ค่าที่แคชไว้ใน workbook อาจยังคงอยู่ หลังจากข้อมูลที่เกี่ยวข้องถูกแก้ไข ค่าที่แคชนั้นอาจไม่ถูกต้องแล้ว การเข้าถึงเซลล์ที่สูตรไม่สามารถจัดการได้อาจทำให้เกิด CellUnsupportedDataException

ค่าข้อผิดพลาดของสูตรคือค่าเดียวกับข้อยกเว้นใน Java หรือไม่?

ไม่ ผลลัพธ์เช่น #DIV/0! เป็นค่าของสเปรดชีตที่ได้จากการคำนวณที่ถูกต้อง ส่วนข้อยกเว้นเช่น CellInvalidFormulaException หรือ CellCircularReferenceException บ่งชี้ว่ารูปแบบสูตรไม่สามารถประมวลผลได้ตามปกติ

แผนภูมิอัพเดตอัตโนมัติเมื่อเซลล์สูตรเปลี่ยนหรือไม่?

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

แผนภูมิสามารถใช้ workbook Excel ภายนอกได้หรือไม่?

ได้, ข้อมูลแผนภูมิสามารถกำหนดให้ใช้ workbook ภายนอกผ่าน API ของข้อมูลแผนภูมิ อย่างไรก็ตาม กระบวนการคำนวณสูตรที่อธิบายในบทความนี้เกี่ยวข้องกับ workbook ของข้อมูลแผนภูมิและชุดสูตรที่ Aspose.Slides ประเมิน ไม่ควรสันนิษฐานว่า IChartDataWorkbook.calculateFormulas ให้การคำนวณเต็มรูปแบบของสูตรใด ๆ ในไฟล์ XLSX ภายนอก

ฉันสามารถใช้สูตรที่อ้างอิงเวิร์กชีตหรือ workbook อื่นได้หรือไม่?

การอ้างอิงแบบ Excel อาจมีอยู่ใน workbook ของแผนภูมิ แต่การประเมินสูตรจำกัดโดยตัวแปลและชุดฟังก์ชันที่รองรับ หากการอ้างอิงข้ามชีตหรือไฟล์ภายนอกเป็นสิ่งจำเป็น ให้ตรวจสอบสูตรนั้นกับเวอร์ชัน Aspose.Slides ที่คุณใช้งาน สำหรับกระบวนการที่ต้องการความเข้ากันได้ของการอ้างอิง Excel อย่างกว้าง ควรคำนวณ workbook ภายนอกแล้วเขียนค่าที่ได้กลับไปยังข้อมูลแผนภูมิ

สูตรควรเริ่มด้วย = หรือไม่?

ตัวอย่าง API ของ Aspose.Slides จะกำหนดนิพจน์เช่น B2-C2 หรือ SUM(B2:B5) โดยไม่มีเครื่องหมาย = นำหน้า การใช้รูปแบบนี้ทำให้สูตรที่สร้างสอดคล้องกับตัวอย่าง API ที่ระบุไว้