作成日: 2021/03/11 最終更新日: 2021/03/11
文書種別
使用方法
詳細
SheetのCloneメソッドでシートのコピーを生成し、Addメソッドでこのシートを追加するとエラー※が発生することがあります。
※「System.ArgumentException: 'シート名は一意でなければなりません」
Cloneメソッドで生成されるシートは名前もコピー元と同じなので、そのままAddすると同名シートを追加することになるためです。
これを回避するために、以下のいずれかの方法が考えられます。
(1)生成されたシートの名前を変更してから追加する。
(2)元のシートが削除可能なケースでは、RemoveAtメソッドでコピー元シートを削除したのち、生成したシートを追加する。
以下に、ロードしたExcelファイルの最初のシートをコピーして追加するサンプルコードを記載します。
◎サンプルコード(VB)
※「System.ArgumentException: 'シート名は一意でなければなりません」
Cloneメソッドで生成されるシートは名前もコピー元と同じなので、そのままAddすると同名シートを追加することになるためです。
これを回避するために、以下のいずれかの方法が考えられます。
(1)生成されたシートの名前を変更してから追加する。
(2)元のシートが削除可能なケースでは、RemoveAtメソッドでコピー元シートを削除したのち、生成したシートを追加する。
以下に、ロードしたExcelファイルの最初のシートをコピーして追加するサンプルコードを記載します。
◎サンプルコード(VB)
Imports C1.C1Excel
Public Class Form1
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button2.Click
Dim c1XLBook01 As New C1XLBook
c1XLBook01.Load("..¥..¥Test01.xlsx")
Dim workSheet01 As XLSheet = c1XLBook01.Sheets(0)
Dim c1XLBook02 As New C1XLBook
c1XLBook02 = c1XLBook01.Clone()
'c1XLBook02.Sheets.RemoveAt(0) '(2)の方法
Dim workSheet02 As XLSheet
workSheet02 = c1XLBook01.Sheets(0).Clone()
workSheet02.Name = "NewSheet" '(1)の方法
c1XLBook02.Sheets.Add(workSheet02)
c1XLBook02.Save("..¥..¥Test01_save.xls")
System.Diagnostics.Process.Start("..¥..¥Test01_save.xls")
End Sub
End Class
◎サンプルコード(C#)using C1.C1Excel;
namespace prj_C1ExcelClone
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
C1XLBook c1XLBook01 = new C1XLBook();
c1XLBook01.Load(@"..¥..¥Test01.xlsx");
XLSheet workSheet01 = c1XLBook01.Sheets[0];
C1XLBook c1XLBook02 = new C1XLBook();
c1XLBook02 = c1XLBook01.Clone();
//c1XLBook02.Sheets.RemoveAt(0); //(2)の方法
XLSheet workSheet02;
workSheet02 = c1XLBook01.Sheets[0].Clone();
workSheet02.Name = "NewSheet"; //(1)の方法
c1XLBook02.Sheets.Add(workSheet02);
c1XLBook02.Save(@"..¥..¥Test01_save.xls");
System.Diagnostics.Process.Start("..¥¥..¥¥Test01_save.xls");
}
}
}
旧文書番号
86482