• ASP.NET中的Excel操作(OLEDB方式)


    一:OLEDB方式操作Excel的个人理解

            就是把要操作的Excel当作一个数据库,所有对Excel的操作,就变成了对“数据库”的操作。那么这时就需要有一个数据库的连接字符串。

        代码如下:

    connStr = "Provider=Microsoft.ACE.OLEDB.12.0;" + "Data Source=" + strFileName + ";" + ";Extended Properties="Excel 12.0;HDR=YES"“;

        其中的strFileName是指的Excel文件名称。

    二:读取Excel文件,并将内容读到DataTable中。

                代码如下:

    /// <summary>
            /// 读取Excel
            /// </summary>
            /// <param name="strFileName">Excel文件名</param>
            /// <param name="fileType"></param>
            /// <param name="sheetName">Excel中的sheet的名字</param>
            public static DataTable ExcelReader(string strFileName, string fileType, string sheetName)
            {
                string connStr = "";
                DataTable _table;
                    connStr = "Provider=Microsoft.ACE.OLEDB.12.0;" + "Data Source=" + strFileName + ";" + ";Extended Properties="Excel 12.0;HDR=YES"";
                try
                {
                    using (OleDbConnection conn = new OleDbConnection(connStr))
                    {
                        conn.Open();
                        OleDbDataAdapter myCommand = new OleDbDataAdapter(string.Format("SELECT * FROM [{0}$]", sheetName), conn);
    
                        DataSet myDataSet = new DataSet();
    
                        int i = myCommand.Fill(myDataSet);
    
                        _table = myDataSet == null ? null : myDataSet.Tables.Count == 0 ? null : myDataSet.Tables[0];
                    }
                    return _table;
                }
                catch (Exception ex)
                {
                    return null;
                }
            }

      返回的结果就是一个DataTable.
    三:将DataTable保存为Excel文件

        代码如下:

            /// <summary>
            /// 从DataTable中读取数据到excel中
            /// </summary>
            /// <param name="dt">传入的DataTable</param>
            public static void DTToExcel(DataTable dt)
            {
                string fileName = ((string.IsNullOrEmpty(dt.TableName)) ? "Excel" : dt.TableName) + ".xls";
                HttpContext.Current.Response.AppendHeader("Content-Disposition", "attachment;filename=" + fileName);
                HttpContext.Current.Response.Charset = "UTF-8";
                HttpContext.Current.Response.ContentEncoding = System.Text.Encoding.Default;
                HttpContext.Current.Response.ContentType = "application/vnd.ms-excel";
                GridView GridView1 = new GridView();
                GridView1.DataSource = dt;
                GridView1.DataBind();
                StringWriter tw = new StringWriter();
                HtmlTextWriter hw = new HtmlTextWriter(tw);
                GridView1.RenderControl(hw);
                HttpContext.Current.Response.Write(tw.ToString());
                HttpContext.Current.Response.End();
            }

     在使用DataTable导出Excel文件时,需要先创建DataTable,下面是DataTable的创建小实例:

                DataTable dt = new DataTable();
                string[] strArr = new string[]
                {
                                "1",
                                "2222",
                                "333333333",
                                "444"
                };
                for (int i = 0; i < strArr.Count(); i++)
                {
                    dt.Columns.Add(strArr[i]);
                }
                for (int i = 0; i < strArr.Count(); i++)
                {
                    DataRow dr2 = dt.NewRow();
                    dr2[0] = "总记";
                    dr2[1] = "11";
                    dr2[2] = "22";
                    dr2[3] = "33";
                    dt.Rows.Add(dr2);
               }
                
  • 相关阅读:
    Android学习之多线程开发总结<二>
    Android学习之多线程开发总结<一>
    Android代码模版整理<一>
    Android学习之Bluetooth开发总结<续3>
    Android学习—自定义组件
    Android学习之解析XML
    Android学习—自定义对话框Dialog
    Android学习之Bluetooth开发总结<续2>
    Android学习之Bluetooth开发总结<续>
    .Net Core 发布项目时出现警告提示“不建议指定此包的版本”的解决办法
  • 原文地址:https://www.cnblogs.com/bsyblog/p/4242385.html
Copyright © 2020-2023  润新知