我通过xslt导出excel可以正常使用,
当我把这个导出的excel再导入时发现excel的字段头格式不对,而内容格式没问题。
下面是导出excel时动态生成的xslt,有做这方面的请帮个忙!
private void CreateStylesheet(XmlTextWriter writer, string[] sHeaders, string[] sFileds, ExportFormat FormatType)
{
try
{
// xsl:stylesheet
string ns = "http://www.w3.org/1999/XSL/Transform";
writer.Formatting = Formatting.Indented;
writer.WriteStartDocument( );
writer.WriteStartElement("xsl","stylesheet",ns);
writer.WriteAttributeString("version","1.0");
writer.WriteStartElement("xsl:output");
writer.WriteAttributeString("method","text");
writer.WriteAttributeString("version","4.0");
writer.WriteEndElement( );

// xsl-template
writer.WriteStartElement("xsl:template");
writer.WriteAttributeString("match","/"); // xsl:value-of for headers
for(int i=0; i< sHeaders.Length; i++)
{
writer.WriteString("\"");
writer.WriteStartElement("xsl:value-of");
writer.WriteAttributeString("select", "'"+ sHeaders[i] + "'");
//writer.WriteAttributeString("select",sHeaders[i]);
writer.WriteEndElement( ); // xsl:value-of
writer.WriteString("\"");
if (i != sFileds.Length - 1) writer.WriteString( (FormatType == ExportFormat.CSV ) ? "," : " " );
}

// xsl:for-each
writer.WriteStartElement("xsl:for-each");
writer.WriteAttributeString("select","Export/Values");
writer.WriteString("\r\n");

// xsl:value-of for data fields
for(int i=0; i< sFileds.Length; i++)
{
writer.WriteString("\"");
writer.WriteStartElement("xsl:value-of");
writer.WriteAttributeString("select", sFileds[i]);
writer.WriteEndElement( ); // xsl:value-of
writer.WriteString("\"");
if (i != sFileds.Length - 1) writer.WriteString( (FormatType == ExportFormat.CSV ) ? "," : " " );
}

writer.WriteEndElement( ); // xsl:for-each
writer.WriteEndElement( ); // xsl-template
writer.WriteEndElement( ); // xsl:stylesheet
writer.WriteEndDocument( );
}
catch(Exception Ex)
{
throw Ex;
}
}

解决方案 »

  1.   

    是这样的:
    我可以成功地把数据导出为excel文件,
    但是再把这个excel文件导入时出错,经测试发现excel的表头数据格式不规则
    请问下大家是怎么导出规则的excel,就是该导出的excel可以再导入的(用opendatasource可以取数据的)
      

  2.   

    不知道为什么我导出的excel表头都 是不规则的,再用sql的opendatasource就打不开了