Excel与SQL互导
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Data; using System.Data.OleDb; using System.Data.SqlClient; using Excel = Microsoft.Office.Interop.Excel; namespace ExcelOutputInput { class Program { static void Main(string[] args) { string xlspath = @"c:\学生信息.xls"; string connstr = "Provider=Microsoft.Jet.OLEDB.4.0;" + "Extended Properties=Excel 8.0;" + "data Source=" + xlspath; string sql = "select * from [Sheet1$]"; DataSet ds = new DataSet(); OleDbConnection conn = new OleDbConnection(connstr); conn.Open(); OleDbCommand cmd = new OleDbCommand(sql, conn); OleDbDataAdapter oda = new OleDbDataAdapter(cmd); oda.Fill(ds); conn.Close(); foreach (DataRow item in ds.Tables[0].Rows) { Console.WriteLine(item[0].ToString() + " " + item[1].ToString() + " " + item[2] + " " + item[3] + " " + item[4].ToString() + " " + item[5]); } Console.WriteLine("请按任意键导出数据到Excel表中……"); Console.ReadLine(); DoExcelExport(ds, "xxxxx"); } /// <summary> /// 将数据导出到Excel /// </summary> /// <param name="ds">数据集</param> /// <param name="strExcelFileName">导出的文件名</param> public static void DoExcelExport(DataSet ds, string strExcelFileName) { Excel.Application excel = new Microsoft.Office.Interop.Excel.Application(); excel.Application.Workbooks.Add(true); DataTable dt = ds.Tables[0]; int rowIndex = 1; int colIndex = 0; foreach (DataColumn col in dt.Columns) { colIndex++; excel.Cells[1, colIndex] = col.ColumnName; } foreach (DataRow row in dt.Rows) { rowIndex++; colIndex = 0; foreach (DataColumn col in dt.Columns) { colIndex++; excel.Cells[rowIndex, colIndex] = row[col.ColumnName]; } } excel.Visible = true; excel = null; GC.Collect(); } } } //Excel表中的第一行必须自己定义的列名
/// <summary> /// 将DataTable导出为Excel /// </summary> /// <param name="table">DataTable数据源</param> /// <param name="name">文件名</param> public static void ExportToSpreadsheet(DataTable table, string name) { Random r = new Random(); string rf = ""; for (int j = 0; j < 10; j++) { rf = r.Next(int.MaxValue).ToString(); } HttpContext context = HttpContext.Current; context.Response.Clear(); context.Response.ContentType = "text/csv"; context.Response.ContentEncoding = System.Text.Encoding.UTF8; context.Response.AppendHeader("Content-Disposition", "attachment; filename=" + name + rf + ".xls"); context.Response.BinaryWrite(System.Text.Encoding.UTF8.GetPreamble()); foreach (DataColumn column in table.Columns) { context.Response.Write(column.ColumnName + ","); //context.Response.Write(column.ColumnName + "(" + column.DataType + "),"); } context.Response.Write(Environment.NewLine); double test; foreach (DataRow row in table.Rows) { for (int i = 0; i < table.Columns.Count; i++) { switch (table.Columns[i].DataType.ToString()) { case "System.String": if (double.TryParse(row[i].ToString(), out test)) context.Response.Write("="); context.Response.Write("\"" + row[i].ToString().Replace("\"", "\"\"") + "\","); break; case "System.DateTime": if (row[i].ToString() != "") context.Response.Write("\"" + ((DateTime)row[i]).ToString("yyyy-MM-dd hh:mm:ss") + "\","); else context.Response.Write("\"" + row[i].ToString().Replace("\"", "\"\"") + "\","); break; default: context.Response.Write("\"" + row[i].ToString().Replace("\"", "\"\"") + "\","); break; } } context.Response.Write(Environment.NewLine); } context.Response.End(); }
/// <summary> /// dtData是要导出为Excel的DataTable,FileName是要导出的Excel文件名(不加.xls) /// </summary> /// <param name="dtData"></param> /// <param name="FileName"></param> private void DataTable3Excel(System.Data.DataTable dtData, String FileName) { System.Web.UI.WebControls.GridView dgExport = null; //当前对话 System.Web.HttpContext curContext = System.Web.HttpContext.Current; //IO用于导出并返回excel文件 System.IO.StringWriter strWriter = null; System.Web.UI.HtmlTextWriter htmlWriter = null; if (dtData != null) { //设置编码和附件格式 //System.Web.HttpUtility.UrlEncode(FileName, System.Text.Encoding.UTF8)作用是方式中文文件名乱码 curContext.Response.AddHeader("content-disposition", "attachment;filename=" + System.Web.HttpUtility.UrlEncode(FileName, System.Text.Encoding.UTF8) + ".xls"); curContext.Response.ContentType = "application nd.ms-excel"; curContext.Response.ContentEncoding = System.Text.Encoding.UTF8; curContext.Response.Charset = "GB2312"; //导出Excel文件 strWriter = new System.IO.StringWriter(); htmlWriter = new System.Web.UI.HtmlTextWriter(strWriter); //为了解决dgData中可能进行了分页的情况,需要重新定义一个无分页的GridView dgExport = new System.Web.UI.WebControls.GridView(); dgExport.DataSource = dtData.DefaultView; dgExport.AllowPaging = false; dgExport.DataBind(); //下载到客户端 dgExport.RenderControl(htmlWriter); curContext.Response.Write(strWriter.ToString()); curContext.Response.End(); } }