第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循环就得到了动态的列名本回答被提问者采纳