zoukankan      html  css  js  c++  java
  • Asp.Net 使用Npoi导出Excel

    引言

          使用Npoi导出Excel 服务器可以不装任何office组件,昨天在做一个导出时用到Npoi导出Excel,而且所导Excel也符合规范,打开时不会有任何文件损坏之类的提示。但是在做导入时还是使用OleDb的方式,这种方式的导入在服务器端似乎还是需要装office组件的,有没有不需要装组件并且能照常导入的呢?

    Npoi导出/下载Excel

    public void NpoiExcel(DataTable dt, string title)
            {
                NPOI.HSSF.UserModel.HSSFWorkbook book = new NPOI.HSSF.UserModel.HSSFWorkbook();
                NPOI.SS.UserModel.ISheet sheet = book.CreateSheet("Sheet1");
    
                NPOI.SS.UserModel.IRow headerrow = sheet.CreateRow(0);
                ICellStyle style = book.CreateCellStyle();
                style.Alignment = HorizontalAlignment.Center;
                style.VerticalAlignment = VerticalAlignment.Center;
    
    
                for (int i = 0; i < dt.Columns.Count; i++)
                {
                    ICell cell = headerrow.CreateCell(i);
                    cell.CellStyle = style;
                    cell.SetCellValue(dt.Columns[i].ColumnName);
    
                }
    
                MemoryStream ms = new MemoryStream();
                book.Write(ms);
                Response.AddHeader("Content-Disposition", string.Format("attachment; filename={0}.xls", HttpUtility.UrlEncode(title + "_" + DateTime.Now.ToString("yyyy-MM-dd"), System.Text.Encoding.UTF8)));
                Response.BinaryWrite(ms.ToArray());
                Response.End();
                book = null;
                ms.Close();
                ms.Dispose();
            }
    View Code


    Asp.Net导入

         导入仍然是用OleDb这种方式,有没有其他方式搞定呢?

    /// <summary>
            /// 连接Excel  读取Excel数据   并返回DataSet数据集合
            /// </summary>
            /// <param name="filepath">Excel服务器路径</param>
            /// <param name="tableName">Excel表名称</param>
            /// <returns></returns>
            public static System.Data.DataSet ExcelSqlConnection(string filepath, string tableName)
            {
    
                string strCon = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + filepath + ";Extended Properties='Excel 8.0;HDR=YES;IMEX=1'";
                OleDbConnection ExcelConn = new OleDbConnection(strCon);
                try
                {
                    string strCom = string.Format("SELECT * FROM [Sheet1$]");
                    ExcelConn.Open();
                    OleDbDataAdapter myCommand = new OleDbDataAdapter(strCom, ExcelConn);
                    DataSet ds = new DataSet();
                    myCommand.Fill(ds, "[" + tableName + "$]");
                    ExcelConn.Close();
                    return ds;
                }
                catch
                {
                    ExcelConn.Close();
                    return null;
                }
            }
    View Code
  • 相关阅读:
    为了兼容性问题,本人一律淘汰不兼容如下三种浏览器的js
    http://store.microsoft.com/home.aspx
    <转>JavaScript的IE和火狐的兼容性解决办法
    常用的正则表达式 我转与改的吧
    线程间操作无效: 从不是创建控件“textBox4”的线程访问它
    练习题 求a[i]到a[j]累积和为最大的部分
    自己写的操作记录的类,就是记录各种操作[原创]
    【MM系列】SAP MM中的委外加工与信息记录
    【MM系列】SAP MM模块-移动类型全部列表
    【MM系列】SAP MM模块-组织结构介绍
  • 原文地址:https://www.cnblogs.com/sword-successful/p/3951105.html
Copyright © 2011-2022 走看看