using System; using System.Collections.Generic; using System.Text; using System.Data; using System.Data.OleDb; using System.Web; using System.Web.UI; namespace AIMSCommon { /// <summary> /// 导出Excel帮助类 /// </summary> public class ExcelHelper { /// <summary> /// 创建系统异常日志 /// </summary> //protected static LogHelper Logger = new LogHelper("ExcelHelper"); /// <summary> /// Excel导出数据 /// </summary> /// <param name="data">数据源</param> /// <param name="fileName"></param> public static void ExportExcel(DataTable data, string fileName) { try { if (data != null && data.Rows.Count > 0) { System.Web.HttpContext.Current.Response.ContentType = "application/vnd.ms-excel"; System.Web.HttpContext.Current.Response.ContentEncoding = System.Text.Encoding.UTF8; System.Web.HttpContext.Current.Response.Charset = "Utf-8"; System.Web.HttpContext.Current.Response.AppendHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode(fileName + ".xls", System.Text.Encoding.UTF8)); System.Text.StringBuilder sbHtml = new System.Text.StringBuilder(); sbHtml.AppendLine("<meta http-equiv="Content-Type" content="text/html; charset=utf-8">"); sbHtml.AppendLine("<table cellspacing="0" cellpadding="5" rules="all" border="1">"); //写出列名 sbHtml.AppendLine("<tr style="background-color: #FFE88C;font-weight: bold; white-space: nowrap;">"); foreach (System.Data.DataColumn column in data.Columns) { sbHtml.AppendLine("<td>" + column.ColumnName + "</td>"); } sbHtml.AppendLine("</tr>"); //写数据 foreach (System.Data.DataRow row in data.Rows) { sbHtml.Append("<tr>"); foreach (System.Data.DataColumn column in data.Columns) { sbHtml.Append("<td>").Append(row[column].ToString()).Append("</td>"); } sbHtml.AppendLine("</tr>"); } sbHtml.AppendLine("</table>"); System.Web.HttpContext.Current.Response.Write(sbHtml.ToString()); System.Web.HttpContext.Current.Response.End(); } } catch (Exception ex) { // Logger.WriteLog("-----------Excel导出数据异常----------- " + ex.ToString() + " "); } } /// <summary> /// 创建系统异常日志 /// </summary> //protected static LogHelper Logger = new LogHelper("ExcelHelper"); /// <summary> /// Excel导出数据 /// </summary> /// <param name="data">数据源</param> /// <param name="dataAnother">排班数据源</param> /// <param name="fileName"></param> public static void ExportExcel(DataTable data, DataTable dataAnother, string fileName) { try { if (data != null && data.Rows.Count > 0) { System.Web.HttpContext.Current.Response.ContentType = "application/vnd.ms-excel"; System.Web.HttpContext.Current.Response.ContentEncoding = System.Text.Encoding.UTF8; System.Web.HttpContext.Current.Response.Charset = "Utf-8"; System.Web.HttpContext.Current.Response.AppendHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode(fileName + ".xls", System.Text.Encoding.UTF8)); System.Text.StringBuilder sbHtml = new System.Text.StringBuilder(); sbHtml.AppendLine("<meta http-equiv="Content-Type" content="text/html; charset=utf-8">"); sbHtml.AppendLine("<table cellspacing="0" cellpadding="5" rules="all" border="1" style=" white-space: nowrap;word-break: keep-all;">"); //写出列名 sbHtml.AppendLine("<tr style="background-color: #FFE88C;font-weight: bold;">"); foreach (System.Data.DataColumn column in data.Columns) { sbHtml.AppendLine("<td>" + column.ColumnName + "</td>"); } sbHtml.AppendLine("</tr>"); //写数据 foreach (System.Data.DataRow row in data.Rows) { sbHtml.Append("<tr>"); foreach (System.Data.DataColumn column in data.Columns) { sbHtml.Append("<td>").Append(row[column].ToString().Length>0?row[column].ToString():" ").Append("</td>"); } sbHtml.AppendLine("</tr>"); } sbHtml.AppendLine("<tr></tr>"); string duty = string.Empty; foreach (DataRow row in dataAnother.Rows) { if (duty == string.Empty) { sbHtml.Append("<tr><td>").Append(row["duty"].ToString()).Append("</td><td colspan='" + (data.Columns.Count - 1) + "'>").Append(row["NURSE_NAME"].ToString() + " "); } else if (duty != row["duty"].ToString() && duty != string.Empty) { sbHtml.Append("</td></tr><tr><td>").Append(row["duty"].ToString()).Append("</td><td colspan='" + (data.Columns.Count - 1) + "'>").Append(row["NURSE_NAME"].ToString() + " "); } else if (duty == row["duty"].ToString()) { sbHtml.Append(row["NURSE_NAME"].ToString() + " "); } duty = row["duty"].ToString(); } sbHtml.Append("</td></tr>"); sbHtml.AppendLine("</table>"); System.Web.HttpContext.Current.Response.Write(sbHtml.ToString()); System.Web.HttpContext.Current.Response.End(); } } catch (Exception ex) { // Logger.WriteLog("-----------Excel导出数据异常----------- " + ex.ToString() + " "); } } /// <summary> /// Excel检查版本 /// </summary> /// <param name="fileName"></param> /// <returns></returns> private static string ConnectionString(string fileName) { bool isExcel2003 = fileName.EndsWith(".xls"); string connectionString = string.Format( isExcel2003 ? "Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0};Extended Properties=Excel 8.0;" : "Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Extended Properties="Excel 12.0 Xml;HDR=YES"", fileName); return connectionString; } /// <summary> /// Excel导入数据源 /// </summary> /// <param name="sheet">sheet</param> /// <param name="filename">文件路径</param> /// <returns></returns> public static DataTable ExcelToDataSet(string sheet, string filename) { try { DataSet ds; OleDbConnection myConn = new OleDbConnection(ConnectionString(filename)); string strCom = " SELECT * FROM [" + sheet + "$]"; myConn.Open(); OleDbDataAdapter myCommand = new OleDbDataAdapter(strCom, myConn); ds = new DataSet(); myCommand.Fill(ds); myConn.Close(); return ds.Tables[0]; } catch (Exception ex) { //Logger.WriteLog("-----------Excel导入数据异常----------- " + ex.ToString() + " "); return null; } } } }