• 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();
                }
            } 
     
  • 相关阅读:
    cocos2d-x 获得系统语言繁体
    状态机
    cocos2d-x 混合模式
    cocos2d-x 3.x 橡皮擦功能
    MySQL 库大小、表大小、索引大小查询命令
    MySQL批量杀进程
    多实例MySQL批量添加用户和密码并授权
    删除或清空具有外键约束的表数据报-ERROR 1701 (42000)
    ERROR 1062 (23000): Duplicate entry '0' for key 'PRIMARY'
    MySQL 多实例给root用户创建密码
  • 原文地址:https://www.cnblogs.com/xiangzhong/p/2757312.html
Copyright © 2020-2023  润新知