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

 

你可能感兴趣的:(asp.net)