DioDocs for Excel
DioDocs for Excel
ワークシートの操作
機能 > ワークシート > ワークシートの操作

ワークシートを使用する際に、次の操作を実行して、ワークブックに重要なタスクを行うことができます。

デフォルトワークシートへのアクセス

新しいワークブックを作成するたびに、Sheet1 という名前の空のワークシートが自動的にワークブックに追加されます。このワークシートがデフォルトワークシートです。各ワークブックにデフォルトワークシートは 1 つだけ追加されます。

ワークブック内のデフォルトワークシートにアクセスする方法については、次のサンプルコードを参照してください。

C#
コードのコピー
//既定のワークシートを取得します
IWorksheet worksheet = workbook.Worksheets[0];

複数のワークシートの追加

ワークブックには、任意の数のワークシートを入れることができます。ワークブック内の特定のシートの前または後に 1 つ以上のワークシートを追加できます。

ワークブックで複数のワークシートを挿入する方法については、次のサンプルコードを参照してください。

C#
コードのコピー
//ワークブックを初期化し、複数のワークシートを追加します
IWorksheet worksheet = workbook.Worksheets.Add();
IWorksheet worksheet2 = workbook.Worksheets.AddAfter(worksheet);
IWorksheet worksheet3 = workbook.Worksheets.AddBefore(worksheet2);

メモ: IWorksheetsインタフェースのAddメソッドにはSheetTypeのオーバーロードがあり、ワークシートまたはチャートシートの2種類のシートを追加できます。デフォルトでは、このメソッドはワークブックにワークシートを追加します。

ワークシートのアクティブ化

ワークブック内で複数のワークシートを使用する際に、現在のシートをワークブック内のアクティブシートにして、その特定のシートに対して何らかの操作を実行できるようにしたい場合があります。それには、IWorksheet インタフェースの Activate メソッドを使用します。

ワークシートをアクティブ化する方法については、次のサンプルコードを参照してください。

C#
コードのコピー
IWorksheet worksheet3 = workbook.Worksheets.Add();
            
//新しい作成したワークシートをアクティブ化します
worksheet3.Activate();

ワークシートへのアクセス

ワークブック内のすべてのワークシートは、Worksheets コレクションに格納されます。ワークブック内の特定のワークシートにアクセスするには、IWorksheet インタフェースの Index プロパティを使用するか、Name プロパティを使用します。

ワークブック内のワークシートにアクセスする方法については、次のサンプルコードを参照してください。

C#
コードのコピー
//シートインデックスを使用してワークシートをアクセスします
IWorksheet worksheet4 = workbook.Worksheets[0];

////シート名を使用してワークシートをアクセスします
IWorksheet worksheet5 = workbook.Worksheets["SampleSheet5"];
//worksheet5.Name = "SampleSheet5";

ワークシートの保護

ワークシートを読み取り専用シートに変換することで、セルにあるデータを変更できないように保護できます。ワークシートは、パスワードまたは変更できないようにすることで保護できます。

パスワードを使用せずにワークシートの保護

ワークシートを保護するには、IWorksheetインタフェースのProtectionプロパティをtrueに設定します。さらに、IProtectionSettingsインタフェースの任意のプロパティを使用して、ワークシートの保護設定を明示的に制御できます。保護を解除する場合は、Protectionプロパティを false に設定することでワークシートの保護を解除できます。

パスワードなしでワークシートを保護または保護解除する方法については、次のサンプルコードを参照してください。

C#
コードのコピー
//ワークシートを保護し、列を挿入できるようにします
worksheet3.Protection = true;
worksheet3.ProtectionSettings.AllowInsertingColumns = true;

//ワークシートの保護を解除します
worksheet3.Protection = false;

パスワードを使用してワークシートの保護

IWorksheetインタフェースのProtectメソッドを使用して、ワークシートをパスワードで保護できます。パスワードを設定するには、大文字と小文字が区別されるパスワードの文字列はパラメータとしてProtectメソッドに渡すことができます。

パスワードを使用して変更からワークシートを保護するには、次のサンプルコードを参照してください。

C#
コードのコピー
//ワークブックを初期化します
Workbook workbook = new Workbook();
//デフォルトのワークシートを取得します 
IWorksheet workSheet = workbook.Worksheets[0];

//パスワードを使用したワークシートを保護します
workSheet.Protect("Ygs_87@ytr");
//ワークブックをxlsxに保存します
workbook.Save(@"ProtectWorksheetWithPassword.xlsx", SaveFileFormat.Xlsx);

パスワードで保護されたワークシートを保護解除するには、IWorksheetインタフェースのUnprotectメソッドを使用します。保護を解除するために、Unprotectメソッドにパラメータとして正しいパスワード(Protectメソッドで設定されているパスワード)を渡す必要があります。パスワードが入力しないか、間違ったパスワードが渡される場合、「パスワードが正しくありません」例外が発生します。

パスワードを使用して変更から保護されているワークシートを保護解除するには、次のサンプルコードを参照してください。

C#
コードのコピー
//ワークブックを初期化します
Workbook workbook = new Workbook();
//デフォルトのワークシートを取得します 
IWorksheet workSheet = workbook.Worksheets[0];
        
workSheet.Protect("Ygs_87@ytr");
//上記の保護をワークシートから削除します
workSheet.Unprotect("Ygs_87@ytr");
//ワークブックをxlsxに保存します
workbook.Save(@"UnprotectWorksheetWithPassword.xlsx", SaveFileFormat.Xlsx);

ワークシートの削除

1 つ以上のワークシートをワークブックから削除できます。ワークシートを削除すると、そのワークシートは Worksheets コレクションから自動的に削除されます。

ワークブックから特定のシートを削除する方法については、次のサンプルコードを参照してください。

C#
コードのコピー
IWorksheet worksheet7 = workbook.Worksheets.Add();

//ワークブックには1つの可視ワークシートが含まれる必要があり、可視ワークシートを1つ削除すると例外がスローされます
worksheet7.Delete();

ワークシートのコピーおよび移動

DioDocs for Excel では、コピーと移動処理によってワークシートをご要件に応じて並べ替えることができます。IWorksheetインタフェースのCopy() メソッド、CopyAfter() メソッド、CopyBefore() メソッドを使用して現在作業中のスプレッドシートをコピーしたり、ワークブック間でワークシートをコピーしたりすることができます。そして、ワークシートを特定の位置に移動するには、Move() メソッド、MoveBefore() メソッド、およびMoveAfter() メソッドを使用できます。

ワークシートをコピーする方法については、次のサンプルコードを参照してください。

C#
コードのコピー
//ワークブックを初期化します
Workbook workbook = new Workbook();
        
//アクティブなワークシートを取得します 
IWorksheet worksheet = workbook.ActiveSheet;

object[,] data = new object[,]{
{"Name", "City", "Birthday", "Sex", "Weight", "Height", "Age"},
{"Bob", "newyork", new DateTime(1968, 6, 8), "male", 80, 180, 56},
{"Betty", "newyork", new DateTime(1972, 7, 3), "female", 72, 168, 45},
{"Gary", "NewYork", new DateTime(1964, 3, 2), "male", 71, 179, 50},
{"Hunk", "Washington", new DateTime(1972, 8, 8), "male", 80, 171, 59},
{"Cherry", "Washington", new DateTime(1986, 2, 2), "female", 58, 161, 34},
{"Coco", "Virginia", new DateTime(1982, 12, 12), "female", 58, 181, 45},
{"Lance", "Chicago", new DateTime(1962, 3, 12), "female", 49, 160, 57},
{ "Eva", "Washington", new DateTime(1993, 2, 5), "female", 71, 180, 81}};
        
//データを設定します
worksheet.Range["A1:G9"].Value = data;

//アクティブシートを現在のワークブックの最後にコピーします
var copy_worksheet = worksheet.Copy();
copy_worksheet.Name = "Copy of " + worksheet.Name;

//ワークブックをxlsxとして保存します
workbook.Save(@"CopyWorkSheet.xlsx", SaveFileFormat.Xlsx);

ワークブック間でワークシートをコピーする方法については、次のサンプルコードを参照してください。

C#
コードのコピー
//新規ワークブックを作成します
var workbook = new GrapeCity.Documents.Excel.Workbook();
        
//ほかのソースワークブックを作成します
Workbook source_workbook = new Workbook();
        
//アクティブなワークシートを取得します 
IWorksheet worksheet = source_workbook.ActiveSheet;
object[,] data = new object[,]{
{"Name", "City", "Birthday", "Sex", "Weight", "Height", "Age"},
{"Bob", "newyork", new DateTime(1968, 6, 8), "male", 80, 180, 56},
{"Betty", "newyork", new DateTime(1972, 7, 3), "female", 72, 168, 45},
{"Gary", "NewYork", new DateTime(1964, 3, 2), "male", 71, 179, 50},
{"Hunk", "Washington", new DateTime(1972, 8, 8), "male", 80, 171, 59},
{"Cherry", "Washington", new DateTime(1986, 2, 2), "female", 58, 161, 34},
{"Coco", "Virginia", new DateTime(1982, 12, 12), "female", 58, 181, 45},
{"Lance", "Chicago", new DateTime(1962, 3, 12), "female", 49, 160, 57},
{ "Eva", "Washington", new DateTime(1993, 2, 5), "female", 71, 180, 81}};
        
//データを設定します
worksheet.Range["A1:G9"].Value = data;

//アクティブシートのデータをソースワークブックから現在ワークブックのSheet1の前にコピーします
var copy_worksheet = worksheet.CopyBefore(workbook.Worksheets[0]);
copy_worksheet.Name = "Copy of Sheet1";
copy_worksheet.Activate();
       
//ワークブックをxlsxとして保存します
workbook.Save(@"CopyWorkSheetBetweenWorkBooks.xlsx", SaveFileFormat.Xlsx);

複数のワークシートの選択

IWorksheetsインタフェースのSelectメソッドを使用して、複数のワークシートを一度に選択できます。このメソッドは、オプションのパラメータとしてreplaceを受け取ります。

また、選択したワークシートは、IWorkbookインタフェースのSelectedSheetsプロパティを使用して取得することができます。複数のワークシートが選択されているExcelを読み込んで、変更し、Excelに保存できます。DioDocs for Excel は、複数のワークシートが選択されている場合、次のように動作します。

ワークブック内の複数のワークシートを選択する方法については、次のサンプルコードを参照してください。

C#
コードのコピー
// 既定のワークシートを取得します
var workbook = new GrapeCity.Documents.Excel.Workbook();

var sheet1 = workbook.ActiveSheet;
var sheet2 = workbook.Worksheets.Add();
var sheet3 = workbook.Worksheets.Add();

// sheet2とsheet3を選択します
workbook.Worksheets[new[] { sheet2.Name, sheet3.Name }].Select();        

// 選択しているシートの名前をコンソールに書き込みます
foreach (var sheet in workbook.SelectedSheets)
{
    Console.WriteLine(sheet.Name);
}

// 選択しているシートにsheet1を追加します
sheet1.Select(replace: false);

// 選択しているシートの数をコンソールに書き込みます
Console.WriteLine(workbook.SelectedSheets.Count);

// ワークブックをxlsxとして保存します
workbook.Save("selectworksheets.xlsx");

制限

ワークブックで複数のワークシートを選択するには、有効なライセンスが必要です。ライセンスがない場合、その旨を通知するウォーターマークシートが選択状態およびアクティブになり、複数ワークシートの選択状態が解除されてしまいます。

複数のワークシートのコピーと移動

複数のワークシートを一度にコピーまたは移動するには、IWorksheets インタフェースの CopyCopyBeforeCopyAfterMoveMoveBeforeMoveAfter メソッドを使用します。以下で説明するように、ワークシートを同じワークブックまたは別のワークブックの最後または特定の場所にコピーまたは移動することができます。

メソッド 説明
Copy 対象のワークブックの最後にワークシートのコレクションをコピーします。対象のワークブックが null の場合、ワークシートのコレクションは現在のワークブックにコピーされます。
CopyBefore 指定されたワークシート(別ワークブック内のものも可)の前にワークシートのコレクションをコピーします。
CopyAfter 指定されたワークシート(別ワークブック内のものも可)の後にワークシートのコレクションをコピーします。
Move 対象のワークブックの最後にワークシートのコレクションを移動します。対象のワークブックが null の場合、ワークシートのコレクションは現在のワークブックに移動されます。
MoveBefore 指定されたワークシート(別ワークブック内のものも可)の前にワークシートのコレクションを移動します。
MoveAfter 指定されたワークシート(別ワークブック内のものも可)の後にワークシートのコレクションを移動します。

次のサンプルコードは、同じワークブックの複数のワークシートをコピーする方法を示しています。

C#
コードのコピー
// 新規ワークブックを作成します
Workbook workbook = new Workbook();

// xlsx ファイルを開きます
workbook.Open("FlowChartsFile.xlsx");

// 選択したワークシートを現在のワークブックの最後にコピーします
workbook.Worksheets[new string[] { "FlowChart1", "FlowChart2" }].Copy();

// xlsx ファイルを保存します
workbook.Save("CopyMultipleWorksheets.xlsx");

次のサンプルコードは、複数のワークシートを別のワークブックにコピーする方法を示しています。

C#
コードのコピー
// 新規ワークブックを作成します
Workbook workbook = new Workbook();

// xlsx ファイルを開きます
workbook.Open("FlowChartsFile.xlsx");

// 別のワークブックを作成します
Workbook copyWorkbook = new Workbook();

// 選択したワークシートを対象のワークブックの最後にコピーします
workbook.Worksheets[new string[] { "FlowChart1", "FlowChart2" }].Copy(copyWorkbook);

// xlsx ファイルを保存します
copyWorkbook.Save("CopyMultipleWorksheets.xlsx");

次のサンプルコードは、同じワークブックの複数のワークシートを移動する方法を示しています。

C#
コードのコピー
// 新規ワークブックを作成します
Workbook workbook = new Workbook();

// xlsx ファイルを開きます
workbook.Open("FlowChartsFile.xlsx");

// 選択したワークシートを現在のワークブックの最後に移動します
workbook.Worksheets[new string[] { "FlowChart1", "FlowChart2" }].Move();

// xlsx ファイルを保存します
workbook.Save("MoveMultipleWorksheets.xlsx");

次のサンプルコードは、複数のワークシートを別のワークブックに移動する方法を示しています。

C#
コードのコピー
// 新規ワークブックを作成します
Workbook workbook = new Workbook();

// xlsx ファイルを開きます
workbook.Open("FlowChartsFile.xlsx");

// 別のワークブックを作成します
Workbook moveWorkbook = new Workbook();

// 選択したワークシートを対象のワークブックの最後に移動します
workbook.Worksheets[new string[] { "FlowChart1", "FlowChart2" }].Move(moveWorkbook);

// xlsx ファイルを保存します
moveWorkbook.Save("MoveMultipleWorksheets.xlsx");

メモ:

関連トピック