คุณลักษณะและฟังก์ชันการทำงาน
คุณลักษณะและฟังก์ชัน
หน้านี้ครอบคลุมความสามารถในการสร้างแผนภูมิของ Aspose.Words FOSS สำหรับ .NET พร้อมตัวอย่าง C# ที่ทำงานได้, สร้างขึ้นโดยอิงกับ DocumentBuilder.InsertChart() และ Chart โมเดลวัตถุ. โมเดลวัตถุเอกสารเต็มรูปแบบของไลบรารี (paragraphs, tables, styles, bookmarks, sections) ถูกอธิบายในภาพรวมของผลิตภัณฑ์และใน Quickstart คู่มือ.
การสร้างเอกสารพร้อมแผนภูมิ
แทรกรูปทรงแผนภูมิด้วย DocumentBuilder.InsertChart() แล้วเข้าถึงอ็อบเจกต์ Chart ของมันผ่าน Shape ที่คืนค่าให้ ทำการลบชุดข้อมูลที่สร้างโดยอัตโนมัติก่อนเพิ่มข้อมูลจริง:
using Aspose.Words;
using Aspose.Words.Drawing.Charts;
Document doc = new Document();
DocumentBuilder builder = new DocumentBuilder(doc);
Shape shape = builder.InsertChart(ChartType.Line, 432, 252);
Chart chart = shape.Chart;
// Delete default generated series.
chart.Series.Clear();
string[] categories = new string[] { "AW Category 1", "AW Category 2", "AW Category 3" };
chart.Series.Add("AW Series 1", categories, new double[] { 4.3, 2.5, 3.5 });
doc.Save("chart.docx");ซีรีส์แผนภูมิ, จุดข้อมูล, และมาร์คเกอร์
Chart.Series คือ ChartSeriesCollection. แต่ละ ChartSeries เปิดเผยจุดข้อมูลแต่ละรายการผ่าน DataPoints ซึ่งทำให้คุณสามารถปรับแต่งมาร์คเกอร์หรือการจัดรูปแบบของจุดเดียวได้โดยไม่กระทบต่อส่วนอื่นของซีรีส์:
Shape shape = builder.InsertChart(ChartType.Line, 432, 252);
Chart chart = shape.Chart;
chart.Series.Clear();
chart.Series.Add("AW Series 1", categories, new double[] { 4.3, 2.5, 3.5 });
ChartSeries series = chart.Series[0];
ChartDataPointCollection points = series.DataPoints;
ChartDataPoint point1 = points[0];
ChartDataPoint point2 = points[1];
point1.InvertIfNegative = true;
point1.Marker.Symbol = MarkerSymbol.Square;
point2.InvertIfNegative = true;
point2.Marker.Symbol = MarkerSymbol.Diamond;
// Reset a single data point back to the series' inherited default formatting.
point1.ClearFormat();ป้ายข้อมูลแผนภูมิ
ChartSeries.DataLabels คือ ChartDataLabelCollection ที่ควบคุมป้ายกำกับสำหรับทุกจุดในซีรีส์พร้อมกัน. ใช้ DataLabels[i] เพื่อแทนที่ ChartDataLabel รายบุคคล:
Shape shape = builder.InsertChart(ChartType.Line, 432, 252);
Chart chart = shape.Chart;
chart.Series.Clear();
chart.Series.Add("AW Series 1", categories, new double[] { 4.3, 2.5, 3.5 });
ChartSeries series = chart.Series[0];
series.HasDataLabels = true;
series.DataLabels.ShowValue = true;
ChartDataLabel label = series.DataLabels[1];
label.ShowCategoryName = true;
label.Position = ChartDataLabelPosition.Below;ชื่อแกนแผนภูมิ
Chart.AxisX และ Chart.AxisY แต่ละอันเปิดเผย ChartAxisTitle ผ่านคุณสมบัติ Title ของพวกมัน:
Document doc = new Document();
DocumentBuilder builder = new DocumentBuilder(doc);
Shape shape = builder.InsertChart(ChartType.Column, 432, 252);
Chart chart = shape.Chart;
ChartAxisTitle xTitle = chart.AxisX.Title;
ChartAxisTitle yTitle = chart.AxisY.Title;
xTitle.Show = true;
xTitle.Text = "Categories";
yTitle.Show = true;
yTitle.Text = "Values";คำอธิบายแผนภูมิและแบบอักษร
Chart.Legend เปิดเผย LegendEntries, หนึ่ง ChartLegendEntry ต่อซีรีส์, แต่ละอันมี Font ของตนเอง. Font ทำหน้าที่จัดรูปแบบการเติมสี, ดังนั้น Font.Fill.Solid() จะตั้งค่าสีข้อความทึบเช่นเดียวกับที่ทำกับการรันที่จัดรูปแบบอื่นใด:
using System.Drawing;
Shape shape = builder.InsertChart(ChartType.Column, 432, 252);
ChartLegend legend = shape.Chart.Legend;
Font font1 = legend.LegendEntries[0].Font;
Font font2 = legend.LegendEntries[1].Font;
font1.Fill.Solid(Color.Blue);
font2.Color = Color.Green;ตารางข้อมูลแผนภูมิ
Chart.DataTable คือ ChartDataTable ที่แสดงค่าซีรีส์พื้นฐานใต้แผนภูมิ. คุณสมบัติ Has*Border และ HasLegendKeys ของมันควบคุมว่าแต่ละส่วนใดที่จะแสดง:
Shape shape = builder.InsertChart(ChartType.Column, 432, 252);
ChartDataTable dataTable = shape.Chart.DataTable;
dataTable.HasLegendKeys = false;
dataTable.HasHorizontalBorder = true;
dataTable.HasVerticalBorder = true;
dataTable.HasOutlineBorder = false;
doc.Save("chart-report.docx");เคล็ดลับและแนวทางปฏิบัติที่ดีที่สุด
DocumentBuilder.InsertChart()เติมข้อมูลให้แผนภูมิใหม่ด้วยซีรีส์ที่สร้างโดยค่าเริ่มต้น — เรียกchart.Series.Clear()ก่อนเพิ่มข้อมูลของคุณเอง, หรือค่าตั้งต้นจะอยู่เคียงข้างมัน.- ใช้
ChartSeries.DataLabels[i]เพื่อระบุป้ายข้อมูลหนึ่งรายการเมื่อมีจุดเพียงไม่กี่จุดที่ต้องการการจัดรูปแบบแบบกำหนดเอง; ใช้คุณสมบัติระดับคอลเลกชัน (DataLabels.ShowValueและอื่น ๆ ที่คล้ายกัน) เพื่อกำหนดค่าเริ่มต้นสำหรับทุกป้ายในซีรีส์พร้อมกัน. ClearFormat()มีให้ใช้ทั้งบนChartDataPointและChartDataLabelCollection— มันรีเซ็ตการจัดรูปแบบโดยตรงกลับไปยังค่าที่ซีรีส์สืบทอดโดยค่าเริ่มต้น.- เครื่องมือประเมินค่า field จะอัปเดตฟิลด์เนื้อหาเช่น
DATEและDOCPROPERTYอย่างอัตโนมัติ, แต่ฟิลด์ที่ขึ้นอยู่กับการจัดหน้า (หมายเลขหน้าในสารบัญ,NUMPAGES) จะประเมินเป็นค่า placeholder0เนื่องจากรุ่นนี้ไม่ได้รวมเครื่องมือจัดหน้า. - ดู คู่มือการติดตั้ง เพื่อเพิ่มแพ็กเกจผ่าน NuGet หรือสร้างจากซอร์สก่อนอ้างอิง API เหล่านี้.
ปัญหาทั่วไป
| ปัญหา | สาเหตุ | การแก้ไข |
|---|---|---|
เลขหน้าหรือรายการในสารบัญแสดง 0 | ฉบับนี้ไม่ได้รวมเอาเอนจินการจัดหน้า/การเรนเดอร์ | พฤติกรรมที่คาดหวัง — ค่าฟิลด์ที่ขึ้นกับการจัดหน้าไม่ได้ถูกคำนวณ; ใช้เวอร์ชันเชิงพาณิชย์ Aspose.Words สำหรับ .NET หากคุณต้องการ |
Document.Save() ถึง .pdf, .xps, หรือส่วนขยายของรูปภาพล้มเหลว | รูปแบบการเรนเดอร์ไม่ได้รวมอยู่ในฉบับนี้ | บันทึกเป็น DOCX, DOCM, DOTX, DOTM, Flat OPC, Markdown หรือข้อความธรรมดาแทน |
การโหลดไฟล์ .doc, .rtf, .odt, .html หรือ .epub ล้มเหลว | รองรับเฉพาะ DOCX, DOCM, DOTX, DOTM, Flat OPC, Markdown และข้อความธรรมดาสำหรับการโหลด/บันทึก | แปลงไฟล์ต้นฉบับเป็น DOCX ก่อน หรือใช้ฉบับเชิงพาณิชย์ |
| ชุดข้อมูลแผนภูมิปริยายยังคงปรากฏหลังจากเพิ่มข้อมูลที่กำหนดเอง | chart.Series.Clear() ไม่ได้ถูกเรียกหลังจาก InsertChart() | ลบชุดข้อมูลที่สร้างโดยค่าเริ่มต้นก่อนเรียก chart.Series.Add() |
FAQ
ทำไมหมายเลขหน้าในสารบัญของฉันถึงแสดงเป็น 0?
รุ่น FOSS นี้ไม่ได้รวมระบบย่อยการจัดหน้าและการเรนเดอร์ ดังนั้นค่าฟิลด์ใดๆ ที่ขึ้นอยู่กับการจัดหน้า — รวมถึงหมายเลขหน้า — จะประเมินเป็นตัวแทน 0 แทนค่าที่คำนวณได้.
ฉันสามารถส่งออกเอกสารเป็น PDF หรือรูปแบบภาพได้หรือไม่?
ไม่มีในรุ่นนี้ การส่งออกเป็น PDF, XPS, และภาพขึ้นอยู่กับระบบเรนเดอร์เดียวกันที่ถูกลบออกเพื่อให้รุ่นนี้เป็นฟรี ใช้ Aspose.Words เชิงพาณิชย์สำหรับ .NET สำหรับผลลัพธ์เหล่านั้น.
ฉันสามารถสร้างลายเซ็นดิจิทัลใหม่บนเอกสารได้หรือไม่?
ไม่ได้ — รุ่นนี้สามารถตรวจสอบลายเซ็นดิจิทัลที่มีอยู่ได้ แต่ไม่สามารถสร้างลายเซ็นใหม่ได้.
ประเภทแผนภูมิใดที่ InsertChart() รองรับ?
InsertChart() รับค่า ChartType — enum ครอบคลุมกลุ่มแผนภูมิมาตรฐาน เช่น เส้น, คอลัมน์, แถบ, พาย, พื้นที่, ดอนัท, เรดาร์, กระจาย, สต็อก, และแผนภูมิพื้นผิว รวมถึงรูปแบบแบบสแตคและ 3D.
API Reference สรุป
| คลาส / คุณสมบัติ | คำอธิบาย |
|---|---|
Document | วัตถุเอกสารราก; Save() เขียนเป็น DOCX, Markdown หรือข้อความธรรมดา |
DocumentBuilder | เคอร์เซอร์ระดับสูง API; InsertChart() เพิ่มรูปร่างแผนภูมิ |
Shape | วัตถุการวาดที่ส่งคืนโดย InsertChart(); เปิดเผยคุณสมบัติ Chart |
Chart | วัตถุแผนภูมิ; Series, Legend, DataTable, AxisX, AxisY, Title |
ChartSeries / ChartSeriesCollection | ข้อมูลซีรีส์ (Add, Clear) และการตั้งค่าต่อซีรีส์ |
ChartDataPoint / ChartDataPointCollection | การจัดรูปแบบต่อจุด; ClearFormat() |
ChartMarker / MarkerSymbol | รูปทรงและขนาดของเครื่องหมายจุดข้อมูล |
ChartDataLabel / ChartDataLabelCollection | การตั้งค่าการแสดงผลป้ายกำกับต่อป้ายและทั่วทั้งคอลเลกชัน |
ChartAxisTitle | ข้อความหัวเรื่องที่แสดงบน Chart.AxisX / Chart.AxisY |
ChartLegend / ChartLegendEntry | คำอธิบายแผนภูมิและรายการต่อซีรีส์ของมัน |
ChartDataTable | ตารางข้อมูลแสดงใต้แผนภูมิ |
Font / Fill | การจัดรูปแบบข้อความและการเติมสี (สีทึบ, ไล่ระดับสี) บนองค์ประกอบข้อความของแผนภูมิ |