同时,看见别人网上说不用这些dll都可以导出,我就实在是没弄明白,最近,做一系统的时候,正好碰到别人机器上没装excel,但是,偏偏要导出这个东西,因此,非常的头疼。
后来想了个折中的办法,呵呵,既然excel是微软开发的,并且excel里面的格子也算是table吧,呵呵,那 可不可以直接把一个table存如一个文件,然后保存为xls就行了撒。
请记住一点......各个方法有各个方法的应用场景....
代码非常的简单
public void ExportSelectData(string fileName)
{
StringBuilder strBuilder=new StringBuilder();
strBuilder.Append(@"<!DOCTYPE HTML PUBLIC '-//W3C//DTD HTML 4.01 Transitional//EN'>");
strBuilder.Append(@"<html>");
strBuilder.Append(@"<head>");
strBuilder.Append(@"<title>Document</title>");
strBuilder.Append(@"<meta HTTP-EQUIV='Content-Type' CONTENT='text/html; charset=utf-8'>");
strBuilder.Append(@"</head>");
strBuilder.Append(@"<body>");
strBuilder.Append(@"<table style='border-right: black thin solid; border-top: black thin solid; border-left: black thin solid; border-bottom: black thin solid'>");
strBuilder.Append("<tr>");
foreach (PropertyStyle style in mPropertyStyles)
{
string str = string.Format(@"<td style='border-right: black thin solid; border-top: black thin solid; border-left: black thin solid; border-bottom: black thin solid;background-color: lightgrey'>{0}</td>", Convert.ToString(style.DisplayName));
strBuilder.Append(str);
}
strBuilder.Append("</tr>");
foreach (AlarmView alarmView in SelectedAlarmViews)(此处添加自己的数据...)
{
{
strBuilder.Append("<tr>");
AlarmWrapperPropertyHelper propertyHelper = new AlarmWrapperPropertyHelper(alarmView.Wrapper);
propertyHelper.NullValue = null;
foreach (PropertyStyle style in mPropertyStyles)
{
object value = propertyHelper.GetValue(style);
strBuilder.Append(HtmlTextSerialize.Draw(value));
}
strBuilder.Append("</tr>");
}
}
strBuilder.Append("</table>");
strBuilder.Append("</body>");
strBuilder.Append("</html>");
using (StreamWriter write = new StreamWriter(fileName))
{
write.Write(strBuilder.ToString());
write.Close();
}
}
主要是拼写一个tabel,同时,该方法能够满足excel的导出,和导出到html,实际上,我们可以把文件保存到html,然后改变后缀名就可以的,当然,本程序,只要传入一个文件路径就可以了,不用管是xls,还是html。
同时,这个方法,只是很简单的实现了单excel工作薄,如果表格行数超过了 65535以上,后面的数据,我想,应该是不能够显示的......
这样的excel导出,没有测试加图片什么的,但是,我相信,图片也是可以的(有测试,本机能够显示图片,如果是把文件下载到了别的机器上,应该是不能够显示图片的,因为 如果按照程序的思路,应该是这样的<td><img src="文件路径"></img></td>,这样的方式,只是保存着文件的连接,如果真要在别的机器上都显示图片,也就只有按照这个'文件路径',在别的机器上组织出这个路径出来,并把图片保存到该地方....excel中图片的插入方式,应该是有两中,一种是保存图片的连接,一种是把图片包含到excel文件中......)
有事Q我:
姓名:颜昌钢
联系方式:yanchanggang@boco.com.cn
电话:13886086508
QQ:95550107
公司:亿阳集团武汉分公司
移动飞信:647360243