• asp.net导出excel示例代码


    asp.net导出excel的简单方法。
    excel的操作,最常用的就是导出和导入。
    本例使用NPOI实现。
    代码:/// <summary>
            /// 导出Excel
            
    /// </summary>
            
    /// <param name="stime"></param>
            
    /// <param name="etime"></param>
            
    /// <returns></returns>
            public ActionResult Export(FormCollection frm)
            {
                DataTable dts = new DataTable();
                dts = _shopMemeber.ExportMemberData(frm);
                IWorkbook workbook = new XSSFWorkbook();
                ISheet sheet = workbook.CreateSheet();
                IRow headerRow = sheet.CreateRow(0);
                foreach (DataColumn column in dts.Columns)
                    headerRow.CreateCell(column.Ordinal).SetCellValue(column.Caption);
                int rowIndex = 1;
                foreach (DataRow row in dts.Rows)
                {
                    IRow dataRow = sheet.CreateRow(rowIndex);
                    foreach (DataColumn column in dts.Columns)
                    {
                        dataRow.CreateCell(column.Ordinal).SetCellValue(row[column].ToString());
                    }
                    rowIndex++;
                }
                string filepath = Server.MapPath("/") + @"用户列表.xlsx";
                FileStream file = new FileStream(filepath, FileMode.Create);
                workbook.Write(file);
                ExcelHelper.DownLoad(@"/用户列表.xlsx");
                #region 不启用
                #endregion
                return SuccessMsg("AdminMemberMemberIndex");
            }
    //这个是下载到桌面的方法,没实现自选路径
    public static void DownLoad(string FileName)
     {
                 FileInfo fileInfo = new FileInfo(HttpContext.Current.Server.MapPath(FileName));
                 //以字符流的形式下载文件
                 FileStream fs = new FileStream(HttpContext.Current.Server.MapPath(FileName), FileMode.Open);
                byte[] bytes = new byte[(int)fs.Length];
                  fs.Read(bytes, 0, bytes.Length);
                fs.Close();
                HttpContext.Current.Response.ContentType = "application/octet-stream";
                   //通知浏览器下载文件而不是打开
                HttpContext.Current.Response.AddHeader("Content-Disposition""attachment;  filename=" + HttpUtility.UrlEncode(fileInfo.Name, System.Text.Encoding.UTF8));
              HttpContext.Current.Response.BinaryWrite(bytes);
               HttpContext.Current.Response.Flush();
                HttpContext.Current.Response.End();
            }
    上面是导出,下面我介绍下导入。
    复制代码 代码如下:

    /// <summary>
            
    /// 导入数据
            
    /// </summary>
            
    /// <param name="file"></param>
            
    /// <returns>true表示导入成功</returns>
            public bool Impoart(HttpPostedFileBase file)
            {
                try
                {
                    //保存excel
                    string path = HttpContext.Current.Server.MapPath("/");
                    file.SaveAs(path + file.FileName);
                    //读取
                    FileStream sw = File.Open(path + file.FileName, FileMode.Open, FileAccess.Read);
                    IWorkbook workbook = new XSSFWorkbook(sw);
                    ISheet sheet1 = workbook.GetSheet("Sheet1");
                    //最大行数
                    int rowsCount = sheet1.PhysicalNumberOfRows;
                    //判断首行是否符合规范  也就是Excel中的列名
                    IRow firstRow = sheet1.GetRow(0);
                    if (
                        !(firstRow.GetCell(0).ToString() == "名称" && firstRow.GetCell(1).ToString() == "简称" &&
                          firstRow.GetCell(2).ToString() == "分类" && firstRow.GetCell(3).ToString() == "参考价" &&
                          firstRow.GetCell(4).ToString() == "商品介绍"))
                    {
                        return false;
                    }

                    //跳过类型不正确的品项
                    for (int i = 1; i < rowsCount; i++)
                    {
                        IRow row = sheet1.GetRow(i);
                        Shop_Product product = new Shop_Product();
                        string category = row.GetCell(2) != null ? row.GetCell(2).ToString() : null;
                        if (!string.IsNullOrEmpty(category))
                        {
                            var cate =
                                _unitOfWork.Shop_ProductCategoryRepository().GetAll().FirstOrDefault(t => t.Name == category);
                            if (cate != null)
                            {
                                product.ProductCategoryName = cate.Name;
                                product.Shop_ProductCategory_ID = cate.ID;
                            }
                            else
                            {
                                continue;
                            }
                        }
                        else
                        {
                            continue;
                        }
                        product.PName = row.GetCell(0) != null ? row.GetCell(0).ToString() : null;
                        product.PCName = row.GetCell(1) != null ? row.GetCell(1).ToString() : null;
                        if (row.GetCell(3) != null)
                        {
                            product.Price = Double.Parse(row.GetCell(3).ToString());
                        }
                        product.Description = row.GetCell(4) != null ? row.GetCell(4).ToString() : null// www.jbxue.com
               _unitOfWork.Shop_ProductRepository().Insert(product);
                    }
                    _unitOfWork.Save();
                }
                catch
                {
                    return false;
                }
                return true;
            }
  • 相关阅读:
    POJ 2427 Smith's Problem Pell方程
    Codeforces Round #194 (Div. 2) 部分题解
    SPOJ 3899. Finding Fractions 连分数
    Codeforces Round #193 (Div. 2) 部分题解
    HDU 1402 A * B Problem Plus FFT
    F的ACM暑期集训计划
    HDU 4607 Park Visit HDU暑期多校1
    Windows 下 Sublime Text 默认打开方式问题解决办法
    Roman To Integer
    Longest Common Prefix
  • 原文地址:https://www.cnblogs.com/linuxnotes/p/3568221.html
Copyright © 2020-2023  润新知