コピーしたシートに印刷タイトル行設定が反映されない

文書番号 : 39324     文書種別 : 不具合     登録日 : 2016/02/23     最終更新日 : 2016/09/09
文書を印刷する
対象製品
SPREAD for ASP.NET 8.0J
状況
修正済み
詳細
コピーで生成されたシートのExcel出力時、印刷タイトル行設定が反映されない現象が発生します。

【再現手順】
1.新規WebフォームにSPREADとボタンコントロールを配置し、下記の再現コードを貼り付ける。
2.プロジェクトフォルダに添付のExcelファイルを配置する
3.プロジェクトを起動し、ボタンを押下する
--- 出力されたExcelファイルのシート2に印刷タイトル行が設定されていない。
--- インポートしたExcelファイルのシートには印刷タイトル行が設定されており、
  シート2はこれをコピーして生成されたものなので、印刷タイトル行も設定されている状態が正常な動作です。

【再現コード】
------------------------------------
Webフォームクラス
------------------------------------
Public Class WebForm1
  Inherits System.Web.UI.Page

  Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
    If Page.IsPostBack Then Return

  End Sub

  Protected Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    Call Test2()
  End Sub

  Private Sub Test2()
    ' Excelファイルの読み込み
    FpSpread1.OpenExcel(MapPath("Book3.xlsx"))

    ' シートのコピー
    Dim newSheet As New FarPoint.Web.Spread.SheetView()
    CopySheet(FpSpread1.Sheets(0), newSheet)
    newSheet.SheetName = "Test"
    FpSpread1.Sheets.Add(newSheet)

    ' Excelファイルの出力
    FpSpread1.SaveExcelToResponse("text2.xlsx", FarPoint.Excel.ExcelSaveFlags.UseOOXMLFormat)
  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
End Class
回避方法
Service Pack 3(v8.0.4004.2010)で修正済み。
Service Pack 3(v8.0.4004.2010)より前のバージョンでは次の回避方法が有効です。
------------------------------------------

OpenXML形式ではなく、BIFF8形式にしてエクスポート処理を行います。

FpSpread1.SaveExcelToResponse("text2.xls")