ใช้สูตรแผ่นงานแผนภูมิในงานนำเสนอด้วย JavaScript
ภาพรวม
แผนภูมิ PowerPoint มักจัดเก็บข้อมูลต้นทางไว้ในเวิร์กชีตที่ฝังอยู่ ใน Aspose.Slides สำหรับ Node.js ผ่าน Java คุณสามารถเข้าถึงเวิร์กชีตนั้นผ่าน ChartDataWorkbook, เขียนค่าตัวอินพุต, กำหนดสูตรให้กับเซลล์, คำนวณสูตรที่สนับสนุน, และใช้เซลล์ที่คำนวณแล้วเป็นข้อมูลแผนภูมิได้
บทความนี้อธิบายกระบวนการทำงานของสูตรอย่างครบถ้วน: สร้างแผนภูมิ, เติมข้อมูลในเวิร์กชีต, กำหนดสูตรแบบ A1 หรือ R1C1, คำนวณใหม่, อ่านค่าที่คำนวณ, เชื่อมต่อเซลล์เหล่านั้นกับซีรีส์ของแผนภูมิ, และบันทึกงานนำเสนอ นอกจากนี้ยังอธิบายไวยากรณ์สูตรที่สนับสนุน, ชุดฟังก์ชันในตัว, ค่าที่แคชไว้, สูตรที่ไม่สนับสนุน, และข้อผิดพลาดเฉพาะสเปรดชีต
เวิร์กชีตแผนภูมิและสูตร
เวิร์กชีตของแผนภูมิประกอบด้วยหมวดหมู่, ชื่อซีรีส์, และค่าที่ใช้โดยแผนภูมิ ใน PowerPoint คุณสามารถตรวจสอบเวิร์กชีตได้โดยเปิด Chart Data Editor:

ใน Aspose.Slides, เวิร์กชีตถูกเปิดเผยผ่านคลาส ChartDataWorkbook ใช้เมธอด ChartDataCell.setFormula สำหรับสูตรแบบ A1 และ ChartDataCell.setR1C1Formula สำหรับสูตรแบบ R1C1 หลังจากเปลี่ยนเซลล์อินพุตหรือสูตร ให้เรียกเมธอด ChartDataWorkbook.calculateFormulas เพื่อคำนวณสูตรที่สนับสนุนและอัปเดตค่าของเซลล์ที่เกี่ยวข้อง
เซลล์ที่คำนวณแล้วยังคงให้ผลลัพธ์ผ่านเมธอด ChartDataCell.getValue สิ่งนี้สำคัญเมื่อคุณต้องตรวจสอบผลลัพธ์ของสูตรในโค้ดหรือใช้เซลล์เป็นจุดข้อมูลของแผนภูมิ
สร้างแผนภูมิและคำนวณสูตรในเวิร์กชีต
ตัวอย่างต่อไปนี้แสดงกระบวนการทำงานจากต้นจนจบ มันสร้างแผนภูมิคอลัมน์แบบคลัสเตอร์, ลบข้อมูลตัวอย่าง, เขียนค่ารายได้และค่าใช้จ่ายไตรมาส, คำนวณกำไรด้วยสูตร, อ่านผลลัพธ์, ใช้เซลล์ที่คำนวณเป็นค่าของแผนภูมิ, แล้วบันทึกงานนำเสนอ
const aspose = {};
aspose.slides = require("aspose.slides.via.java");
const presentation = new aspose.slides.Presentation();
try {
const slide = presentation.getSlides().get_Item(0);
const chart = slide.getShapes().addChart(aspose.slides.ChartType.ClusteredColumn, 50, 50, 600, 350);
const workbook = chart.getChartData().getChartDataWorkbook();
const worksheetIndex = 0;
chart.getChartData().getSeries().clear();
chart.getChartData().getCategories().clear();
workbook.clear(worksheetIndex);
const category1 = workbook.getCell(worksheetIndex, "A2", "Q1");
const category2 = workbook.getCell(worksheetIndex, "A3", "Q2");
const 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);
const profit1 = workbook.getCell(worksheetIndex, "D2");
const profit2 = workbook.getCell(worksheetIndex, "D3");
const profit3 = workbook.getCell(worksheetIndex, "D4");
profit1.setFormula("B2-C2");
profit2.setFormula("B3-C3");
profit3.setFormula("B4-C4");
workbook.calculateFormulas();
const q1Profit = profit1.getValue(); // 40
const q2Profit = profit2.getValue(); // 55
const q3Profit = profit3.getValue(); // 25
console.log("Q1 profit: " + q1Profit);
console.log("Q2 profit: " + q2Profit);
console.log("Q3 profit: " + q3Profit);
chart.getChartData().getCategories().add(category1);
chart.getChartData().getCategories().add(category2);
chart.getChartData().getCategories().add(category3);
const 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", aspose.slides.SaveFormat.Pptx);
} finally {
presentation.dispose();
}
จุดข้อมูลของแผนภูมิเก็บอ้างอิง D2:D4 ดังนั้นแผนภูมิจะใช้ค่ากำไรที่คำนวณแล้ว ในเวิร์กโฟลว์นี้ไม่มีการเรียกเมธอดรีเฟรชแผนภูมิแยกต่างหาก: คำนวณเวิร์กบุ๊กก่อน, จากนั้นใช้หรือบันทึกข้อมูลแผนภูมิที่อ้างอิงเซลล์ที่คำนวณ
ใช้สูตรแบบ A1
การอ้างอิงแบบ A1 ระบุคอลัมน์ด้วยตัวอักษรและแถวด้วยตัวเลข กำหนดนิพจน์แบบ A1 ผ่านเมธอด ChartDataCell.setFormula
const aspose = {};
aspose.slides = require("aspose.slides.via.java");
const presentation = new aspose.slides.Presentation();
try {
const slide = presentation.getSlides().get_Item(0);
const chart = slide.getShapes().addChart(aspose.slides.ChartType.ClusteredColumn, 50, 50, 500, 300);
const 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);
const cell = workbook.getCell(0, "A2");
cell.setFormula("C3+SUM(F2:H2)");
workbook.calculateFormulas();
const value = cell.getValue(); // 19
} finally {
presentation.dispose();
}
รูปแบบการอ้างอิง A1 ที่พบบ่อยมีดังนี้
| อ้างอิง | สัมพัทธ์ | คงที่ | ผสม |
|---|---|---|---|
| Cell | A2 |
$A$2 |
A$2, $A2 |
| Row | 2:2 |
$2:$2 |
— |
| Column | A:A |
$A:$A |
— |
| Range | A2:C4 |
$A$2:$C$4 |
A$2:$C4, $A2:C$4 |
การอ้างอิงสัมพัทธ์อาจเปลี่ยนเมื่อสูตรถูกย้ายหรือคัดลอกโดยแอปพลิเคชันสเปรดชีต การอ้างอิงคงที่จะคงค่าพิกัดทั้งสองไว้ ส่วนการอ้างอิงผสมจะคงแค่แถวหรือคอลัมน์หนึ่งเท่านั้น
ใช้สูตรแบบ R1C1
การอ้างอิงแบบ R1C1 ระบุทั้งแถวและคอลัมน์เป็นตัวเลข การอ้างอิงสัมพัทธ์ใช้การชดเชยในวงเล็บสี่เหลี่ยม กำหนดไวยากรณ์นี้ผ่านเมธอด ChartDataCell.setR1C1Formula
const aspose = {};
aspose.slides = require("aspose.slides.via.java");
const presentation = new aspose.slides.Presentation();
try {
const slide = presentation.getSlides().get_Item(0);
const chart = slide.getShapes().addChart(aspose.slides.ChartType.ClusteredColumn, 50, 50, 500, 300);
const workbook = chart.getChartData().getChartDataWorkbook();
workbook.getCell(0, "B2").setValue(12);
workbook.getCell(0, "C2").setValue(5);
const cell = workbook.getCell(0, "D2");
cell.setR1C1Formula("RC[-2]-RC[-1]");
workbook.calculateFormulas();
const value = cell.getValue(); // 7
} finally {
presentation.dispose();
}
รูปแบบการอ้างอิง R1C1 ที่พบบ่อยมีดังนี้
| อ้างอิง | สัมพัทธ์ | คงที่ | ผสม |
|---|---|---|---|
| Cell | R[2]C[3] |
R2C3 |
R2C[3], R[2]C3 |
| Row | R[2] |
R2 |
— |
| Column | C[3] |
C3 |
— |
| Range | R[2]C[3]:R[5]C[7] |
R2C3:R5C7 |
R2C3:R[5]C[7], R[2]C3:R5C[7] |
ตัวอย่างเช่น ในเซลล์ D2 RC[-2] หมายถึงเซลล์ในแถวเดียวกันสองคอลัมน์ทางซ้าย (B2)
ค่าคงที่และตัวดำเนินการของสูตร
ตัวประเมินสูตรในตัวสนับสนุนค่าตรรกะ, ลิเทรัลตัวเลข, สตริง, ค่าข้อผิดพลาดของสเปรดชีต, ตัวดำเนินการคณิตศาสตร์, และตัวดำเนินการเปรียบเทียบ
ค่าคงที่และลิเทรัล
| ประเภท | ตัวอย่าง | หมายเหตุ |
|---|---|---|
| Logical | TRUE, FALSE |
สามารถใช้โดยตรงในนิพจน์ตรรกะเช่น A2=TRUE |
| Numeric | 1, 0.5, .3, 1E-2 |
รองรับการเขียนแบบธรรมดาและวิทยาศาสตร์ |
| String | "abc", "2/3/2020 12:00" |
ลิเทรัลข้อความต้องอยู่ในเครื่องหมายคำพูดคู่ภายในสูตร |
| Error result | #DIV/0!, #N/A, #REF! |
สูตรที่สมบูรณ์สามารถประเมินเป็นค่าข้อผิดพลาดของสเปรดชีตแทนผลลัพธ์ปกติได้ |
ตัวอย่างนี้ใช้ค่าคงที่หลายประเภท
const aspose = {};
aspose.slides = require("aspose.slides.via.java");
const presentation = new aspose.slides.Presentation();
try {
const slide = presentation.getSlides().get_Item(0);
const chart = slide.getShapes().addChart(aspose.slides.ChartType.ClusteredColumn, 50, 50, 500, 300);
const 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();
const logicalValue = workbook.getCell(0, "B2").getValue(); // เท็จ
const numericValue = workbook.getCell(0, "C2").getValue(); // 1.5
const scientificValue = workbook.getCell(0, "D2").getValue(); // 0.003
const stringValue = workbook.getCell(0, "E2").getValue(); // abc
const 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 แบบเต็ม ชุดฟังก์ชันที่ถูกบันทึกไว้จำกัดอยู่เพียงฟังก์ชันต่อไปนี้ อย่า Assume ว่า Excel ฟังก์ชันใดๆ สามารถคำนวณใหม่ด้วย ChartDataWorkbook.calculateFormulas ได้
| ฟังก์ชัน | วัตถุประสงค์หรือรูปแบบที่สนับสนุน | ตัวอย่าง |
|---|---|---|
ABS |
Absolute value | ABS(A2) |
AVERAGE |
Arithmetic mean | AVERAGE(B2:B5) |
CEILING |
Round a number upward to a multiple | CEILING(A2,5) |
CHOOSE |
Select a value by index | CHOOSE(A2,"Low","High") |
CONCAT |
Join text values | CONCAT(A2,B2) |
CONCATENATE |
Join text values | CONCATENATE(A2," ",B2) |
DATE |
Create a date value using the 1900 date system | DATE(2026,8,19) |
DAYS |
Return the number of days between dates | DAYS(B2,A2) |
FIND |
Find one text value inside another | FIND("-",A2) |
FINDB |
Byte-oriented text search | FINDB("a",A2) |
IF |
Conditional result | IF(A2>0,A2,0) |
INDEX |
Reference form | INDEX(A2:C4,2,3) |
LOOKUP |
Vector form | LOOKUP(A2,B2:B5,C2:C5) |
MATCH |
Vector form | MATCH(A2,B2:B5,0) |
MAX |
Maximum value | MAX(B2:B5) |
SUM |
Sum values | SUM(B2:B5) |
VLOOKUP |
Vertical lookup | VLOOKUP(A2,B2:D10,3,FALSE) |
ข้อจำกัดที่แสดงในตารางมีความสำคัญ: INDEX ถูกบันทึกในรูปแบบอ้างอิง, ในขณะที่ LOOKUP และ MATCH เป็นรูปแบบเวกเตอร์ DATE ใช้ระบบวันที่ 1900 ฟีเจอร์และฟังก์ชันที่ไม่ได้ระบุที่นี่ควรถือว่าไม่สนับสนุนโดยตัวประเมินสูตรของ Aspose.Slides เว้นแต่จะมีการบันทึกไว้แยกต่างหาก
คำนวณสูตรด้วยวัฒนธรรมที่ต้องการ
ฟังก์ชันบางอย่างของเวิร์กบุ๊กแผนภูมิอาจตีความข้อความตามกฎของวัฒนธรรมเฉพาะ นี่สำคัญโดยเฉพาะสำหรับฟังก์ชันที่ออกแบบมาสำหรับภาษาที่ใช้ชุดอักขระสองไบต์ (DBCS) เพื่อคำนวณสูตรเหล่านี้อย่างถูกต้อง ให้สร้าง LoadOptions, ตั้งวัฒนธรรมที่ต้องการด้วยเมธอด SpreadsheetOptions.setPreferredCulture, กำหนดตัวเลือกสเปรดชีตผ่านเมธอด LoadOptions.setSpreadsheetOptions, จากนั้นโหลดงานนำเสนอ
ตัวอย่างต่อไปนี้เลือกวัฒนธรรมญี่ปุ่น, เปิดงานนำเสนอด้วย LoadOptions ที่กำหนด, แล้วเรียกเมธอด ChartDataWorkbook.calculateFormulas สำหรับทุกเวิร์กบุ๊กแผนภูมิ
const aspose = {};
aspose.slides = require("aspose.slides.via.java");
const java = require("java");
const japaneseCulture = java.newInstanceSync("java.util.Locale", "ja", "JP");
const spreadsheetOptions = new aspose.slides.SpreadsheetOptions();
spreadsheetOptions.setPreferredCulture(japaneseCulture);
const loadOptions = new aspose.slides.LoadOptions();
loadOptions.setSpreadsheetOptions(spreadsheetOptions);
const presentation = new aspose.slides.Presentation("presentation.pptx", loadOptions);
try {
const slides = presentation.getSlides();
for (let slideIndex = 0; slideIndex < slides.size(); slideIndex++) {
const shapes = slides.get_Item(slideIndex).getShapes();
for (let shapeIndex = 0; shapeIndex < shapes.size(); shapeIndex++) {
const shape = shapes.get_Item(shapeIndex);
if (java.instanceOf(shape, "com.aspose.slides.IChart")) {
shape.getChartData().getChartDataWorkbook().calculateFormulas();
}
}
}
} finally {
presentation.dispose();
}
วัฒนธรรมที่ต้องการเป็นส่วนหนึ่งของการกำหนดค่าการโหลดงานนำเสนอ ดังนั้นให้ระบุก่อนสร้างอินสแตนซ์ Presentation ใช้วัฒนธรรมที่สูตรเวิร์กบุ๊กคาดหวัง; ตัวอย่างเช่นใช้ ja-JP สำหรับสูตรที่ต้องการกฎการคำนวณ DBCS ของญี่ปุ่น
การคำนวณใหม่และค่าที่แคชไว้
ไฟล์สเปรดชีตมักเก็บทั้งสูตรและค่าที่คำนวณล่าสุด Aspose.Slides จึงสามารถอ่านค่าที่แคชไว้จากเมธอด ChartDataCell.getValue เมื่อโหลดงานนำเสนอและข้อมูลแผนภูมิที่เกี่ยวข้องไม่ได้ถูกเปลี่ยน
หลังจากเปลี่ยนเซลล์อินพุตหรือสูตร อย่าพึ่งพาผลลัพธ์ที่แคชเก่า ให้เรียกเมธอด ChartDataWorkbook.calculateFormulas ก่อนอ่านค่าที่คำนวณหรือบันทึกข้อมูลแผนภูมิที่ขึ้นกับค่าเหล่านั้น
สำหรับสูตรที่อยู่นอกชุดที่สนับสนุน Aspose.Slides อาจไม่สามารถพาร์สสูตรหรือระบุการพึ่งพาได้ หากเวิร์กบุ๊กถูกแก้ไขค่าที่แคชไว้ก่อนหน้านี้จะไม่เชื่อถือได้อีกแล้ว ในกรณีนั้น การอ่านค่าของเซลล์ที่มีสูตรที่ไม่สนับสนุนอาจทำให้เกิดข้อยกเว้น CellUnsupportedDataException
หากแผนภูมิของคุณพึ่งพาฟังก์ชัน Excel ที่ Aspose.Slides ไม่ประเมิน ให้คำนวณสูตรเหล่านั้นด้วยเครื่องมือสเปรดชีตที่สนับสนุนแล้วเขียนค่าที่ได้กลับไปยังเวิร์กบุ๊กแผนภูมิ อย่าแทนที่สูตรที่ไม่สนับสนุนด้วยค่าที่คาดเดา
จัดการข้อผิดพลาดของสูตร
มีสองประเภทของปัญหาที่ต้องแยกแยะ
สูตรอาจถูกต้องแต่ให้ผลลัพธ์เป็นข้อผิดพลาดของสเปรดชีต เช่น #DIV/0!, #N/A, #NAME?, #NULL!, #NUM!, #REF!, หรือ #VALUE! ในกรณีนี้โทเคนข้อผิดพลาดเป็นผลลัพธ์ของเซลล์และสามารถส่งกลับผ่านเมธอด ChartDataCell.getValue
สูตรอาจล้มเหลวในขั้นตอนการพาร์ส, การอ้างอิง, การพึ่งพา, หรือระดับข้อมูลที่สนับสนุน Aspose.Slides ให้ข้อยกเว้นเฉพาะสเปรดชีตสำหรับกรณีเหล่านี้ ได้แก่ CellInvalidFormulaException, CellInvalidReferenceException, CellCircularReferenceException, และ CellUnsupportedDataException
เมื่อสูตรมาจากเทมเพลตหรืออินพุตของผู้ใช้ ควรดักจับข้อผิดพลาดรอบการคำนวณใหม่และการเข้าถึงค่า รายละเอียดข้อผิดพลาดจะแจ้งปัญหาสเปรดชีตเบื้องลึก
const aspose = {};
aspose.slides = require("aspose.slides.via.java");
const presentation = new aspose.slides.Presentation();
try {
const slide = presentation.getSlides().get_Item(0);
const chart = slide.getShapes().addChart(aspose.slides.ChartType.ClusteredColumn, 50, 50, 500, 300);
const workbook = chart.getChartData().getChartDataWorkbook();
const cell = workbook.getCell(0, "A2");
cell.setFormula("SUM(B2:B5)");
try {
workbook.calculateFormulas();
console.log(cell.getValue());
} catch (error) {
console.error("Formula processing error: " + error.message);
}
} finally {
presentation.dispose();
}
ข้อจำกัดเชิงปฏิบัติ
การสนับสนุนสูตรในเวิร์กชีตของแผนภูมิออกแบบมาสำหรับชุดย่อยที่กำหนดไว้ ไม่ใช่เพื่อความเข้ากันได้เต็มรูปแบบกับ Excel ควรคำนึงถึงข้อจำกัดเหล่านี้เมื่อออกแบบกระบวนการรายงาน:
- ใช้ค่าคงที่, ตัวดำเนินการ, การอ้างอิง, และฟังก์ชันที่บันทึกไว้เท่านั้นเมื่อคุณต้องการให้ Aspose.Slides คำนวณสูตรใหม่
- คำนวณใหม่หลังจากแก้ไขเซลล์ที่ผลลัพธ์สูตรอิงถึง
- ถือค่าที่แคชจากงานนำเข้าที่โหลดเป็นภาพถ่าย ณ ขณะนั้น ไม่ใช่การแทนที่การคำนวณใหม่หลังแก้ไข
- ทดสอบสูตรจากเทมเพลตที่มีอยู่ก่อนพึ่งพาค่าที่คำนวณ, โดยเฉพาะเมื่อใช้ฟังก์ชันที่อยู่นอกรายการที่บันทึกไว้
- สำหรับสูตรที่ต้องการเครื่องมือคำนวณสเปรดชีตเต็มรูปแบบ ให้คำนวณภายนอกแล้วอัปเดตเวิร์กบุ๊กแผนภูมิกับค่าที่ได้
คำถามที่พบบ่อย
ความแตกต่างระหว่าง ChartDataCell.setFormula และ ChartDataCell.setR1C1Formula คืออะไร?
ChartDataCell.setFormula เก็บนิพจน์แบบ A1 เช่น B2-C2 ส่วน ChartDataCell.setR1C1Formula เก็บนิพจน์แบบ R1C1 เช่น RC[-2]-RC[-1] ให้ใช้รูปแบบที่สอดคล้องกับวิธีที่คุณสร้างหรือคัดลอกสูตร
ฉันต้องอ่านเซลล์เองหรือค่าในเซลล์หลังการคำนวณหรือไม่?
ChartDataWorkbook.getCell ส่งคืนวัตถุ ChartDataCell เพื่อรับผลลัพธ์ที่คำนวณ ให้เรียกเมธอด ChartDataCell.getValue ของเซลล์นั้นหลังการคำนวณใหม่
ควรเรียก ChartDataWorkbook.calculateFormulas เวลาใด?
ให้เรียก ChartDataWorkbook.calculateFormulas หลังจากเปลี่ยนค่าตัวอินพุตหรือสูตร และก่อนที่คุณจะพึ่งพาผลลัพธ์ที่คำนวณ ซึ่งจะอัปเดตค่าของสูตรที่ตัวประเมินในตัวสนับสนุน
Aspose.Slides สนับสนุนทุกฟังก์ชันของ Excel หรือไม่?
ไม่ ตัวประเมินในตัวสนับสนุนเพียงชุดฟังก์ชันที่บันทึกไว้ ฟังก์ชันที่อยู่นอกชุดนั้นไม่ควรสมมติว่าจะคำนวณใหม่ได้อย่างถูกต้อง หากต้องการความเข้ากันได้เต็มรูปแบบกับสูตร Excel ให้ทำการคำนวณด้วยเครื่องมือสเปรดชีตที่เหมาะสมแล้วเขียนค่าที่ได้ลงในเวิร์กบุ๊กแผนภูมิ
จะเกิดอะไรขึ้นหากงานนำเข้าที่โหลดมีสูตรที่ไม่สนับสนุน?
หากข้อมูลแผนภูมิไม่เปลี่ยนแปลง เวิร์กบุ๊กอาจยังคงมีค่าที่แคชจากการคำนวณก่อนหน้า หลังจากข้อมูลที่เกี่ยวข้องถูกแก้ไข ค่าที่แคชนั้นอาจไม่ถูกต้องอีกต่อไป การเข้าถึงเซลล์ที่สูตรไม่สามารถจัดการได้อาจทำให้เกิดข้อยกเว้น CellUnsupportedDataException
ค่าข้อผิดพลาดของสูตรคือเดียวกับข้อยกเว้นหรือไม่?
ไม่ ผลลัพธ์เช่น #DIV/0! เป็นค่าของสเปรดชีตที่เกิดจากการคำนวณที่ถูกต้อง ส่วนข้อยกเว้นเช่น CellInvalidFormulaException หรือ CellCircularReferenceException ระบุว่ารูปแบบสูตรไม่สามารถประมวลผลได้ตามปกติ
แผนภูมิจะอัปเดตอัตโนมัติเมื่อเซลล์สูตรเปลี่ยนหรือไม่?
ซีรีส์ของแผนภูมิสามารถอ้างอิงเซลล์ในเวิร์กบุ๊กได้ ให้คำนวณเวิร์กบุ๊กก่อน แล้วบันทึกหรือเรนเดอร์งานนำเสนอ หากจุดข้อมูลของแผนภูมิเก็บอ้างอิงเซลล์ที่คำนวณแล้ว แผนภูมิจะใช้ค่าที่อัปเดตเหล่านั้น; ไม่จำเป็นต้องเรียกเมธอดรีเฟรชแผนภูมิแยกต่างหากสำหรับเวิร์กโฟลว์นี้
แผนภูมิสามารถใช้เวิร์กบุ๊ก Excel ภายนอกได้หรือไม่?
ได้ ข้อมูลแผนภูมิสามารถกำหนดค่าให้ใช้เวิร์กบุ๊กภายนอกผ่าน API ของข้อมูลแผนภูมิได้ อย่างไรก็ตาม กระบวนการคำนวณสูตรที่อธิบายในบทความนี้เกี่ยวกับเวิร์กบุ๊กข้อมูลแผนภูมิและชุดสูตรที่ Aspose.Slides ประเมิน ไม่ควรสมมติว่า ChartDataWorkbook.calculateFormulas ให้การคำนวณเต็มรูปแบบของสูตรใดๆ ในไฟล์ XLSX ภายนอก
ฉันสามารถใช้สูตรที่อ้างอิงเวิร์กชีตหรือเวิร์กบุ๊กอื่นได้หรือไม่?
การอ้างอิงแบบ Excel อาจมีอยู่ในเวิร์กบุ๊กแผนภูมิ แต่การประเมินสูตรถูกจำกัดโดยพาร์สเซอร์และชุดฟังก์ชันที่สนับสนุน หากการอ้างอิงข้ามชีตหรือภายนอกเป็นสิ่งสำคัญ ให้ตรวจสอบสูตรนั้นกับเวอร์ชัน Aspose.Slides ที่คุณใช้ สำหรับเวิร์กโฟลว์ที่ต้องการความเข้ากันได้กับการอ้างอิง Excel อย่างกว้างขวาง ให้คำนวณเวิร์กบุ๊กภายนอกแล้วเขียนค่าที่ได้กลับไปยังข้อมูลแผนภูมิ
สูตรควรเริ่มด้วย = หรือไม่?
ตัวอย่าง API ของ Aspose.Slides กำหนดนิพจน์เช่น B2-C2 หรือ SUM(B2:B5) โดยไม่มี = นำหน้า การใช้รูปแบบนี้ทำให้สูตรที่สร้างสอดคลคล้องกับตัวอย่าง API ที่บันทึกไว้