Cara Bekerja dengan Jadual dalam .NET

Cara Bekerja dengan Jadual dalam .NET

Aspose.Slides FOSS for .NET menyokong penciptaan jadual pada slaid dengan lebar lajur dan tinggi baris yang boleh dikonfigurasi. Panduan ini menunjukkan cara menambah jadual, mengisinya dengan data, dan menerapkan pemformatan teks asas pada sel.

Panduan Langkah demi Langkah

Langkah 1: Pasang Pakej

dotnet add package Aspose.Slides.Foss

Langkah 2: Cipta atau Buka Persembahan

using Aspose.Slides.Foss;
using Aspose.Slides.Foss.Export;

using var prs = new Presentation();
var slide = prs.Slides[0];
// ... add table ...
prs.Save("table.pptx", SaveFormat.Pptx);

Langkah 3: Tentukan Lebar Lajur dan Tinggi Baris

Jadual memerlukan lebar lajur dan tinggi baris yang jelas dalam titik (1 titik = 1/72 inci). Slaid standard mempunyai lebar 720 titik dan tinggi 540 titik.

var colWidths = new double[] { 200.0, 150.0, 150.0 };   // 3 columns
var rowHeights = new double[] { 45.0, 40.0, 40.0 };     // 3 rows

Langkah 4: Tambah Jadual

slide.Shapes.AddTable(x, y, columnWidths, rowHeights) membuat jadual pada kedudukan (x, y):

using Aspose.Slides.Foss;
using Aspose.Slides.Foss.Export;

using var prs = new Presentation();
var slide = prs.Slides[0];

var colWidths = new double[] { 200.0, 150.0, 150.0 };
var rowHeights = new double[] { 45.0, 40.0, 40.0 };
var table = slide.Shapes.AddTable(50, 100, colWidths, rowHeights);

prs.Save("table.pptx", SaveFormat.Pptx);

Langkah 5: Tetapkan Teks Sel

Akses sel melalui table.Rows[rowIndex][colIndex] dan tetapkan teks melalui .TextFrame.Text:

using Aspose.Slides.Foss;
using Aspose.Slides.Foss.Export;

using var prs = new Presentation();
var slide = prs.Slides[0];

var colWidths = new double[] { 200.0, 150.0, 150.0 };
var rowHeights = new double[] { 45.0, 40.0, 40.0 };
var table = slide.Shapes.AddTable(50, 100, colWidths, rowHeights);

// Header row (row 0)
string[] headers = { "Product", "Units Sold", "Revenue" };
for (int col = 0; col < headers.Length; col++)
    table.Rows[0][col].TextFrame.Text = headers[col];

// Data rows
string[][] data = {
    new[] { "Widget A", "1,200", "$24,000" },
    new[] { "Widget B", "850", "$17,000" },
};
for (int rowIdx = 0; rowIdx < data.Length; rowIdx++)
    for (int col = 0; col < data[rowIdx].Length; col++)
        table.Rows[rowIdx + 1][col].TextFrame.Text = data[rowIdx][col];

prs.Save("sales-table.pptx", SaveFormat.Pptx);

Langkah 6: Format Teks Sel Header

Gunakan pemformatan tebal pada sel tajuk menggunakan PortionFormat:

using Aspose.Slides.Foss;
using Aspose.Slides.Foss.Drawing;

for (int col = 0; col < headers.Length; col++)
{
    var cell = table.Rows[0][col];
    var portions = cell.TextFrame.Paragraphs[0].Portions;
    if (portions.Count > 0)
    {
        var fmt = portions[0].PortionFormat;
        fmt.FontBold = NullableBool.True;
        fmt.FillFormat.FillType = FillType.Solid;
        fmt.FillFormat.SolidFillColor.Color = Color.FromArgb(255, 255, 255, 255);
    }
}

Contoh Kerja Lengkap

using Aspose.Slides.Foss;
using Aspose.Slides.Foss.Drawing;
using Aspose.Slides.Foss.Export;

string[][] dataRows = {
    new[] { "North", "$1.2M", "+8%" },
    new[] { "South", "$0.9M", "+4%" },
    new[] { "East",  "$1.5M", "+12%" },
    new[] { "West",  "$0.7M", "+2%" },
};
string[] headers = { "Region", "Revenue", "Growth" };

using var prs = new Presentation();
var slide = prs.Slides[0];

var colWidths = new double[] { 180.0, 140.0, 120.0 };
var rowHeights = new double[dataRows.Length + 1];
rowHeights[0] = 45.0;
for (int i = 1; i < rowHeights.Length; i++) rowHeights[i] = 38.0;

var table = slide.Shapes.AddTable(60, 80, colWidths, rowHeights);

// Header row
for (int col = 0; col < headers.Length; col++)
{
    var cell = table.Rows[0][col];
    cell.TextFrame.Text = headers[col];
    if (cell.TextFrame.Paragraphs[0].Portions.Count > 0)
    {
        var fmt = cell.TextFrame.Paragraphs[0].Portions[0].PortionFormat;
        fmt.FontBold = NullableBool.True;
    }
}

// Data rows
for (int rowIdx = 0; rowIdx < dataRows.Length; rowIdx++)
    for (int col = 0; col < dataRows[rowIdx].Length; col++)
        table.Rows[rowIdx + 1][col].TextFrame.Text = dataRows[rowIdx][col];

prs.Save("regional-revenue.pptx", SaveFormat.Pptx);
Console.WriteLine("Saved regional-revenue.pptx");

Isu Umum dan Penyelesaian

IndexOutOfRangeException apabila mengakses table.Rows[row][col]

Indeks baris dan lajur bermula dari sifar. Jika anda mendefinisikan rowHeights dengan 3 elemen, indeks baris yang sah ialah 0, 1, 2.

Teks sel tidak muncul dalam fail yang disimpan

Sentiasa tugaskan melalui .TextFrame.Text, bukan melalui .Text secara langsung pada objek sel:

// Correct
table.Rows[0][0].TextFrame.Text = "Header";

// Wrong: will not compile or silent failure
// table.Rows[0][0].Text = "Header";

Kedudukan jadual berada di luar slaid

Semak bahawa x + sum(colWidths) <= 720 dan y + sum(rowHeights) <= 540 untuk slaid standard.


Soalan Lazim

Bolehkah saya menggabungkan sel jadual?

Ya. Gunakan Table.MergeCells(ICell cell1, ICell cell2, bool allowSplitting) untuk menggabungkan dua sel bersebelahan. Tetapkan allowSplitting kepada false untuk mengelakkan sel yang digabungkan daripada dibahagikan semula. Contoh:

// Merge cell (row 0, col 0) with cell (row 0, col 1)
var cell1 = table.Rows[0][0];
var cell2 = table.Rows[0][1];
table.MergeCells(cell1, cell2, false);

Bolehkah saya menggunakan warna latar belakang untuk seluruh jadual?

Terapkan pemformatan isi pada setiap sel individu:

using Aspose.Slides.Foss;
using Aspose.Slides.Foss.Drawing;

for (int row = 0; row < table.Rows.Count; row++)
    for (int col = 0; col < table.Rows[row].Count; col++)
    {
        var cell = table.Rows[row][col];
        cell.CellFormat.FillFormat.FillType = FillType.Solid;
        cell.CellFormat.FillFormat.SolidFillColor.Color = Color.FromArgb(255, 240, 248, 255);
    }

Bolehkah saya menetapkan gaya sempadan sel?

Ciri sempadan sel boleh diakses melalui sifat cell.CellFormat.BorderLeft, BorderTop, BorderRight, dan BorderBottom. Rujuk kepada rujukan API untuk senarai lengkap atribut format sempadan.


Lihat Juga

 Bahasa Melayu