スプレッドシート管理の操作
スプレッドシート管理の操作
スプレッドシート管理は、クレートの日常的なオブジェクト表面であるワークシート、セルコレクション、型付き値、数式、スタイリング、およびワークブックを利用可能にする構造的機能をカバーします。エントリーポイントは常に Workbook です。
Worksheets
シートはワークブックのワークシートコレクションを介して管理されます — 読み取りアクセスは get_worksheets、変更は get_worksheets_mut を通じて行います。シートはインデックス (get(0)) または名前 (get_by_name) で指定され、set_name で名前を変更し、add_worksheet で追加されます:
let mut workbook = Workbook::new();
{
let mut worksheets = workbook.get_worksheets_mut();
let sheet = worksheets.get(0)?;
sheet.set_name("Data")?;
}セルへのアクセスと型付き値
セルは A1 形式または数値で指定されます。get_by_index(row, column) は生成されたレイアウトに適しています:
let mut cells = sheet.get_cells_mut();
cells.get("A1")?.put_value_string("Month")?;
for month in 1..=12_u32 {
cells
.get_by_index(month, 0)
.put_value_string(format!("Month {month}"))?;
}読み戻すと、display_string_value は表示テキストを返し、value_type は格納された型を報告します。
キャッシュされた結果を持つ数式
cells.get("F1")?.put_value_i32(10)?;
cells.get("G1")?
.put_formula_with_cached_value("=F1*2", CellValue::Number(20.0))?;キャッシュされた値は、Excel が最初の再計算を行う前に表示するものです — これを提供すれば、ファイルの利用者はすぐに正しい結果を見ることができます。
Styling
CellStyle は Font、Fill、Borders を集約します;StyleFlag は更新が適用されるスタイルの側面を制御し、上書きしない限り既存の書式設定が保持されます。NumberFormat は値の表示方法を管理します。
ページ設定とナビゲーション
PageSetup は印刷レイアウトを管理します:PaperSizeType、PageOrientationType、および余白。FreezePane はスクロール中にヘッダー行を表示したままにし、行と列の表示/非表示は VisibilityType を使用します。
構造:テーブル、名前、コメント、ハイパーリンク
ListObjectは範囲を構造化テーブルに変換し、TableStyleTypeスタイルとTotalsCalculation合計行を提供します。DefinedNameとDefinedNameCollectionは名前付き範囲を管理します。Comment/CommentCollectionとHyperlink/HyperlinkCollectionは注釈とナビゲーションをカバーします。
ヒントとベストプラクティス
- 可変借用 (
get_worksheets_mut,get_cells_mut) はスコープブロック内に保ち、ブロックが閉じた後にワークブックを保存してください。 - ループや生成されたレイアウトには
get_by_indexを使用し、固定位置には A1 名を使用します。 - 無関係な書式設定に影響を与えないよう、
StyleFlagを使用してスタイルを適用します。 - 重要な範囲はアドレスをハードコーディングする代わりに、
DefinedNameで名前付けしてください。
一般的な問題
| 問題 | 原因 | 修正 |
|---|---|---|
| ワークブック保存時の借用エラー | 可変ワークシートの借用がまだ残っている | save を呼び出す前にスコープブロックを閉じてください |
| Excelで数式が0を表示する | キャッシュされた値が提供されていません | 期待される結果とともに put_formula_with_cached_value を使用してください |
| シートが見つかりません | 名前が一致しません | インデックスでアドレス指定するか、set_name のスペルを確認してください |
FAQ
2番目のワークシートを追加するにはどうすればよいですか?
ワークブックで add_worksheet を呼び出し、次にインデックスまたは名前でワークシートコレクションから取得します。
同じパスで読み取りと書き込みを行うことはできますか?
はい — Workbook::load_xlsx でロードし、get_worksheets_mut で変更し、save で同じパスまたは新しいパスに保存します。
型付きセッターは値を変換しますか?
変換は行われません: 各 put_value_* セッターはそのネイティブ型を保存し、display_string_value は読み取り時に表示テキストをレンダリングします。
API Reference の概要
| クラス/メソッド | 説明 |
|---|---|
Workbook.add_worksheet | ワークブックにシートを追加する |
Worksheet.set_name | シートの名前を変更する |
Worksheet.get_cells_mut | 可変セルコレクション |
CellMut.put_value_string | 型付き文字列セッター |
CellMut.put_formula_with_cached_value | 数式とキャッシュされた結果 |
CellStyle | フォント、塗りつぶし、枠線の書式設定 |
StyleFlag | 適用するスタイルの側面を選択します |
PageSetup | 印刷とページレイアウト |
ListObject | 構造化テーブル |