คุณลักษณะและฟังก์ชันการทำงาน

คุณลักษณะและฟังก์ชันการทำงาน

คุณลักษณะและฟังก์ชัน

หน้านี้ครอบคลุมความสามารถในการสร้างแผนภูมิของ 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) จะประเมินเป็นค่า placeholder 0 เนื่องจากรุ่นนี้ไม่ได้รวมเครื่องมือจัดหน้า.
  • ดู คู่มือการติดตั้ง เพื่อเพิ่มแพ็กเกจผ่าน 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การจัดรูปแบบข้อความและการเติมสี (สีทึบ, ไล่ระดับสี) บนองค์ประกอบข้อความของแผนภูมิ

ดูเพิ่มเติม

 ภาษาไทย