を使用してExcelのセルに日付を追加:これは私がやっているものですOpenXMLの
CellFormat cellFormat =
new CellFormat()
{ NumberFormatId = (UInt32Value)14U,
FontId = (UInt32Value)0U,
FillId = (UInt32Value)0U,
BorderId = (UInt32Value)0U,
FormatId = (UInt32Value)0U,
ApplyNumberFormat = true };
sd.WorkbookPart.WorkbookStylesPart.Stylesheet.CellFormats.AppendChild<CellFormat>(cellFormat);
_dateStyleIndex = sd.WorkbookPart.WorkbookStylesPart.Stylesheet.CellFormats.Count() - 1;
、その後どこかに後で私のコードで
else if (type == DataTypes.DateTime)
{
DateTime dateTime = DateTime.Parse(text);
double oaValue = dateTime.ToOADate();
cell.CellValue = new CellValue(oaValue.ToString(CultureInfo.InvariantCulture));
cell.DataType = new EnumValue<CellValues>(CellValues.Date);
cell.StyleIndex = Convert.ToUInt32(_dateStyleIndex);
}
をしかし、私は、生成されたExcelが付いたファイルを検証する場合XML SDKツールを開くと、次の検証エラーが発生します。属性 't'に無効な値 'd'があります。 Enumeration制約が失敗しました。
私はここで何が欠けていますか?事前にあなたの助けをありがとう。
PS:これはx:sheetDataのように見えます。それは私に妥当性検査のエラーを与えます:
<x:sheetData xmlns:x="http://schemas.openxmlformats.org/spreadsheetml/2006/main">
<x:row r="2">
<x:c r="B2" t="s">
<x:v>0</x:v>
</x:c>
<x:c r="C2" t="s">
<x:v>1</x:v>
</x:c>
<x:c r="D2" t="s">
<x:v>2</x:v>
</x:c>
</x:row>
<x:row r="3">
<x:c r="B3" t="s">
<x:v>3</x:v>
</x:c>
<x:c r="C3" t="s">
<x:v>6</x:v>
</x:c>
<x:c r="D3" s="1" t="d">
<x:v>42634.906087963</x:v>
</x:c>
</x:row>
<x:row r="4">
<x:c r="B4" t="s">
<x:v>4</x:v>
</x:c>
<x:c r="C4" t="s">
<x:v>7</x:v>
</x:c>
<x:c r="D4" s="1" t="d">
<x:v>42634.9062037037</x:v>
</x:c>
</x:row>
<x:row r="5">
<x:c r="B5" t="s">
<x:v>5</x:v>
</x:c>
<x:c r="C5" t="s">
<x:v>8</x:v>
</x:c>
<x:c r="D5" s="1" t="d">
<x:v>42634.9062847222</x:v>
</x:c>
</x:row>
</x:sheetData>
Cell.DataTypeをCellValues.Dateに設定していませんか?私はそれについてEnumValueをインスタンス化するとは思わない。 DataTypeにはSchemaAttrAttributeという属性があります。私はそれが空であると仮定しているため、エラーを引き起こしています。 – Dispersia
そして、あなたはそれがどんな行を投げているのかは言わなかったが、CellValue =であれば、その前にあなたのDataTypeセットを移動しようとする。おそらく、コンテンツを設定する前にそのタイプを知る必要があるかもしれません。 – Dispersia
はい、それは愚かなEnumValueのインスタンス化でした。 DataTypeのすべてのプロパティが正しく設定されていますが、このエラーが発生します。 –