C# 读取XML中字段类型,导出EXCEL,请问怎么根据XML的类型到出EXCEL,我要的是动态的!请大侠赐教

如题所述

第1个回答  2011-07-28
首先将XML数据转换成DataTable
DataSet ds = new DataSet();
ds.ReadXml(fileDataSource); //fileDataSource为文件所在路径+文件名
ds.DataSetName = "XmlData";
return ds.Tables[0];

导出Excel方法:

GridView gridView = new GridView();
gridView.DataSource = dtSource;
gridView.DataBind();

HttpResponse response = HttpContext.Current.Response;

response.Clear();
response.BufferOutput = true;

//设定输出的字符集
response.Charset = "UTF-8";
response.AppendHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode(fileName, Encoding.UTF8).ToString());
response.ContentEncoding = Encoding.UTF8;

//设置导出文件的格式
response.ContentType = "application/ms-excel";
gridView.EnableViewState = false;

CultureInfo cultureInfo = new CultureInfo("ZH-CN", true);
StringWriter stringWriter = new StringWriter(cultureInfo);
HtmlTextWriter textWriter = new HtmlTextWriter(stringWriter);
gridView.RenderControl(textWriter);
response.Write(stringWriter.ToString());
response.End();

gridView = null;
第2个回答  2011-07-27
反射技术
我刚做了一个跟你想做的东西差不多的工具
但是涉及到公司隐私所以不能发源码给你,可以给你点思路提示
下面是我给你写的一点代码示例
思路是将你要导出的类反射,读出类里的属性名,然后在excel里每个属性建一列
Type ty = results[0].GetType();//result是你想导出的集合函数
PropertyInfo[] pi = ty.GetProperties();//获取集合函数内的成员类的属性名
string[] colNmaes = new string[pi.Length];//colName是excel的列名的集合

for (int i = 0; i < pi.Length; i++)
{
colNmaes[i] = pi[i].Name;

}//通过这个for循环就得到了动态的列名本回答被提问者采纳
相似回答