各シートに印刷範囲を設定したExcelファイルをインポート/エクスポートすると印刷範囲が不正になる
対象製品
SPREAD for ASP.NET 8.0J
状況
修正済み
詳細
各シートに印刷範囲を設定したExcelファイルをインポート/エクスポートすると印刷範囲が不正になります。本現象は、SPREADをExcel 2007形式のExcelファイルに出力した場合にのみ発生します。
【再現コード】
------------------------------------
Webフォームクラス
------------------------------------
Protected Sub Page_Load(sender As Object, e As EventArgs) Handles Me.Load
If IsPostBack Then Return
FpSpread1.OpenExcel("Book1.xlsx")
End Sub
Protected Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
FpSpread1.SaveExcelToResponse("test.xlsx", FarPoint.Excel.ExcelSaveFlags.UseOOXMLFormat)
End Sub
【再現手順】
1.プロジェクトを起動します
2.Button1をクリックしダウンロードされたExcelを表示します
-- 印刷範囲が不正になります(最後のシートのものだけが有効になる)
【再現コード】
------------------------------------
Webフォームクラス
------------------------------------
Protected Sub Page_Load(sender As Object, e As EventArgs) Handles Me.Load
If IsPostBack Then Return
FpSpread1.OpenExcel("Book1.xlsx")
End Sub
Protected Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
FpSpread1.SaveExcelToResponse("test.xlsx", FarPoint.Excel.ExcelSaveFlags.UseOOXMLFormat)
End Sub
【再現手順】
1.プロジェクトを起動します
2.Button1をクリックしダウンロードされたExcelを表示します
-- 印刷範囲が不正になります(最後のシートのものだけが有効になる)
回避方法
Service Pack 3(v8.0.4004.2010)で修正済み。
Service Pack 3(v8.0.4004.2010)より前のバージョンでは次の回避方法が有効です。
------------------------------------------
各シートの印刷範囲の情報を初期化します。本回避コードの実装を行うことで印刷範囲が適切に出力されなす。
------------------------------------
Webフォームクラス
------------------------------------
Protected Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
' 回避策
Dim dataModel As New FarPoint.Web.Spread.Model.DefaultSheetDataModel()
For Each sv As FarPoint.Web.Spread.SheetView In FpSpread1.Sheets
dataModel = DirectCast(sv.DataModel, FarPoint.Web.Spread.Model.DefaultSheetDataModel)
dataModel.RemoveCustomName("Print_Area")
Next
' Excel出力
FpSpread1.SaveExcelToResponse("test.xlsx", FarPoint.Excel.ExcelSaveFlags.UseOOXMLFormat)
End Sub
Service Pack 3(v8.0.4004.2010)より前のバージョンでは次の回避方法が有効です。
------------------------------------------
各シートの印刷範囲の情報を初期化します。本回避コードの実装を行うことで印刷範囲が適切に出力されなす。
------------------------------------
Webフォームクラス
------------------------------------
Protected Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
' 回避策
Dim dataModel As New FarPoint.Web.Spread.Model.DefaultSheetDataModel()
For Each sv As FarPoint.Web.Spread.SheetView In FpSpread1.Sheets
dataModel = DirectCast(sv.DataModel, FarPoint.Web.Spread.Model.DefaultSheetDataModel)
dataModel.RemoveCustomName("Print_Area")
Next
' Excel出力
FpSpread1.SaveExcelToResponse("test.xlsx", FarPoint.Excel.ExcelSaveFlags.UseOOXMLFormat)
End Sub