我遇到了与这个问题相同的问题:
如何防止在使用c导入excel文档时去掉前导零#
但我不确定这是否是我的场景的最佳解决方案。这是我用于进行导出的代码。有人知道我可以改变什么来防止前面的0被去掉吗?
private static void Export_with_XSLT_Web(数据集dsExport,string[]s标题,string[]s文件,导出格式格式类型,字符串文件名){HttpContext。当前。回应。清除();HttpContext。当前。回应。缓冲区=真;HttpContext。当前。回应。ContentType=“application/vnd.ms-excel”;HttpContext。当前。回应。AppendHeader(“content-disposition”,“附件;文件名=“+文件名);}//用于转换此数据集的XSLT。MemoryStream流=new MemoryStream();XmlTextWriter writer=新的XmlTextWriter(流,Encoding.UTF8);创建样式表(writer、sHeaders、sFiled、FormatType);作者。冲洗();流。Seek(0,SeekOrigin.Begin);XmlDataDocument xmlDoc=新的XmlData文档(dsExport);XslTransform xslTran=新的XslTransfer();xslTran公司。加载(新的XmlTextReader(流),null,null);using(StringWriter sw=new StringWiter()){xslTran公司。转换(xmlDoc,null,sw,null);HttpContext。当前。回应。写入(sw.ToString());作者。关闭();流。关闭();HttpContext。当前。回应。结束();}}}
这是创建样式表的方法,这里有什么可以更改以将部分或所有字段作为文本引入的吗。
私有静态void CreateStylesheet(XmlTextWriter编写器,string[]s标题,string[]文件,导出格式格式类型){尝试{//xsl:样式表字符串ns=“http://www.w3.org/1999/XSL/Transform网站";作者。格式化=格式化。缩进;作者。WriteStartDocument();作者。WriteStartElement(“xsl”,“stylesheet”,ns);作者。WriteAttributeString(“版本”,“1.0”);作者。WriteStartElement(“xsl:output”);作者。WriteAttributeString(“方法”、“文本”);作者。WriteAttributeString(“版本”,“4.0”);作者。WriteEndElement();//xsl模板作者。WriteStartElement(“xsl:template”);作者。WriteAttributeString(“match”,“/”);//xsl:value-of用于头for(int i=0;i<sHeaders.Length;i++){作者。WriteString(“\”);作者。WriteStartElement(“xsl:value-of”);作者。WriteAttributeString(“select”,“'”+sHeaders[i]+“'”);作者。WriteEndElement();//xsl:值作家。WriteString(“\”);}//xsl:每个作者。WriteStartElement(“xsl:for-each”);作者。WriteAttributeString(“选择”,“导出/值”);作者。WriteString(“\r\n”);//数据字段的xsl:value-offor(int i=0;i<sFileds.Length;i++){作者。WriteString(“\”);作者。WriteStartElement(“xsl:value-of”);作者。WriteAttributeString(“select”,sFileds[i]);作家。WriteEndElement();//xsl:值作者。WriteString(“\”);}作家。WriteEndElement();//xsl:每个作者。WriteEndElement();//xsl模板作者。WriteEndElement();//xsl:样式表作者。WriteEndDocument();}catch(异常Ex){抛出Ex;}}