Excelファイルのインポートとエクスポートを繰り返すとスタイルの設定が不正になる場合がある
対象製品
SPREAD for Windows Forms 7.0J
状況
修正済み
詳細
Excelファイルのインポートとエクスポートを繰り返すとスタイルの設定が不正になる場合があります。
【手順】
1.新規フォームにSPREADとButtonを配置します
2.下記サンプルコードをコピーし、アプリケーションを実行します
3.Button1をクリックします
4.Button2を何度かクリックします
--シートのスタイルが不正になる場合があります
【サンプルコード】
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
' SPREADの初期設定
FpSpread1.Sheets.Clear()
End Sub
Private baseSheet As FarPoint.Win.Spread.SheetView
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
' Excelファイル読み込み用のSPREADの生成
Using spread As New FarPoint.Win.Spread.FpSpread()
' Excelファイルの読み込み
spread.OpenExcel("..¥¥..¥¥excel.xls", FarPoint.Excel.ExcelOpenFlags.TruncateEmptyRowsAndColumns)
' 読み込み後のシートの保存
baseSheet = spread.Sheets(0).Clone()
' シートの追加
FpSpread1.Sheets.Add(baseSheet.Clone())
End Using
End Sub
Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
' Excelファイルへのエクスポート
FpSpread1.SaveExcel("dummy.xls")
' Excelファイルのインポート
FpSpread1.OpenExcel("dummy.xls", FarPoint.Excel.ExcelOpenFlags.TruncateEmptyRowsAndColumns)
' シートのコピーとシート名の変更
Dim sheet As FarPoint.Win.Spread.SheetView = baseSheet.Clone()
sheet.SheetName = String.Format("{0}_{1:00}", sheet.SheetName, FpSpread1.Sheets.Count + 1)
' コピーしたシートの挿入
FpSpread1.Sheets.Insert(0, sheet)
End Sub
【手順】
1.新規フォームにSPREADとButtonを配置します
2.下記サンプルコードをコピーし、アプリケーションを実行します
3.Button1をクリックします
4.Button2を何度かクリックします
--シートのスタイルが不正になる場合があります
【サンプルコード】
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
' SPREADの初期設定
FpSpread1.Sheets.Clear()
End Sub
Private baseSheet As FarPoint.Win.Spread.SheetView
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
' Excelファイル読み込み用のSPREADの生成
Using spread As New FarPoint.Win.Spread.FpSpread()
' Excelファイルの読み込み
spread.OpenExcel("..¥¥..¥¥excel.xls", FarPoint.Excel.ExcelOpenFlags.TruncateEmptyRowsAndColumns)
' 読み込み後のシートの保存
baseSheet = spread.Sheets(0).Clone()
' シートの追加
FpSpread1.Sheets.Add(baseSheet.Clone())
End Using
End Sub
Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
' Excelファイルへのエクスポート
FpSpread1.SaveExcel("dummy.xls")
' Excelファイルのインポート
FpSpread1.OpenExcel("dummy.xls", FarPoint.Excel.ExcelOpenFlags.TruncateEmptyRowsAndColumns)
' シートのコピーとシート名の変更
Dim sheet As FarPoint.Win.Spread.SheetView = baseSheet.Clone()
sheet.SheetName = String.Format("{0}_{1:00}", sheet.SheetName, FpSpread1.Sheets.Count + 1)
' コピーしたシートの挿入
FpSpread1.Sheets.Insert(0, sheet)
End Sub
回避方法
Service Pack 6(v7.0.2019.2008)で修正済み。
Service Pack 6(v7.0.2019.2008)より前のバージョンでは次の回避方法が有効です。
------------------------------------------
Excelファイルのインポート前にSPREADをクリアします。
【サンプルコード】
Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
' Excelファイルへのエクスポート
FpSpread1.SaveExcel("dummy.xls")
' SPREADのクリア
FpSpread1.Reset()
' Excelファイルのインポート
FpSpread1.OpenExcel("dummy.xls", FarPoint.Excel.ExcelOpenFlags.TruncateEmptyRowsAndColumns)
' シートのコピーとシート名の変更
Dim sheet As FarPoint.Win.Spread.SheetView = baseSheet.Clone()
sheet.SheetName = String.Format("{0}_{1:00}", sheet.SheetName, FpSpread1.Sheets.Count + 1)
' コピーしたシートの挿入
FpSpread1.Sheets.Insert(0, sheet)
End Sub
Service Pack 6(v7.0.2019.2008)より前のバージョンでは次の回避方法が有効です。
------------------------------------------
Excelファイルのインポート前にSPREADをクリアします。
【サンプルコード】
Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
' Excelファイルへのエクスポート
FpSpread1.SaveExcel("dummy.xls")
' SPREADのクリア
FpSpread1.Reset()
' Excelファイルのインポート
FpSpread1.OpenExcel("dummy.xls", FarPoint.Excel.ExcelOpenFlags.TruncateEmptyRowsAndColumns)
' シートのコピーとシート名の変更
Dim sheet As FarPoint.Win.Spread.SheetView = baseSheet.Clone()
sheet.SheetName = String.Format("{0}_{1:00}", sheet.SheetName, FpSpread1.Sheets.Count + 1)
' コピーしたシートの挿入
FpSpread1.Sheets.Insert(0, sheet)
End Sub