带日期的Excel Open XML的最小样式表?
我正在尝试使用OpenXMLSDK创建一个Excel文件,其中包含所需的最小样式表,允许我将单元格格式化为日期。下面是我对样式表的尝试:带日期的Excel Open XML的最小样式表?,excel,date,openxml,openxml-sdk,Excel,Date,Openxml,Openxml Sdk,我正在尝试使用OpenXMLSDK创建一个Excel文件,其中包含所需的最小样式表,允许我将单元格格式化为日期。下面是我对样式表的尝试: <?xml version="1.0" encoding="utf-8"?> <x:styleSheet xmlns:x="http://schemas.openxmlformats.org/spreadsheetml/2006/main"> <x:cellXfs count="1"> <x:x
<?xml version="1.0" encoding="utf-8"?>
<x:styleSheet xmlns:x="http://schemas.openxmlformats.org/spreadsheetml/2006/main">
<x:cellXfs count="1">
<x:xf numFmtId="14" xfId="0" applyNumberFormat="1" />
</x:cellXfs>
</x:styleSheet>
我曾尝试添加单元格样式格式和单元格样式,但仅使用上述内容似乎就破坏了文档,我不确定原因。通过大量的尝试和错误,我发现样式表需要以下内容:
- 默认字体
- 默认填充
- 默认边框
- 默认单元格格式
var stylesheet=new stylesheet();
//默认字体
var fonts=new fonts(){Count=1,KnownFonts=BooleanValue.FromBoolean(true)};
var font=新字体
{
FontSize=新FontSize(){Val=11},
FontName=new FontName(){Val=“Calibri”},
FontFamilyNumber=new FontFamilyNumber(){Val=2},
FontScheme=new FontScheme(){Val=new EnumValue(FontSchemeValues.Minor)}
};
字体。追加(字体);
样式表。追加(字体);
//默认填充
var fills=new fills(){Count=1};
var fill=新填充();
fill.PatternFill=new PatternFill(){PatternType=new EnumValue(PatternValues.None)};
填充。追加(填充);
样式表。追加(填充);
//默认边框
var borders=newborders(){Count=1};
var border=新边框
{
LeftBorder=新的LeftBorder(),
RightBorder=新的RightBorder(),
TopBorder=新的TopBorder(),
BottomBorder=新的BottomBorder(),
对角线边框=新的对角线边框()
};
边框。追加(边框);
追加(边框);
//默认单元格格式和日期单元格格式
var cellFormats=new cellFormats(){Count=2};
var cellFormatDefault=new CellFormat{NumberFormatId=0,FormatId=0,FontId=0,BorderId=0,FillId=0};
附加(cellFormatDefault);
var cellFormatDate=new CellFormat{NumberFormatId=22,FormatId=0,FontId=0,BorderId=0,FillId=0,ApplyNumberFormat=BooleanValue.FromBoolean(true)};
cellFormats.Append(cellFormatDate);
追加(单元格格式);
返回样式表;
生成的XML如下所示:
我发现默认情况下它应该有两种填充模式,另一种是
。如果您不提供此选项,它不会给出错误,但是如果您尝试在ID 1处提供自己的填充模式,它将不起作用。
var stylesheet = new Stylesheet();
var cellFormats = new CellFormats() { Count = 1 };
var cellFormat = new CellFormat();
cellFormat.NumberFormatId = 14;
cellFormat.FormatId = 0;
cellFormat.ApplyNumberFormat = BooleanValue.FromBoolean(true);
cellFormats.Append(cellFormat);
stylesheet.Append(cellFormats);