はじめに
TypeScript 用の Aspose.Cells FOSS は、コアクラスのコンパクトなセット (Workbook, WorksheetCollection, Worksheet, Cell, Style) と、書式設定やフィルタリング用のサポート型を通じて機能を公開します。この投稿は、そのコア API の表面を体系的に巡るものです――単一の狭いトピックではなく、ライブラリ上に構築されたすべてのアプリケーションが最終的に使用する基本事項、すなわちワークブックの開閉、ワークシートのナビゲーション、セル値や数式の読み書き、スタイルの適用、データのフィルタリング、そして他フォーマットへのエクスポートをカバーします。
以下の各セクションでは、API の一領域を、具体的なメソッドとプロパティを通して取り上げ、実際に動作する TypeScript の例で裏付けます。目的は、new Workbook() から個々の Cell プロパティに至るまで、部品がどのように組み合わさるかという実践的なメンタルモデルを提供することです。
主な機能
ワークブックとワークシートの基本
Workbook は、new Workbook() により空の状態で作成するか、Workbook.load(filePath, password) を用いて既存ファイルから非同期にロードするかのいずれかです。すべてのワークブックは worksheets を公開します。これはインデックス付け、イテレーション、配列スタイルのメソッド(map, filter, forEach, find, indexOf)をサポートする WorksheetCollection であり、addWorksheet(name), removeWorksheet(index), moveWorksheet(fromIndex, toIndex) も利用できます。変更を永続化するには workbook.save(filePath, options) を呼び出します。
const workbook = new Workbook();
const ws1 = workbook.worksheets.addWorksheet();
const ws2 = workbook.worksheets.addWorksheet("CustomSheet1");
console.log("Total worksheets:", workbook.worksheets.length);
workbook.worksheets.removeWorksheet(1);
console.log("After delete:", workbook.worksheets.length);
console.log(
"Names:",
workbook.worksheets.worksheets.map((w) => w.name),
);
await workbook.save("workbook.xlsx");
セルへのアクセスと値
A Worksheet は putValue(key, value)、getCell2(key)(Cell を返し、存在しなければ作成)、getCell(row, col)(Cell | undefined を返す)および getCellByRef(ref) を通じてセルの読み書きを行います。各 Cell は value、formula、row、col、ref をプロパティとして公開し、setFormula() / setStyle() / setHyperlink() をメソッドとして提供します。
const workbook = new Workbook();
const sheet = workbook.worksheets[0]!;
sheet.putValue("A1", 42);
sheet.putValue("A2", "Hello World");
const formulaCell = sheet.getCell2("A3");
formulaCell.setFormula("=A1+10");
console.log("A1 value:", sheet.getCell(0, 0)?.value);
console.log("A3 formula:", sheet.getCell(2, 0)?.formula);
const byRef = sheet.getCellByRef("A1");
console.log("Ref:", byRef?.ref, "Row:", byRef?.row, "Col:", byRef?.col);
await workbook.save("cells.xlsx");
スタイル、フォント、罫線、配置
Style はセルのフォント、塗りつぶし、罫線、配置、数値書式設定をまとめます。全体のサブオブジェクトは getFont()/setFont()、getBorder()/setBorder()、getAlignment()/setAlignment() で読み取るか置き換えるか、または Style 上で直接便利なセッターを使用し、例えば setFontName()、setFontSize()、setBold()、setHorizontalAlignment()、setNumberFormat() などがあります。完成した Style は Cell.setStyle() を使ってセルに適用します。
const workbook = new Workbook();
const sheet = workbook.worksheets[0]!;
const style = new Style();
style.setFontName("Arial");
style.setFontSize(14);
style.setBold(true);
style.setNumberFormat("0.00");
style.getBorder().bottom = { style: "thin", color: "000000" };
style.setHorizontalAlignment("center");
style.setVerticalAlignment("center");
style.setWrapText(true);
const cell = sheet.getCell2("B2");
cell.putValue(1234.5);
cell.setStyle(style);
console.log("Bold:", style.isBold(), "Format:", style.getNumberFormat());
await workbook.save("styled.xlsx");
AutoFilter クラスを使用したオートフィルタリング
Worksheet.setAutoFilter(range) は一般的なケースのショートカットですが、基礎となる AutoFilter クラスも直接使用できます。範囲でインスタンスを構築し、各列に対して addFilterColumn(col, filters, blank) を呼び出して表示すべき値を定義するか、removeFilterColumn(col) / clear() でフィルタリングを解除します。
const workbook = new Workbook();
const sheet = workbook.worksheets[0]!;
sheet.putValue("A1", "Name");
sheet.putValue("B1", "City");
sheet.putValue("A2", "Alice");
sheet.putValue("B2", "New York");
sheet.putValue("A3", "Bob");
sheet.putValue("B3", "London");
const filter = new AutoFilter("A1:B3");
filter.addFilterColumn(1, ["New York"], false);
console.log("Filter range:", filter.range);
console.log("Filter columns:", filter.columns.length);
await workbook.save("filtered.xlsx");
HTML、CSV、JSON、Markdown へのエクスポート
.xlsx を超えて、Workbook は toHtml()、toCsv()、toJson()、toMarkdown() を使用してテキストとして直接レンダリングでき、または拡張子で形式が選択されるファイルに保存できます。その形式は SaveFormat 列挙型(XLSX、CSV、JSON、MARKDOWN、HTML)によって決まります。
const workbook = new Workbook();
const sheet = workbook.worksheets[0]!;
sheet.putValue("A1", "Name");
sheet.putValue("B1", "Age");
sheet.putValue("A2", "Alice");
sheet.putValue("B2", 25);
sheet.putValue("A3", "Bob");
sheet.putValue("B3", 30);
console.log("JSON:", workbook.toJson());
console.log("Markdown:\n", workbook.toMarkdown());
await workbook.save("report.csv");
await workbook.save("report.html");
クイックスタート
git clone https://github.com/aspose-cells-foss/Aspose.Cells-FOSS-for-TypeScript.git
cd Aspose.Cells-FOSS-for-TypeScript
npm install
npm run buildimport { Workbook, Style } from "excel-cells";
const workbook = new Workbook();
const sheet = workbook.worksheets.get(0)!;
sheet.name = "Summary";
sheet.putValue("A1", "Item");
sheet.putValue("B1", "Count");
sheet.putValue("A2", "Widgets");
sheet.putValue("B2", 12);
sheet.putValue("A3", "Gadgets");
sheet.putValue("B3", 7);
const totalCell = sheet.getCell2("B4");
totalCell.setFormula("=SUM(B2:B3)");
const numberStyle = new Style();
numberStyle.setNumberFormat("0");
sheet.getCell2("B2").setStyle(numberStyle);
sheet.getCell2("B3").setStyle(numberStyle);
sheet.getCell2("B4").setStyle(numberStyle);
const detail = workbook.worksheets.addWorksheet("Detail");
detail.putValue("A1", "Raw Data");
await workbook.save("summary.xlsx");
const reloaded = await Workbook.load("summary.xlsx");
console.log("Worksheets:", reloaded.worksheets.length);
console.log("B4 formula:", reloaded.worksheets.get(0)!.getCell(3, 1)?.formula);
サポートされているフォーマット
| フォーマット | 拡張子 | 読み取り | 書き込み |
|---|---|---|---|
| XLSX | .xlsx | ✓ | ✓ |
| HTML | .html | ✓ | ✓ |
| CSV | .csv | — | ✓ |
| JSON | .json | — | ✓ |
| Markdown | .md | — | ✓ |
オープンソースとライセンス
Aspose.Cells FOSS for TypeScript は MIT ライセンスの下でリリースされています。ソースコードは GitHub で入手可能です。商用利用は MIT ライセンスの条件に従って許可されています。