作成日: 2025/07/04 最終更新日: 2025/07/04
文書種別
不具合
状況
回避方法あり
詳細
列に書式「yyyy/MM/dd HH:mm:ss.000」を設定してExcelファイルに出力すると、ファイルを開く際に下記エラーメッセージが表示される場合があります。
「XXXX.xlsx'の一部の内容に問題が見つかりました。可能な限り内容を回復しますか?」
また、エラーメッセージの「はい」をクリックしてExcelファイルを開くと、セルにこの書式が正しく設定されておらず、「45840.46465」のように表示されます。
「XXXX.xlsx'の一部の内容に問題が見つかりました。可能な限り内容を回復しますか?」
また、エラーメッセージの「はい」をクリックしてExcelファイルを開くと、セルにこの書式が正しく設定されておらず、「45840.46465」のように表示されます。
回避方法
FlexGridをExcelとしてメモリに保存し、C1Excelを用いてそのセルの書式を明示的に指定したのち、Excelファイルに保存します。
◎サンプルコード(VB)
Imports C1.Win.C1FlexGrid
Imports System.IO
Public Class Form1
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Dim col = Me.C1FlexGrid1.Cols(1)
col.Name = "UPDATEDATE"
col.Caption = "UPDATEDATE"
col.Format = "yyyy/MM/dd HH:mm:ss.000"
Me.C1FlexGrid1(1, 1) = Date.Now
Me.C1FlexGrid1.AutoSizeCols()
End Sub
Private Sub ToolStripButton1_Click(sender As Object, e As EventArgs) Handles ToolStripButton1.Click
Dim fileName = "test.xlsx"
Using mem = New MemoryStream()
Me.C1FlexGrid1.SaveExcel(mem, "test", FileFlags.IncludeFixedCells)
Dim workbook = New C1.C1Excel.C1XLBook()
workbook.Load(mem)
Dim rows = workbook.Sheets("test").Rows
For row = 1 To rows.Count - 1
workbook.Sheets("test")(row, 1).Style.Format = "yyyy/MM/dd HH:mm:ss.000"
Next
workbook.Save(fileName)
End Using
Process.Start(fileName)
End Sub
End Class◎サンプルコード(C#)
using C1.C1Excel;
using C1.Win.C1FlexGrid;
namespace prj_C1FlexGrid
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
Column col = this.c1FlexGrid1.Cols[1];
col.Name = "UPDATEDATE";
col.Caption = "UPDATEDATE";
col.Format = "yyyy/MM/dd HH:mm:ss.000";
this.c1FlexGrid1[1, 1] = DateTime.Now;
this.c1FlexGrid1.AutoSizeCols();
}
private void toolStripButton1_Click(object sender, EventArgs e)
{
string fileName = "test.xlsx";
using (var mem = new MemoryStream())
{
this.c1FlexGrid1.SaveExcel(mem, "test", FileFlags.IncludeFixedCells);
mem.Position = 0;
var workbook = new C1XLBook();
workbook.Load(mem);
var sheet = workbook.Sheets["test"];
for (int row = 1; row < sheet.Rows.Count; row++)
{
sheet[row, 1].Style.Format = "yyyy/MM/dd HH:mm:ss.000";
}
workbook.Save(fileName);
}
Process.Start(new ProcessStartInfo(fileName) { UseShellExecute = true });
}
}
}