Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
带日期的Excel Open XML的最小样式表?_Excel_Date_Openxml_Openxml Sdk - Fatal编程技术网

带日期的Excel Open XML的最小样式表?

带日期的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

我正在尝试使用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:xf numFmtId="14" xfId="0" applyNumberFormat="1" />
    </x:cellXfs>
</x:styleSheet>

我曾尝试添加单元格样式格式和单元格样式,但仅使用上述内容似乎就破坏了文档,我不确定原因。

通过大量的尝试和错误,我发现样式表需要以下内容:

  • 默认字体
  • 默认填充
  • 默认边框
  • 默认单元格格式
如果不删除其中任何一项,则会导致Excel出错,除非所有这些内容都被删除。此外,我还为日期添加了另一种单元格格式

我希望这对其他人有用。以下代码创建允许日期格式(数字格式id 22)的工作样式表:

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);