作成日: 2020/05/15 最終更新日: 2020/08/26
文書種別
不具合
状況
修正済み
詳細
日付時刻型セルのDateTimeFormatプロパティに既定の書式であるLongDateまたはLongDateWithTimeを設定すると、年をBackspaceキーで「0001年」に変更できない場合や正しく入力できない場合があります。また、Excelエクスポートで不要なシングルクォーテーションが付加され不正な値が出力されます。
【再現手順】
1.新規作成したプロジェクトのForm1にFpSpreadを張り付ける
2.下記サンプルコードを記述し、プロジェクトをデバック実行する
--エクスポートしたExcelで日付に不要なシングルクォーテーションが付加される
3.実行画面のA1セルをアクティブにして編集を開始しBackspaceキーで年月日を消す
--「XXXX年1月1日」となり、年が変化しない
4.A1セルの先頭にカーソルがある状態から年を入力する
--年の入力ができない
■サンプルコード(VB.NET)
【再現手順】
1.新規作成したプロジェクトのForm1にFpSpreadを張り付ける
2.下記サンプルコードを記述し、プロジェクトをデバック実行する
--エクスポートしたExcelで日付に不要なシングルクォーテーションが付加される
3.実行画面のA1セルをアクティブにして編集を開始しBackspaceキーで年月日を消す
--「XXXX年1月1日」となり、年が変化しない
4.A1セルの先頭にカーソルがある状態から年を入力する
--年の入力ができない
■サンプルコード(VB.NET)
Public Class Form1
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
' 日付型セルの設定
Dim dateCell1 As New FarPoint.Win.Spread.CellType.DateTimeCellType()
dateCell1.DateTimeFormat = FarPoint.Win.Spread.CellType.DateTimeFormat.LongDateWithTime
'dateCell1.DateTimeFormat = FarPoint.Win.Spread.CellType.DateTimeFormat.LongDate
FpSpread1.ActiveSheet.Columns(0).CellType = dateCell1
FpSpread1.ActiveSheet.Columns(0).Width = 200
' 値の設定
FpSpread1.ActiveSheet.SetValue(0, 0, DateTime.Today)
' Excelファイルへの出力
Dim fileName As String = "test.xlsx"
FpSpread1.SaveExcel(fileName, FarPoint.Excel.ExcelSaveFlags.UseOOXMLFormat)
' Excelファイルの表示
Process.Start(fileName)
End Sub
End Class
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
' 日付型セルの設定
Dim dateCell1 As New FarPoint.Win.Spread.CellType.DateTimeCellType()
dateCell1.DateTimeFormat = FarPoint.Win.Spread.CellType.DateTimeFormat.LongDateWithTime
'dateCell1.DateTimeFormat = FarPoint.Win.Spread.CellType.DateTimeFormat.LongDate
FpSpread1.ActiveSheet.Columns(0).CellType = dateCell1
FpSpread1.ActiveSheet.Columns(0).Width = 200
' 値の設定
FpSpread1.ActiveSheet.SetValue(0, 0, DateTime.Today)
' Excelファイルへの出力
Dim fileName As String = "test.xlsx"
FpSpread1.SaveExcel(fileName, FarPoint.Excel.ExcelSaveFlags.UseOOXMLFormat)
' Excelファイルの表示
Process.Start(fileName)
End Sub
End Class
回避方法
Service Pack 5(v12.0.4508.2012)で修正済み。
Service Pack を適用せずに対処する場合、ユーザー定義の書式を設定することで回避可能です。
Service Pack を適用せずに対処する場合、ユーザー定義の書式を設定することで回避可能です。
'日付型セルの作成
Dim dateCell1 As New FarPoint.Win.Spread.CellType.DateTimeCellType()
dateCell1.DateTimeFormat = FarPoint.Win.Spread.CellType.DateTimeFormat.LongDate
'回避策1
dateCell1.DateTimeFormat = FarPoint.Win.Spread.CellType.DateTimeFormat.UserDefined
dateCell1.UserDefinedFormat = "yyyy年M月d日"
'日付型セルの作成
Dim dateCell2 As New FarPoint.Win.Spread.CellType.DateTimeCellType()
dateCell2.DateTimeFormat = FarPoint.Win.Spread.CellType.DateTimeFormat.LongDateWithTime
'回避策2
dateCell2.DateTimeFormat = FarPoint.Win.Spread.CellType.DateTimeFormat.UserDefined
dateCell2.UserDefinedFormat = "yyyy年M月d日 H:mm:ss"
Dim dateCell1 As New FarPoint.Win.Spread.CellType.DateTimeCellType()
dateCell1.DateTimeFormat = FarPoint.Win.Spread.CellType.DateTimeFormat.LongDate
'回避策1
dateCell1.DateTimeFormat = FarPoint.Win.Spread.CellType.DateTimeFormat.UserDefined
dateCell1.UserDefinedFormat = "yyyy年M月d日"
'日付型セルの作成
Dim dateCell2 As New FarPoint.Win.Spread.CellType.DateTimeCellType()
dateCell2.DateTimeFormat = FarPoint.Win.Spread.CellType.DateTimeFormat.LongDateWithTime
'回避策2
dateCell2.DateTimeFormat = FarPoint.Win.Spread.CellType.DateTimeFormat.UserDefined
dateCell2.UserDefinedFormat = "yyyy年M月d日 H:mm:ss"
旧文書番号
85581