サンプル コード
- 日本のお客様からよく寄せられる SpreadsheetGear の使用方法 (サンプル コード) を随時更新しています。
サンプル コード内で使用されている変数について
特に指定のない限り、サンプル コードでは以下のコードによりワークブックセット (IWorkbookSet)、ワークブック (IWorkbook)、ワークシート (IWorksheet)、セル範囲 (IRange) を変数宣言した前提で処理を行っています。
C# の場合 SpreadsheetGear.IWorkbookSet workbookSet = SpreadsheetGear.Factory.GetWorkbookSet();
// ワークブックセットの定義
SpreadsheetGear.IWorkbook workbook = workbookSet.Workbooks.Add();
// ワークブックの定義
SpreadsheetGear.IWorksheet worksheet = workbook.Worksheets[0];
// ワークシートの定義
SpreadsheetGear.IRange cells = worksheet.Cells;
// セル範囲の定義
VB.NET の場合 Dim
workbookSet
As
SpreadsheetGear.IWorkbookSet = SpreadsheetGear.Factory.GetWorkbookSet()
' ワークブックセットの定義
Dim
workbook
As
SpreadsheetGear.IWorkbook = workbookSet.Workbooks.Add()
' ワークブックの定義
Dim
worksheet
As
SpreadsheetGear.IWorksheet = workbook.Worksheets(0)
' ワークシートの定義
Dim
cells
As
SpreadsheetGear.IRange = worksheet.Cells
' セル範囲の定義
1. セルの操作
1-1. セルの書式設定 (表示形式) を指定する
C# の場合 // セル A1 から A8 に値を設定
cells[
"A1:A8"
].Formula =
"1234.5678"
;
// さまざまなセルの表示形式を指定
cells[
"A1"
].NumberFormat =
"General"
;
cells[
"A2"
].NumberFormat =
"0"
;
cells[
"A3"
].NumberFormat =
@"¥#,##0.00_);(¥#,##0.00)"
;
cells[
"A4"
].NumberFormat =
"yyyy/m/d"
;
cells[
"A5"
].NumberFormat =
"h:mm AM/PM"
;
cells[
"A6"
].NumberFormat =
"0.00%"
;
cells[
"A7"
].NumberFormat =
"# ??/??"
;
cells[
"A8"
].NumberFormat =
"0.00E+00"
;
// 文字列書式の指定 (注意: 文字列書式は、値を設定する前に設定します)
cells[
"A9"
].NumberFormat =
"@"
;
cells[
"A9"
].Formula =
"00123456"
;
VB.NET の場合 ' セル A1 から A8 に値を設定
cells(
"A1:A8"
).Formula =
"1234.5678"
' さまざまなセルの表示形式を指定
cells(
"A1"
).NumberFormat =
"General"
cells(
"A2"
).NumberFormat =
"0"
cells(
"A3"
).NumberFormat =
"¥#,##0.00_);(¥#,##0.00)"
cells(
"A4"
).NumberFormat =
"yyyy/m/d"
cells(
"A5"
).NumberFormat =
"h:mm AM/PM"
cells(
"A6"
).NumberFormat =
"0.00%"
cells(
"A7"
).NumberFormat =
"# ??/??"
cells(
"A8"
).NumberFormat =
"0.00E+00"
' 文字列書式の指定 (注意: 文字列書式は、値を設定する前に設定します)
cells(
"A9"
).NumberFormat =
"@"
cells(
"A9"
).Formula =
"00123456"
1-2. セルの書式設定 (配置) を指定する
C# の場合 // 横位置を [左詰め]に設定
cells[
"A1"
].HorizontalAlignment = SpreadsheetGear.HAlign.Left;
// 縦位置を [下詰め]に設定
cells[
"A1"
].VerticalAlignment = SpreadsheetGear.VAlign.Bottom;
// 横位置を [選択範囲内で中央]に設定
cells[
"A2"
].HorizontalAlignment = SpreadsheetGear.HAlign.CenterAcrossSelection;
// 縦位置を [中央揃え]に設定
cells[
"A2"
].VerticalAlignment = SpreadsheetGear.VAlign.Center;
VB.NET の場合 ' セル A1 の横位置を [左詰め]に設定
cells(
"A1"
).HorizontalAlignment = SpreadsheetGear.HAlign.Left
' セル A1 の縦位置を [下詰め]に設定
cells(
"A1"
).VerticalAlignment = SpreadsheetGear.VAlign.Bottom
' セル A2 の横位置を [選択範囲内で中央]に設定
cells(
"A2"
).HorizontalAlignment = SpreadsheetGear.HAlign.CenterAcrossSelection
' セル A2 の縦位置を [中央揃え]に設定
cells(
"A2"
).VerticalAlignment = SpreadsheetGear.VAlign.Center
1-3. セルの書式設定 (結合) を指定する
C# の場合 // セル A1 から C3 を結合して 1 つのセルにする
cells[
"A1:C3"
].Merge();
// セル D1 から F3 までの結合セルを解除する
cells[
"D1:F3"
].UnMerge();
VB.NET の場合 ' セル A1 から C3 を結合して 1 つのセルにする
cells(
"A1:C3"
).Merge()
' セル D1 から F3 までの結合セルを解除する
cells(
"D1:F3"
).UnMerge()
1-4. セルの書式設定 (フォント) を指定する
C# の場合 // シート全体
cells.Font.Name =
"MS P明朝"
;
cells.Font.Size = 11;
// セル A1 から E5 まで
cells[
"A1:E5"
].Font.Name =
"MS Pゴシック"
;
cells[
"A1:E5"
].Font.Bold =
true
;
cells[
"A1:E5"
].Font.Color = SpreadsheetGear.Colors.Red;
VB.NET の場合 ' シート全体
cells.Font.Name =
"MS P明朝"
cells.Font.Size = 11
' セル A1 から E5 まで
cells(
"A1:E5"
).Font.Name =
"MS Pゴシック"
cells(
"A1:E5"
).Font.Bold =
True
cells(
"A1:E5"
).Font.Color = SpreadsheetGear.Colors.Red
1-5. セルの書式設定 (罫線) を指定する
C# の場合 // セル B2 から D8 の上側を参照
SpreadsheetGear.IBorder border = cells[
"B2:D8"
].Borders[SpreadsheetGear.BordersIndex.EdgeTop];
// 罫線のスタイル、太さ、色を指定
border.LineStyle = SpreadsheetGear.LineStyle.Continuous;
border.Weight = SpreadsheetGear.BorderWeight.Thin;
border.Color = SpreadsheetGear.Colors.Blue;
VB.NET の場合 ' セル B2 から D8 の上側を参照
Dim
border
As
SpreadsheetGear.IBorder = cells(
"B2:D8"
).Borders(SpreadsheetGear.BordersIndex.EdgeTop)
' 罫線のスタイル、太さ、色を指定
border.LineStyle = SpreadsheetGear.LineStyle.Continuous
border.Weight = SpreadsheetGear.BorderWeight.Thin
border.Color = SpreadsheetGear.Colors.Blue
1-6. セルの書式設定 (塗りつぶし) を指定する
C# の場合 // セル B2 から C3 の背景を青に設定
SpreadsheetGear.IInterior interior = cells[
"B2:C3"
].Interior;
interior.Color = SpreadsheetGear.Colors.Blue;
// セル B6 から C7 の背景を赤と黄色のパターンに設定
interior = cells[
"B6:C7"
].Interior;
interior.Color = SpreadsheetGear.Colors.Red;
interior.Pattern = SpreadsheetGear.Pattern.Gray16;
interior.PatternColor = SpreadsheetGear.Colors.Yellow;
VB.NET の場合 ' セル B2 から C3 の背景を青に設定
Dim
interior
As
SpreadsheetGear.IInterior = cells(
"B2:C3"
).Interior
interior.Color = SpreadsheetGear.Colors.Blue
' セル B6 から C7 の背景を赤と黄色のパターンに設定
interior = cells(
"B6:C7"
).Interior
interior.Color = SpreadsheetGear.Colors.Red
interior.Pattern = SpreadsheetGear.Pattern.Gray16
interior.PatternColor = SpreadsheetGear.Colors.Yellow
1-7. セルの書式設定 (保護) を指定する
C# の場合 // シートの保護をいったん解除
worksheet.ProtectContents =
false
;
// セル A1 のロックを解除、セル A2 のロックを設定
cells[
"A1"
].Locked =
false
;
cells[
"A2"
].Locked =
true
;
// シートの保護を有効にする
worksheet.ProtectContents =
true
;
VB.NET の場合 ' シートの保護をいったん解除
worksheet.ProtectContents =
False
' セル A1 のロックを解除、セル A2 のロックを設定
cells(
"A1"
).Locked =
False
cells(
"A2"
).Locked =
True
' シートの保護を有効にする
worksheet.ProtectContents =
True
1-8. セルのコメントを操作する
C# の場合 // セル A1 にコメントを挿入
SpreadsheetGear.IComment comment = cells[
"A1"
].AddComment(
"追加されたコメント 1"
);
comment.Shape.TextFrame.Characters.Font.Bold =
false
;
comment.Visible =
true
;
// セル A2 にコメントを挿入
comment = cells[
"A2"
].AddComment(
"追加されたコメント 2"
);
comment.Shape.TextFrame.Characters.Font.Bold =
true
;
comment.Visible =
false
;
// セル A2 のコメントを削除する場合
cells[
"A2"
].ClearComments();
VB.NET の場合 ' セル A1 にコメントを追加
Dim
comment
As
SpreadsheetGear.IComment = cells(
"A1"
).AddComment(
"追加されたコメント 1"
)
comment.Shape.TextFrame.Characters.Font.Bold =
False
comment.Visible =
True
' セル A2 にコメントを追加
comment = cells(
"A2"
).AddComment(
"追加されたコメント 2"
)
comment.Shape.TextFrame.Characters.Font.Bold =
True
comment.Visible =
False
' セル A2 のコメントを削除する場合
cells(
"A2"
).ClearComments()
1-9. 条件付き書式を指定する
C# の場合 // セル A1 から F10 を対象
SpreadsheetGear.IRange range = cells[
"A1:F10"
];
// 対象セル範囲にサンプル値を設定
range.Formula =
"=RAND() * 10000"
;
range.NumberFormat =
@"¥#,##0_);(¥#,##0)"
;
// セル範囲の条件付き書式用のコレクションを参照
SpreadsheetGear.IFormatConditions conditions = range.FormatConditions;
// 既存の条件付き書式をクリア
conditions.Delete();
// 値が 8000 以下の場合の条件付き書式を設定
SpreadsheetGear.IFormatCondition condition = conditions.Add(
SpreadsheetGear.FormatConditionType.CellValue,
SpreadsheetGear.FormatConditionOperator.LessEqual,
"8000"
,
null
);
// フォントのスタイル、色、背景色を設定
condition.Font.Bold =
false
;
condition.Font.Color = SpreadsheetGear.Colors.White;
condition.Interior.Color = SpreadsheetGear.Colors.DarkSlateBlue;
// 値が 8000 を超える場合の条件付き書式を設定
condition = conditions.Add(
SpreadsheetGear.FormatConditionType.CellValue,
SpreadsheetGear.FormatConditionOperator.Greater,
"8000"
,
null
);
// フォントのスタイル、色、背景色を設定
condition.Font.Bold =
true
;
condition.Font.Italic =
true
;
condition.Font.Color = SpreadsheetGear.Colors.White;
condition.Interior.Color = SpreadsheetGear.Colors.Maroon;
VB.NET の場合 ' セル A1 から F10 を対象
Dim
range
As
SpreadsheetGear.IRange = cells(
"A1:F10"
)
' 対象セル範囲にサンプル値を設定
range.Formula =
"=RAND() * 10000"
range.NumberFormat =
"¥#,##0_);(¥#,##0)"
' セル範囲の条件付き書式用のコレクションを参照
Dim
conditions
As
SpreadsheetGear.IFormatConditions = range.FormatConditions
' 既存の条件付き書式をクリア
conditions.Delete()
' 値が 8000 以下の場合の条件付き書式を設定
Dim
condition
As
SpreadsheetGear.IFormatCondition = conditions.Add(
SpreadsheetGear.FormatConditionType.CellValue,
SpreadsheetGear.FormatConditionOperator.LessEqual,
"8000"
,
Nothing
)
' フォントのスタイル、色、背景色を設定
condition.Font.Bold =
False
condition.Font.Color = SpreadsheetGear.Colors.White
condition.Interior.Color = SpreadsheetGear.Colors.DarkSlateBlue
' 値が 8000 を超える場合の条件付き書式を設定
condition = conditions.Add(
SpreadsheetGear.FormatConditionType.CellValue,
SpreadsheetGear.FormatConditionOperator.Greater,
"8000"
,
Nothing
)
' フォントのスタイル、色、背景色を設定
condition.Font.Bold =
True
condition.Font.Italic =
True
condition.Font.Color = SpreadsheetGear.Colors.White
condition.Interior.Color = SpreadsheetGear.Colors.Maroon
1-10. セルの入力規則 (リスト) を指定する
C# の場合 // セル A5 から A7 に入力規則の参照リストを設定
cells[
"A5:A7"
].Value =
new
string
[,] {{
"赤"
},{
"青"
},{
"黄"
}};
// セル A1 にドロップダウンの入力規則を設定 (参照リストから設定する場合)
cells[
"A1"
].Validation.Add(
SpreadsheetGear.ValidationType.List,
SpreadsheetGear.ValidationAlertStyle.Information,
SpreadsheetGear.ValidationOperator.Default,
"=A5:A7"
,
null
);
// セル A2 にドロップダウンの入力規則を設定 (コード内で指定する場合)
cells[
"A2"
].Validation.Add(
SpreadsheetGear.ValidationType.List,
SpreadsheetGear.ValidationAlertStyle.Warning,
SpreadsheetGear.ValidationOperator.Default,
"赤,青,黄"
,
null
);
VB.NET の場合 ' セル A5 から A7 に入力規則の参照リストを設定
cells(
"A5"
).Formula =
"赤"
cells(
"A6"
).Formula =
"青"
cells(
"A7"
).Formula =
"黄"
' セル A1 にドロップダウンの入力規則を設定 (参照リストから設定する場合)
cells(
"A1"
).Validation.Add(
SpreadsheetGear.ValidationType.List,
SpreadsheetGear.ValidationAlertStyle.Information,
SpreadsheetGear.ValidationOperator.
Default
,
"=A5:A7"
,
Nothing
)
' セル A2 にドロップダウンの入力規則を設定 (コード内で指定する場合)
cells(
"A2"
).Validation.Add(
SpreadsheetGear.ValidationType.List,
SpreadsheetGear.ValidationAlertStyle.Warning,
SpreadsheetGear.ValidationOperator.
Default
,
"赤,青,黄"
,
Nothing
)
1-11. セルをコピーする
C# の場合 // コピー元 (rangeFrom)、コピー先 (rangeTo) を定義
SpreadsheetGear.IRange rangeFrom = cells[
"A1:A3"
];
SpreadsheetGear.IRange rangeTo = cells[
"A5:A7"
];
// セル A1:A3 を A5:A7 にコピー
rangeFrom.Copy(rangeTo, SpreadsheetGear.PasteType.All,
SpreadsheetGear.PasteOperation.None,
false
,
false
);
VB.NET の場合 ' コピー元 (rangeFrom)、コピー先 (rangeTo) を定義
Dim
rangeFrom
As
SpreadsheetGear.IRange = cells(
"A1:A3"
)
Dim
rangeTo
As
SpreadsheetGear.IRange = cells(
"A5:A7"
)
' セル A1:A3 を A5:A7 にコピー
rangeFrom.Copy(rangeTo, SpreadsheetGear.PasteType.All,
SpreadsheetGear.PasteOperation.None,
False
,
False
)
1-12. セルをコピーする (配列を使用)
(参考) Excel VBA の場合 ' セル範囲 (A1:C3) の値を配列に格納
Dim
MyArray()
As
Variant
MyArray = Range(
"A1:C3"
)
' 格納したセル範囲の配列を、セル範囲 (A5:C7) にコピー
Range(
"A5:C7"
) = MyArray
C# の場合 (SpreadsheetGear では二次元のオブジェクト配列を使用します) // セル範囲 (A1:C3) の値を二次元配列のオブジェクトに格納
object
[,] MyArray;
MyArray = (
object
[,])worksheet.Cells[
"A1:C3"
].Value;
// 格納したセル範囲の配列を、セル範囲 (A5:C7) にコピー
worksheet.Cells[
"A5:C7"
].Value = MyArray;
VB.NET の場合 (SpreadsheetGear では二次元のオブジェクト配列を使用します) ' セル範囲 (A1:C3) の値を配列に格納
Dim
MyArray
As
Object
(,)
MyArray =
CType
(worksheet.Cells(
"A1:C3"
).Value,
Object
)
' 格納したセル範囲の配列を、セル範囲 (A5:C7) にコピー
worksheet.Cells(
"A5:C7"
).Value = MyArray
1-13. 行、列全体をコピーする
C# の場合 // A 列から C 列全体を、E 列から G 列にコピー
SpreadsheetGear.IRange rangeFrom = cells[
"A1:C1"
].EntireColumn;
SpreadsheetGear.IRange rangeTo = cells[
"E1:G1"
].EntireColumn;
rangeFrom.Copy(rangeTo, SpreadsheetGear.PasteType.All,
SpreadsheetGear.PasteOperation.None,
false
,
false
);
// 1 行目から 3 行目を、5 行目から 7 行目にコピー
rangeFrom = cells[
"A1:A3"
].EntireRow;
rangeTo = cells[
"A5:A7"
].EntireRow;
rangeFrom.Copy(rangeTo, SpreadsheetGear.PasteType.All,
SpreadsheetGear.PasteOperation.None,
false
,
false
);
VB.NET の場合 ' A 列から C 列を、E 列から G 列にコピー
Dim
rangeFrom
As
SpreadsheetGear.IRange = cells(
"A1:C1"
).EntireColumn
Dim
rangeTo
As
SpreadsheetGear.IRange = cells(
"E1:G1"
).EntireColumn
rangeFrom.Copy(rangeTo, SpreadsheetGear.PasteType.All,
SpreadsheetGear.PasteOperation.None,
False
,
False
)
' 1 行目から 3 行目を、5 行目から 7 行目にコピー
rangeFrom = cells(
"A1:A3"
).EntireRow
rangeTo = cells(
"A5:A7"
).EntireRow
rangeFrom.Copy(rangeTo, SpreadsheetGear.PasteType.All,
SpreadsheetGear.PasteOperation.None,
False
,
False
)
2. ワークシートの操作
2-1. ワークシートに画像を追加する
C# の場合 // ワークシートの IWorksheetWindowInfo を参照
SpreadsheetGear.IWorksheetWindowInfo windowInfo = worksheet.WindowInfo;
// イメージ ファイル名を取得する
string
filename =
"sample.gif"
;
// ピクセルで図の幅と高さを取得して、ポイントに変換する (AddPicture のコールに使用するため)。
// 実際の図のサイズを使用する場合でそのサイズを知らない場合のみ、この手順が必要なります。
// 別のオプションとして、行と列の座標から幅と高さを計算する方法もあります。
double
width;
double
height;
System.Drawing.Image image = System.Drawing.Image.FromFile(filename);
using
(image)
{
width = image.Width * 72.0 / image.HorizontalResolution;
height = image.Height * 72.0 / image.VerticalResolution;
}
// 行と列の座標からポイントに変換することで、図の左上の配置を計算する。
// 行位置と列位置を使用して、行と列の境界間の座標を取得する。
double
left = windowInfo.ColumnToPoints(0.25);
double
top = windowInfo.RowToPoints(1.5);
// 上記で算出した値を使用して画像を追加
SpreadsheetGear.Shapes.IShape shape =
worksheet.Shapes.AddPicture(filename, left, top, width, height);
// 画像の輪郭のラインは非表示にする
shape.Line.Visible =
false
;
VB.NET の場合 ' ワークシートの IWorksheetWindowInfo を参照
Dim
windowInfo
As
SpreadsheetGear.IWorksheetWindowInfo = worksheet.WindowInfo
' イメージ ファイル名を取得する
Dim
filename
As
String
=
"sample.gif"
' ピクセルで図の幅と高さを取得して、ポイントに変換する (AddPicture のコールに使用するため)。
' 実際の図のサイズを使用する場合でそのサイズを知らない場合のみ、この手順が必要なります。
' 別のオプションとして、行と列の座標から幅と高さを計算する方法もあります。
Dim
width
As
Double
Dim
height
As
Double
Dim
image
As
System.Drawing.Image = System.Drawing.Image.FromFile(filename)
Using (image)
width = image.Width * 72.0 / image.HorizontalResolution
height = image.Height * 72.0 / image.VerticalResolution
End
Using
' 行と列の座標からポイントに変換することで、図の左上の配置を計算する。
' 行位置と列位置を使用して、行と列の境界間の座標を取得する。
Dim
left
As
Double
= windowInfo.ColumnToPoints(0.25)
Dim
top
As
Double
= windowInfo.RowToPoints(1.5)
' 上記で算出した値を使用して画像を追加
Dim
shape
As
SpreadsheetGear.Shapes.IShape =
worksheet.Shapes.AddPicture(filename, left, top, width, height)
' 画像の輪郭のラインは非表示にする
shape.Line.Visible =
False
2-2. ワークシートにテキストボックスを追加する
C# の場合 // ワークシートの IWorksheetWindowInfo を参照
SpreadsheetGear.IWorksheetWindowInfo windowInfo = worksheet.WindowInfo;
// 行、列の座標をポイントに変換して、テキストボックスの配置位置を算出する
double
left = windowInfo.ColumnToPoints(0.5);
double
top = windowInfo.RowToPoints(1.5);
double
right = windowInfo.ColumnToPoints(5.5);
double
bottom = windowInfo.RowToPoints(10.5);
double
width = right - left;
double
height = bottom - top;
// 上記で算出した値を使用してテキストボックスを追加
SpreadsheetGear.Shapes.IShape shape =
worksheet.Shapes.AddTextBox(left, top, width, height);
// テキストボックスへの参照を定義
SpreadsheetGear.Shapes.ITextFrame textFrame = shape.TextFrame;
SpreadsheetGear.ICharacters characters = textFrame.Characters;
// テキストボックスの値を設定
characters.Text =
"このテキストボックスは¥r¥n¥r¥nサンプル コードで作成しました。"
;
// フォントの指定
SpreadsheetGear.IFont font = characters.Font;
font.Bold =
true
;
font.Name =
"MS P明朝"
;
font.Size = 12;
VB.NET の場合 ' ワークシートの IWorksheetWindowInfo を参照
Dim
windowInfo
As
SpreadsheetGear.IWorksheetWindowInfo = worksheet.WindowInfo
' 行、列の座標をポイントに変換して、テキストボックスの配置位置を算出する
Dim
left
As
Double
= windowInfo.ColumnToPoints(0.5)
Dim
top
As
Double
= windowInfo.RowToPoints(1.5)
Dim
right
As
Double
= windowInfo.ColumnToPoints(5.5)
Dim
bottom
As
Double
= windowInfo.RowToPoints(10.5)
Dim
width
As
Double
= right - left
Dim
height
As
Double
= bottom - top
' 上記で算出した値を使用してテキストボックスを追加
Dim
shape
As
SpreadsheetGear.Shapes.IShape =
worksheet.Shapes.AddTextBox(left, top, width, height)
' テキストボックスへの参照を定義
Dim
textFrame
As
SpreadsheetGear.Shapes.ITextFrame = shape.TextFrame
Dim
characters
As
SpreadsheetGear.ICharacters = textFrame.Characters
' テキストボックスの値を設定
characters.Text =
"このテキストボックスは"
+
ControlChars.Cr + ControlChars.Lf + ControlChars.Cr + ControlChars.Lf +
"サンプル コードで作成しました。"
' フォントの指定
Dim
font
As
SpreadsheetGear.IFont = characters.Font
font.Bold =
True
font.Name =
"MS P明朝"
font.Size = 12
2-3. ワークシートのパスワード保護を設定、解除する
C# の場合 // セルに値を設定
cells[
"A1"
].Formula =
"ワークシートのパスワード保護サンプル"
;
// ワークシートをパスワードで保護 (パスワード: password)
worksheet.Protect(
"password"
);
// ワークシートの保護を解除する場合
worksheet.Unprotect(
"password"
);
// xlsx 形式で出力
workbook.SaveAs(
@"c:¥output.xlsx"
, SpreadsheetGear.FileFormat.OpenXMLWorkbook);
VB.NET の場合 ' セルに値を設定
cells(
"A1"
).Formula =
"ワークシートのパスワード保護サンプル"
' ワークシートをパスワードで保護 (パスワード: password)
worksheet.Protect(
"password"
)
' ワークシートの保護を解除する場合
worksheet.Unprotect(
"password"
)
' xlsx 形式で出力
workbook.SaveAs(
"c:¥output.xlsx"
, SpreadsheetGear.FileFormat.OpenXMLWorkbook)
2-4. 同一ワークブック内でワークシートをコピーする
C# の場合 // ワークブック内の最初のシートをコピー元とする
SpreadsheetGear.IWorksheet worksheet1 = workbook.Worksheets[0];
// 上記のワークシートをワークブックの最後尾にコピーする
SpreadsheetGear.IWorksheet worksheet2 =
(SpreadsheetGear.IWorksheet)worksheet1.CopyAfter(
workbook.Worksheets[workbook.Worksheets.Count - 1]);
// コピーしたワークシートの名前を設定
worksheet2.Name =
"Sheet2"
;
// xlsx 形式で出力
workbook.SaveAs(
@"c:¥output.xlsx"
, SpreadsheetGear.FileFormat.OpenXMLWorkbook);
VB.NET の場合 ' ワークブック内の最初のシートをコピー元とする
Dim
worksheet1
As
SpreadsheetGear.IWorksheet = workbook.Worksheets(0)
' 上記のワークシートをワークブックの最後尾にコピーする
Dim
worksheet2
As
SpreadsheetGear.IWorksheet =
worksheet1.CopyAfter(workbook.Worksheets(workbook.Worksheets.Count - 1))
' コピーしたワークシートの名前を設定
worksheet2.Name =
"Sheet2"
' xlsx 形式で出力
workbook.SaveAs(
"c:¥output.xlsx"
, SpreadsheetGear.FileFormat.OpenXMLWorkbook)
3. ワークブックの操作
3-1. パスワード付きワークブックを読み書きする
C# の場合 // ワークブックセットの参照
SpreadsheetGear.IWorkbookSet workbookSet = SpreadsheetGear.Factory.GetWorkbookSet();
// パスワード (password) を指定してワークブック (c:¥input.xlsx) を読み込む
SpreadsheetGear.IWorkbook workbook = workbookSet.Workbooks.Open(
@"c:¥input.xlsx"
,
"password"
);
// セル A1 に値を設定
workbook.Worksheets[0].Cells[
"A1"
].Formula =
"パスワード保護ファイルの読み書きテスト"
;
// 新しいパスワード (password2) を設定して書き出す
workbook.SaveAs(
@"c:¥output.xlsx"
, SpreadsheetGear.FileFormat.OpenXMLWorkbook,
"password2"
);
VB.NET の場合 ' ワークブックセットの参照
Dim
workbookSet
As
SpreadsheetGear.IWorkbookSet = SpreadsheetGear.Factory.GetWorkbookSet()
' パスワード (password) を指定してワークブック (c:¥input.xlsx) を読み込む
Dim
workbook
As
SpreadsheetGear.IWorkbook = workbookSet.Workbooks.Open(
"c:¥input.xlsx"
,
"password"
)
' セル A1 に値を設定
workbook.Worksheets(0).Cells(
"A1"
).Formula =
"パスワード保護ファイルの読み書きテスト"
' 新しいパスワード (password2) を設定して書き出す
workbook.SaveAs(
"c:¥output.xlsx"
, SpreadsheetGear.FileFormat.OpenXMLWorkbook,
"password2"
)
3-2. 異なるワークブック間でワークシートをコピーする
C# の場合 // ワークブックセットの参照
SpreadsheetGear.IWorkbookSet workbookSet = SpreadsheetGear.Factory.GetWorkbookSet();
// コピー元、コピー先のワークブック (c:¥copyFrom.xlsx、c:¥copyTo.xlsx) を読み込む
SpreadsheetGear.IWorkbook workbookFrom = workbookSet.Workbooks.Open(
@"c:¥copyFrom.xlsx"
);
SpreadsheetGear.IWorkbook workbookTo = workbookSet.Workbooks.Open(
@"c:¥copyTo.xlsx"
);
// コピー元 (c:¥copyFrom.xlsx) を最初のワークシート
// コピー先 (c:¥copyTo.xlsx) を最後のワークシートとする
SpreadsheetGear.IWorksheet worksheetFrom =
workbookFrom.Worksheets[0];
SpreadsheetGear.IWorksheet worksheetTo =
workbookTo.Worksheets[workbookTo.Worksheets.Count - 1];
// コピー処理の実行とコピーされたシート名の変更
SpreadsheetGear.IWorksheet worksheetCopy =
(SpreadsheetGear.IWorksheet)worksheetFrom.CopyAfter(worksheetTo);
worksheetCopy.Name =
"コピーされたシート"
;
// コピー先のワークブックを output.xlsx として出力
workbookTo.SaveAs(
@"c:¥output.xlsx"
, SpreadsheetGear.FileFormat.OpenXMLWorkbook);
VB.NET の場合 ' ワークブックセットの参照
Dim
workbookSet
As
SpreadsheetGear.IWorkbookSet = SpreadsheetGear.Factory.GetWorkbookSet()
' コピー元、コピー先のワークブック (c:¥copyFrom.xlsx、c:¥copyTo.xlsx) を読み込む
Dim
workbookFrom
As
SpreadsheetGear.IWorkbook =
workbookSet.Workbooks.Open(
"c:¥copyFrom.xlsx"
)
Dim
workbookTo
As
SpreadsheetGear.IWorkbook =
workbookSet.Workbooks.Open(
"c:¥copyTo.xlsx"
)
' コピー元 (c:¥copyFrom.xlsx) を最初のワークシート
' コピー先 (c:¥copyTo.xlsx) を最後のワークシートとする
Dim
worksheetFrom
As
SpreadsheetGear.IWorksheet =
workbookFrom.Worksheets(0)
Dim
worksheetTo
As
SpreadsheetGear.IWorksheet =
workbookTo.Worksheets(workbookTo.Worksheets.Count - 1)
' コピー処理の実行とコピーされたシート名の変更
Dim
worksheetCopy
As
SpreadsheetGear.IWorksheet =
worksheetFrom.CopyAfter(worksheetTo)
worksheetCopy.Name =
"コピーされたシート"
' コピー先のワークブックを output.xlsx として出力
workbookTo.SaveAs(
"c:¥output.xlsx"
, SpreadsheetGear.FileFormat.OpenXMLWorkbook)
4. その他の操作
4-1. ワークブックを workbookView コントロールに表示する
C# の場合 // workbookView コントロールをロック (必須)
workbookView.GetLock();
// ワークブックセットの参照
SpreadsheetGear.IWorkbookSet workbookSet = SpreadsheetGear.Factory.GetWorkbookSet();
// ワークブック (c:¥input.xlsx) を読み込む
SpreadsheetGear.IWorkbook workbook = workbookSet.Workbooks.Open(
@"c:¥input.xlsx"
);
SpreadsheetGear.IWorksheet worksheet = workbook.Worksheets[0];
SpreadsheetGear.IRange cells = worksheet.Cells;
// セル A1 に値を設定
workbook.Worksheets[0].Cells[
"A1"
].Formula =
"workbookView 読み込みテスト"
;
// workbookView に表示する
workbookView.ActiveWorkbook = workbook;
// workbookView コントロールを解除 (必須)
workbookView.ReleaseLock();
VB.NET の場合 ' workbookView コントロールをロック (必須)
WorkbookView.GetLock()
' ワークブックセットの参照
Dim
workbookSet
As
SpreadsheetGear.IWorkbookSet = SpreadsheetGear.Factory.GetWorkbookSet()
' ワークブック (c:¥input.xlsx) を読み込む
Dim
workbook
As
SpreadsheetGear.IWorkbook = workbookSet.Workbooks.Open(
"c:¥input.xlsx"
)
Dim
worksheet
As
SpreadsheetGear.IWorksheet = workbook.Worksheets(0)
Dim
cells
As
SpreadsheetGear.IRange = worksheet.Cells
' セル A1 に値を設定
workbook.Worksheets(0).Cells(
"A1"
).Formula =
"workbookView 読み込みテスト"
' workbookView に表示する
WorkbookView.ActiveWorkbook = workbook
' workbookView コントロールを解除 (必須)
WorkbookView.ReleaseLock()