シートをコピーしたい
対象製品
SPREAD for ASP.NET 8.0J
詳細
下記のようにシートをコピーした場合、Sheet1 とSheet2は同じシートオブジェクトを参照します。そのため、片方のシートを編集し内容を更新すると、もう一方のシートへも変更内容が反映されてしまいます。
Sheet2 = Sheet1
下記のCopySheetメソッドのような方法でシートのコピーを作成することができます。
◎サンプルコード(VB)
◎サンプルコード(C#)
Sheet2 = Sheet1
下記のCopySheetメソッドのような方法でシートのコピーを作成することができます。
◎サンプルコード(VB)
Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click
' クライアント側の変更を確定
FpSpread1.SaveChanges()
' 新しいシートを作成
Dim newSheet As New FarPoint.Web.Spread.SheetView
' Sheet1をコピー
CopySheet(FpSpread1.Sheets(0), newSheet)
' 新しいシート固有の設定
newSheet.SheetName = "Sheet2"
newSheet.Cells(1, 1).Value = "Sheet2"
' シートを追加
FpSpread1.Sheets.Add(newSheet)
' コピーしたシートに数式を追加する場合は、
' LoadFormulas メソッド実行後に数式を設定 FpSpread1.LoadFormulas(True)
FpSpread1.Sheets(1).Cells(3, 0).Formula = "SUM(A1:A3)"
End Sub
Private Sub CopySheet(ByVal src As FarPoint.Web.Spread.SheetView, ByVal dest As FarPoint.Web.Spread.SheetView)
' シートの状態をメモリに上に書き出す
Dim ms As New System.IO.MemoryStream
Dim sw As New System.IO.StreamWriter(ms)
Dim tw As New System.Xml.XmlTextWriter(sw)
CType(src, FarPoint.Web.Spread.Model.ISerializeSupport).Serialize(tw)
tw.Flush()
Dim bytes As Byte() = ms.ToArray()
ms = New System.IO.MemoryStream(bytes)
' シートの状態を新しいシートに読み込む
Dim sr As New System.IO.StreamReader(ms)
sr.BaseStream.Position = 0
Dim xml As String = "<X>" & sr.ReadToEnd() & "</X>"
Dim doc As New System.Xml.XmlDocument
doc.LoadXml(xml)
Dim nr As New System.Xml.XmlNodeReader(doc.FirstChild)
CType(dest, FarPoint.Web.Spread.Model.ISerializeSupport).Deserialize(nr)
End Sub
' クライアント側の変更を確定
FpSpread1.SaveChanges()
' 新しいシートを作成
Dim newSheet As New FarPoint.Web.Spread.SheetView
' Sheet1をコピー
CopySheet(FpSpread1.Sheets(0), newSheet)
' 新しいシート固有の設定
newSheet.SheetName = "Sheet2"
newSheet.Cells(1, 1).Value = "Sheet2"
' シートを追加
FpSpread1.Sheets.Add(newSheet)
' コピーしたシートに数式を追加する場合は、
' LoadFormulas メソッド実行後に数式を設定 FpSpread1.LoadFormulas(True)
FpSpread1.Sheets(1).Cells(3, 0).Formula = "SUM(A1:A3)"
End Sub
Private Sub CopySheet(ByVal src As FarPoint.Web.Spread.SheetView, ByVal dest As FarPoint.Web.Spread.SheetView)
' シートの状態をメモリに上に書き出す
Dim ms As New System.IO.MemoryStream
Dim sw As New System.IO.StreamWriter(ms)
Dim tw As New System.Xml.XmlTextWriter(sw)
CType(src, FarPoint.Web.Spread.Model.ISerializeSupport).Serialize(tw)
tw.Flush()
Dim bytes As Byte() = ms.ToArray()
ms = New System.IO.MemoryStream(bytes)
' シートの状態を新しいシートに読み込む
Dim sr As New System.IO.StreamReader(ms)
sr.BaseStream.Position = 0
Dim xml As String = "<X>" & sr.ReadToEnd() & "</X>"
Dim doc As New System.Xml.XmlDocument
doc.LoadXml(xml)
Dim nr As New System.Xml.XmlNodeReader(doc.FirstChild)
CType(dest, FarPoint.Web.Spread.Model.ISerializeSupport).Deserialize(nr)
End Sub
◎サンプルコード(C#)
protected void Button1_Click1(object sender, EventArgs e)
{
// クライアント側の変更を確定
FpSpread1.SaveChanges();
// 新しいシートを作成
FarPoint.Web.Spread.SheetView newSheet = new FarPoint.Web.Spread.SheetView();
// Sheet1を新しいシートにコピー
CopySheet(FpSpread1.Sheets[0], newSheet);
// 新しいシート固有の設定
newSheet.Cells[1, 1].Value = "Sheet2";
newSheet.SheetName = "Sheet2";
// シートを追加
FpSpread1.Sheets.Add(newSheet);
// コピーしたシートに数式を追加する場合は、
// LoadFormulas メソッド実行後に数式を設定 FpSpread1.LoadFormulas(true);
FpSpread1.Sheets[1].Cells[3, 0].Formula = "SUM(A1:A3)";
}
private void CopySheet(FarPoint.Web.Spread.SheetView src,FarPoint.Web.Spread.SheetView dest)
{
// シートの状態をメモリ上に書き出す
System.IO.MemoryStream ms=new System.IO.MemoryStream();
System.IO.StreamWriter sw=new System.IO.StreamWriter(ms);
System.Xml.XmlTextWriter tw=new System.Xml.XmlTextWriter(sw);
((FarPoint.Web.Spread.Model.ISerializeSupport)src).Serialize(tw);
tw.Flush();
Byte[] bytes=ms.ToArray();
ms=new System.IO.MemoryStream(bytes);
// シートの状態を新しいシートに読み込む
System.IO.StreamReader sr=new System.IO.StreamReader(ms);
sr.BaseStream.Position=0;
string xml="<X>"+sr.ReadToEnd()+"</X>";
System.Xml.XmlDocument doc=new System.Xml.XmlDocument();
doc.LoadXml(xml);
System.Xml.XmlNodeReader nr=new System.Xml.XmlNodeReader(doc.FirstChild);
((FarPoint.Web.Spread.Model.ISerializeSupport)dest).Deserialize(nr);
}
{
// クライアント側の変更を確定
FpSpread1.SaveChanges();
// 新しいシートを作成
FarPoint.Web.Spread.SheetView newSheet = new FarPoint.Web.Spread.SheetView();
// Sheet1を新しいシートにコピー
CopySheet(FpSpread1.Sheets[0], newSheet);
// 新しいシート固有の設定
newSheet.Cells[1, 1].Value = "Sheet2";
newSheet.SheetName = "Sheet2";
// シートを追加
FpSpread1.Sheets.Add(newSheet);
// コピーしたシートに数式を追加する場合は、
// LoadFormulas メソッド実行後に数式を設定 FpSpread1.LoadFormulas(true);
FpSpread1.Sheets[1].Cells[3, 0].Formula = "SUM(A1:A3)";
}
private void CopySheet(FarPoint.Web.Spread.SheetView src,FarPoint.Web.Spread.SheetView dest)
{
// シートの状態をメモリ上に書き出す
System.IO.MemoryStream ms=new System.IO.MemoryStream();
System.IO.StreamWriter sw=new System.IO.StreamWriter(ms);
System.Xml.XmlTextWriter tw=new System.Xml.XmlTextWriter(sw);
((FarPoint.Web.Spread.Model.ISerializeSupport)src).Serialize(tw);
tw.Flush();
Byte[] bytes=ms.ToArray();
ms=new System.IO.MemoryStream(bytes);
// シートの状態を新しいシートに読み込む
System.IO.StreamReader sr=new System.IO.StreamReader(ms);
sr.BaseStream.Position=0;
string xml="<X>"+sr.ReadToEnd()+"</X>";
System.Xml.XmlDocument doc=new System.Xml.XmlDocument();
doc.LoadXml(xml);
System.Xml.XmlNodeReader nr=new System.Xml.XmlNodeReader(doc.FirstChild);
((FarPoint.Web.Spread.Model.ISerializeSupport)dest).Deserialize(nr);
}
キーワード
全般