スプレッドシート管理の操作

スプレッドシート管理の操作

スプレッドシート管理の操作

Workbook クラスは、Aspose.Cells FOSS for .NET におけるすべてのスプレッドシート操作のルートオブジェクトです。WorksheetCollection、定義名、および保存/読み込みライフサイクルへのアクセスを提供します。本ガイドでは、フォールトトレラントなロード、ワークシートの編成、印刷レイアウトの設定、行/列/セルのレイアウト制御について説明します。


修復オプション付きブックの読み込み

既存の XLSX ファイルを読み込むには、Workbook コンストラクタにファイルパスを渡します。TryRepairPackageTryRepairXmltrue に設定した LoadOptions オブジェクトを提供して、軽度の構造破損があるファイルの復旧を試みます。ファイルが復旧不可能な場合は、WorkbookLoadException がスローされます。

using Aspose.Cells_FOSS;

var options = new LoadOptions
{
    TryRepairPackage = true,
    TryRepairXml = true,
};

try
{
    var wb = new Workbook("data.xlsx", options);
    Console.WriteLine("Sheets: " + wb.Worksheets.Count);
    Console.WriteLine("Cell A1: " + wb.Worksheets[0].Cells["A1"].StringValue);
}
catch (WorkbookLoadException ex)
{
    Console.WriteLine("Unrecoverable: " + ex.Message);
}

ワークシートの追加と編成

Workbook.WorksheetsWorksheetCollection を返します。Add(name) を呼び出して名前で新しいワークシートを追加します;このメソッドは新しいシートのインデックスを返します。ワークシートはゼロベースのインデックスまたは名前でアクセスできます。WorksheetCollection.ActiveSheetName を設定して、ファイルを開いたときにアクティブになるタブを制御します。

using Aspose.Cells_FOSS;

var wb = new Workbook();

// Rename the default sheet
wb.Worksheets[0].Name = "Summary";

// Add sheets
var dataIdx = wb.Worksheets.Add("Data");
var archiveIdx = wb.Worksheets.Add("Archive");

// Set active sheet
wb.Worksheets.ActiveSheetName = "Data";

// Write to sheets by name
wb.Worksheets["Summary"].Cells["A1"].PutValue("Overview total");
wb.Worksheets["Data"].Cells["A1"].PutValue("Raw rows start here");

wb.Save("organised.xlsx");

// Verify
var loaded = new Workbook("organised.xlsx");
Console.WriteLine("Active: " + loaded.Worksheets.ActiveSheetName);
Console.WriteLine("Sheet count: " + loaded.Worksheets.Count);

ワークシートの非表示と表示

シートを削除せずに非表示にするには、Worksheet.VisibilityTypeVisibilityType.Hiddenに設定します。非表示のシートはXLSXファイルに保持され、VisibilityType.Visibleを設定することで再表示できます。タブの色はWorksheet.TabColorで設定します。

using Aspose.Cells_FOSS;

var wb = new Workbook();
wb.Worksheets[0].Name = "Visible";
var hiddenIdx = wb.Worksheets.Add("Internal");
var hiddenSheet = wb.Worksheets[hiddenIdx];

hiddenSheet.VisibilityType = VisibilityType.Hidden;
hiddenSheet.Cells["A1"].PutValue("Internal data");

wb.Worksheets["Visible"].TabColor = Color.FromArgb(255, 70, 130, 180);

wb.Save("hidden.xlsx");

ページ設定の構成

Worksheet.PageSetupはすべての印刷関連プロパティを公開します。PageOrientationTypeを使用して縦向きと横向きを切り替えます。PaperSizeTypeで用紙サイズを選択します。PrintAreaで印刷範囲を定義し、PrintTitleRows/PrintTitleColumnsで繰り返し行/列を設定し、AddHorizontalPageBreakAddVerticalPageBreakで手動改ページを追加します。

using Aspose.Cells_FOSS;

var wb = new Workbook();
var ws = wb.Worksheets[0];

// Sample data
for (var r = 0; r < 60; r++)
    ws.Cells[r, 0].PutValue("Row " + (r + 1));

var ps = ws.PageSetup;
ps.Orientation = PageOrientationType.Landscape;
ps.PaperSize = PaperSizeType.PaperA4;
ps.LeftMarginInch = 0.5d;
ps.RightMarginInch = 0.5d;
ps.TopMarginInch = 0.75d;
ps.BottomMarginInch = 0.75d;
ps.PrintArea = "$A$1:$H$60";
ps.PrintTitleRows = "$1:$1";
ps.CenterHeader = "Sales Report";
ps.LeftFooter = "Confidential";
ps.RightFooter = "Page &P of &N";
ps.PrintGridlines = true;
ps.CenterHorizontally = true;
ps.AddHorizontalPageBreak(30);

wb.Save("paged.xlsx");

var loaded = new Workbook("paged.xlsx");
Console.WriteLine("Orientation: " + loaded.Worksheets[0].PageSetup.Orientation);
Console.WriteLine("Print area: " + loaded.Worksheets[0].PageSetup.PrintArea);

行と列のサイズ設定

インデックスでWorksheet.Cells.Rowsにアクセスして、Rowオブジェクトを取得します。Row.Heightを(ポイントで)設定して行の高さを制御します。Row.IsHiddentrueに設定して行を非表示にします。インデックスでWorksheet.Cells.Columnsにアクセスして、Columnオブジェクトを取得します。Column.Widthを(文字単位で)設定し、Column.IsHiddenも設定します。

using Aspose.Cells_FOSS;

var wb = new Workbook();
var ws = wb.Worksheets[0];

// Populate data
for (var r = 0; r < 5; r++)
    for (var c = 0; c < 4; c++)
        ws.Cells[r, c].PutValue($"R{r + 1}C{c + 1}");

// Row height and visibility
ws.Cells.Rows[0].Height = 28d;   // Header taller
ws.Cells.Rows[3].IsHidden = true; // Hide row 4

// Column width and visibility
ws.Cells.Columns[0].Width = 22d;
ws.Cells.Columns[3].IsHidden = true;

wb.Save("layout.xlsx");

var loaded = new Workbook("layout.xlsx");
Console.WriteLine("Row 0 height: " + loaded.Worksheets[0].Cells.Rows[0].Height);
Console.WriteLine("Col 0 width: " + loaded.Worksheets[0].Cells.Columns[0].Width);

セルの結合

Worksheet.Cells.Merge(firstRow, firstColumn, totalRows, totalColumns)を呼び出して、連続した矩形ブロックを単一のセルに結合します。結合されたセルは左上セルの値を継承します。ロードされたブック内のすべての結合領域を取得するには、Worksheet.Cells.MergedCellsを使用します。

using Aspose.Cells_FOSS;

var wb = new Workbook();
var ws = wb.Worksheets[0];

// Title spanning A1:D1
ws.Cells["A1"].PutValue("Quarterly Sales Report");
ws.Cells.Merge(0, 0, 1, 4);

// Section header spanning A3:D3
ws.Cells["A3"].PutValue("Region: North");
ws.Cells.Merge(2, 0, 1, 4);

// Column headers
ws.Cells["A4"].PutValue("Product"); ws.Cells["B4"].PutValue("Q1");
ws.Cells["C4"].PutValue("Q2");      ws.Cells["D4"].PutValue("Q3");

wb.Save("report.xlsx");

var loaded = new Workbook("report.xlsx");
Console.WriteLine("Merged regions: " + loaded.Worksheets[0].Cells.MergedCells.Count);

ヒントとベストプラクティス

  • Excel でファイルを開いたときに正しいタブが選択されるように、WorksheetCollection.ActiveSheetName を使用します。
  • ページ余白をインチで設定します(LeftMarginInch, TopMarginInch)— これらは整数ではなく浮動小数点値です。
  • 行/列を非表示にする(IsHidden = true)ことでデータは保持されますが、行を削除するとデータは永久に失われます。
  • 各変更の後ではなく、バッチ操作の最後に一度だけ Workbook.Save() を呼び出してください。
  • データシートではセルの結合は控えめに行ってください — 結合された領域はソートやオートフィルタが結合エリア全体で正しく機能しなくなります。

一般的な問題

問題原因修正
ロード時の WorkbookLoadExceptionXLSX 内の ZIP または XML が破損しているLoadOptions.TryRepairPackage = trueTryRepairXml = true を設定します
Add(name) が誤ったインデックスを返すシート名をインデックスとして使用するAdd() が整数インデックスを返します。そのインデックスを使用して新しいシートにアクセスしてください
行の高さが保持されません高さが0または負の値に設定されています28d のような正の double 値を使用してください
結合セルが誤った値を表示しています結合範囲の左上以外のセルに値が書き込まれましたCells.Merge() を呼び出す前に、左上のセルに値を書き込んでください
改ページが表示されませんAddHorizontalPageBreakSave() の後に呼び出されました呼び出す前にページ区切りを設定してください Save()

FAQ

シートは最大何枚まで追加できますか?

XLSX 形式は、1 つのブックあたり最大 1024 シートをサポートしています。実際の制限は、利用可能なメモリとファイルサイズに依存します。

ブック間でワークシートをコピーできますか?

現在の API インターフェースでは、ブック間のシートコピー用の CopyTo メソッドが提供されていません。両方のファイルを読み込み、セルごとにデータを転送してください。

ワークシートの順序を変更するにはどうすればいいですか?

WorksheetCollection のインデックスアクセスを利用し、シート名を変更して論理的な順序を変更してください。直接的な位置移動は、現在の API インターフェースにはありません。

PageSetup は余白にどの単位を使用しますか?

すべての余白プロパティ(LeftMarginInchTopMarginInch など)は、double 値としてインチで表されます。

Cells.Merge は既存のセルデータを置き換えますか?

左上のセルの値は保持され、他の結合されたセルの値はクリアされます。


API Reference 概要

クラス / メソッド説明
Workbookルートオブジェクト — ワークブックを作成、読み込み、保存
Workbook.WorksheetsWorksheetCollection を返します
Workbook.Save(path)ワークブックを XLSX に永続化
WorksheetCollection.Add(name)名前で新しいワークシートを追加
WorksheetCollection.ActiveSheetNameファイルを開いたときにアクティブなタブ
Worksheet.VisibilityTypeVisibilityType.Hidden または Visible
Worksheet.TabColorタブの色 (Color)
Worksheet.PageSetup印刷レイアウト設定
PageSetup.OrientationPageOrientationType.Landscape または Portrait
PageSetup.PaperSizePaperSizeType.PaperA4、など.
PageSetup.AddHorizontalPageBreak(row)横方向のページ区切りを挿入
Cells.Rows[index].Heightポイント単位の行の高さ
Cells.Rows[index].IsHidden行の非表示/表示
Cells.Columns[index].Width文字単位の列幅
Cells.Columns[index].IsHidden列の非表示/表示
Cells.Merge(row, col, numRows, numCols)長方形ブロックをマージする
Cells.MergedCellsシート内の結合された領域の一覧
LoadOptions.TryRepairPackageロード時に ZIP 修復を試みる
LoadOptions.TryRepairXmlロード時に XML 修復を試みる
WorkbookLoadExceptionファイルが回復不可能な場合にスローされます

参照

 日本語