直接上代码:
public static byte[] GetExecl(DataTable dt, List<string> list) { var sbHtml = new StringBuilder(); sbHtml.Append("<table border='1' cellspacing='0' cellpadding='0'>"); sbHtml.Append("<tr>"); foreach (var item in list) { sbHtml.AppendFormat("<td style='font-size: 14px;text-align:center;background-color: #DCE0E2; font-weight:bold;' height='25'>{0}</td>", item); } sbHtml.Append("</tr>"); for (int i = 0; i < dt.Rows.Count; i++) { sbHtml.Append("<tr>"); for (int j = 0; j < list.Count; j++) { sbHtml.AppendFormat("<td style='font-size: 12px;height:20px;'>{0}</td>", dt.Rows[i][j].ToString()); } sbHtml.Append("</tr>"); } sbHtml.Append("</table>"); byte[] fileContents = Encoding.Default.GetBytes(sbHtml.ToString()); return fileContents; }
这样可以写成公共方法方便多次调用
public FileResult ExportExcel(int page,int PageSize,string CusName="") { var orderby = "order by Createdate desc"; var wherestr = ""; //要导出的字段 var tablefield = "ID,CusName,CusShort,Salesman,Industry,CusType,CusAdrss,Region,CusContact," + "CusIphone,CusMobile,FinName,FinIphone,FinMail,FinFax,Qqnumber,BankAccount," + "BankDeposit,TariffItem,TpayerDate,Contracttime,Remark,VerifierYes," + "Verifier,Verifierdate,Creater,Createdate,Updater,Updatedate"; if (CusName != "") { wherestr = "and CusName like '%" + CusName + "%'"; } //得到要导出的数据 DataSet ds = DAL.SQLBasic.GetDateSetfengye(PageSize, page, tablename, wherestr, orderby, tablefield); //设置execl第一行标题 List<string> list = new List<string> { "客户编号","客户名称","客户简称", "所属业务员","行业","客户类型","客户地址","区域","指定联系人", "联系人电话","联系人手机","财务员","财务员电话","财务员邮箱","财务员传真","财务员QQ","银行账号", "开户行","税号","成为纳税人时间","合同有效期","备注","是否审核", "审核人","审核时间","创建人","创建时间","修改人","修改时间"}; byte[] fileContents = Utilitiy.ExcelHelper.GetExecl(ds.Tables[0], list); return File(fileContents, "application/ms-excel", "客户信息.xls"); }
代码写的有点乱,请忽略