三沣开发知识 购物 网址 游戏 小说 歌词 地图 快照 股票 美女 新闻 笑话 | 汉字 软件 日历 阅读 下载 图书馆 开发 租车 短信 China
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
多播视频美女直播
↓电视,电影,美女直播,迅雷资源↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
vbs/VBScript DOS/BAT hta htc python perl 游戏相关 VBA 远程脚本 ColdFusion ruby专题
autoit seraphzone PowerShell linux shell Lua Golang Erlang 其它教程 CSS/HTML/Xhtml
html5 CSS XML/XSLT Dreamweaver教程 经验交流 开发者乐园 Android开发资料
站长资讯 .NET新手 ASP.NET C# WinForm Silverlight WCF CLR WPF XNA VisualStudio ASP.NET-MVC .NET控件开发 EntityFramework WinRT-Metro Java C++ PHP Delphi Python Ruby C语言 Erlang Go Swift Scala R语言 Verilog 其它语言 架构设计 面向对象 设计模式 领域驱动 Html-Css JavaScript jQuery HTML5 SharePoint GIS技术 SAP OracleERP DynamicsCRM K2 BPM 信息安全 企业信息 Android开发 iOS开发 WindowsPhone WindowsMobile 其他手机 敏捷开发 项目管理 软件工程 SQLServer Oracle MySQL NoSQL 其它数据库 Windows7 WindowsServer Linux
  IT知识库 -> .NET新手区 -> mvc手把手教你写excel导入 -> 正文阅读
 

[.NET新手区]mvc手把手教你写excel导入

mvc手把手教你写excel导入 实习狗的每天新知识日常
准备工作:
1.在项目中添加对NPOI的引用,NPOI下载地址:http://npoi.codeplex.com/releases/view/38113
2.NPOI学习系列教程推荐:http://www.cnblogs.com/tonyqus/archive/2009/04/12/1434209.html
NPOI下载,里面有五个dll,需要引用到你的项目,我这边用的mvc4+三层的方式架构的项目
我用的工具是(vs2012+sql2014)
准备工作做完,我们开始进入主题
1.前端页面,代码:


<div class="filebtn"> 
                @using (Html.BeginForm("importexcel", "foot", FormMethod.Post, new { enctype = "multipart/form-data" }))
                    {
                        <samp>请选择要上传的Excel文件:</samp>
                        <span  id="txt_Path"></span>
                        <strong>选择文件<input name="file" type="file" id="file" /></strong>@*
                        @Html.AntiForgeryToken()  //防止跨站请求伪造(CSRF:Cross-site request forgery)攻击
                     *@<input type="submit" id="ButtonUpload" value="提交"   class="offer"/> 
                    }
            </div>

excel
2.接下来就是控制器


public class footController : Controller
    {
        //
        // GET: /foot/
        private static readonly String Folder = "/files";
        public ActionResult excel()
        {
            return View();
        }

        /// 导入excel文档
        public ActionResult importexcel()
        {
            //1.接收客户端传过来的数据
            HttpPostedFileBase file = Request.Files["file"];
            if (file == null || file.ContentLength <= 0)
            {
                return Json("请选择要上传的Excel文件", JsonRequestBehavior.AllowGet);
            }
           //string filepath =  Server.MapPath(Folder);
           //if (!Directory.Exists(filepath))
           //{
           //    Directory.CreateDirectory(filepath);
           //}
           //var fileName = Path.Combine(filepath, Path.GetFileName(file.FileName));
           // file.SaveAs(fileName);
            //获取一个streamfile对象,该对象指向一个上传文件,准备读取改文件的内容
            Stream streamfile = file.InputStream;
            DataTable dt = new DataTable();
            string FinName = Path.GetExtension(file.FileName);
            if (FinName != ".xls" && FinName != ".xlsx")
            {
                return Json("只能上传Excel文档",JsonRequestBehavior.AllowGet);
            }
            else
            {
                try
                {
                    if (FinName == ".xls")
                    {
                        //创建一个webbook,对应一个Excel文件(用于xls文件导入类)
                        HSSFWorkbook hssfworkbook = new HSSFWorkbook(streamfile);
                        dt = excelDAL.ImExport(dt, hssfworkbook);
                    }
                    else
                    {
                        XSSFWorkbook hssfworkbook = new XSSFWorkbook(streamfile);
                        dt = excelDAL.ImExport(dt, hssfworkbook);
                    }
                    return Json("",JsonRequestBehavior.AllowGet);
                }
                catch(Exception ex)
                {
                    return Json("导入失败 !"+ex.Message, JsonRequestBehavior.AllowGet);
                }
        }
            
        }

}

footController.cs
3.业务逻辑层[excelDAL]


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using NPOI;
using NPOI.SS.UserModel;
using NPOI.HSSF.UserModel;
using System.Data;
using NPOI.XSSF.UserModel;

namespace GJL.Compoent
{
   public class excelDAL
    {
       ///<summary>
        /// #region 两种不同版本的操作excel
        /// 扩展名*.xlsx
       /// </summary>
       public static DataTable ImExport(DataTable dt, XSSFWorkbook  hssfworkbook)
       {
           NPOI.SS.UserModel.ISheet sheet = hssfworkbook.GetSheetAt(0);
           System.Collections.IEnumerator rows = sheet.GetRowEnumerator();
           for (int j = 0; j < (sheet.GetRow(0).LastCellNum); j++)
           {
               dt.Columns.Add(sheet.GetRow(0).Cells[j].ToString());
           }
           while (rows.MoveNext())
           {
               XSSFRow row = (XSSFRow)rows.Current;
               DataRow dr = dt.NewRow();
               for (int i = 0; i < row.LastCellNum; i++)
               {
                   NPOI.SS.UserModel.ICell cell = row.GetCell(i);
                   if (cell == null)
                   {
                       dr[i] = null;
                   }
                   else
                   {
                       dr[i] = cell.ToString();
                   }
               }
               dt.Rows.Add(dr);
           }
           dt.Rows.RemoveAt(0);
           if (dt!=null && dt.Rows.Count != 0)
           {
               for (int i = 0; i < dt.Rows.Count; i++)
               {
                   string categary = dt.Rows[i]["页面"].ToString();
                   string fcategary = dt.Rows[i]["分类"].ToString();
                   string fTitle = dt.Rows[i]["标题"].ToString();
                   string fUrl = dt.Rows[i]["链接"].ToString();
                   FooterDAL.Addfoot(categary, fcategary, fTitle, fUrl);
               }
           }
           return dt;
       }

        #region 两种不同版本的操作excel
        ///<summary>
        /// 扩展名*.xls
        /// </summary>
       public static DataTable ImExport(DataTable dt, HSSFWorkbook hssfworkbook)
       {
           // 在webbook中添加一个sheet,对应Excel文件中的sheet,取出第一个工作表,索引是0 
           NPOI.SS.UserModel.ISheet sheet = hssfworkbook.GetSheetAt(0);
           System.Collections.IEnumerator rows = sheet.GetRowEnumerator();
           for (int j = 0; j < (sheet.GetRow(0).LastCellNum); j++)
           {
               dt.Columns.Add(sheet.GetRow(0).Cells[j].ToString());
           }
           while (rows.MoveNext())
           {
               HSSFRow row = (HSSFRow)rows.Current;
               DataRow dr = dt.NewRow();
               for (int i = 0; i < row.LastCellNum; i++)
               {
                   NPOI.SS.UserModel.ICell cell = row.GetCell(i);
                   if (cell == null)
                   {
                       dr[i] = null;
                   }
                   else 
                   {
                       dr[i] = cell.ToString();
                   }
               }
               dt.Rows.Add(dr);
           }
           dt.Rows.RemoveAt(0);
           if (dt != null && dt.Rows.Count != 0)
           {
               for (int i = 0; i < dt.Rows.Count; i++)
               {
                   string categary = dt.Rows[i]["页面"].ToString();
                   string fcategary = dt.Rows[i]["分类"].ToString();
                   string fTitle = dt.Rows[i]["标题"].ToString();
                   string fUrl = dt.Rows[i]["链接"].ToString();
                   FooterDAL.Addfoot(categary, fcategary, fTitle, fUrl);
               }

           }
           return dt;
       }
        #endregion
    }
}

excelDAL


 public static partial class FooterDAL
    {
        /// <summary>
        /// 添加
        /// </summary>
        /// <param name="id"></param>
        /// <param name="catgary"></param>
        /// <param name="fcatgary"></param>
        /// <param name="fTitle"></param>
        /// <param name="fUrl"></param>
        /// <returns></returns>
        public static int  Addfoot(string categary, string fcategary, string fTitle, string fUrl)
        {
            string sql = string.Format("insert into Foot (categary,fcategary,fTitle,fUrl)values(@categary,@fcategary,@fTitle,@fUrl)");
            SqlParameter[] parm = 
                { 
                     new SqlParameter("@categary",categary)
                    ,new SqlParameter("@fcategary",fcategary)
                    ,new SqlParameter("@fTitle",fTitle)
                    ,new SqlParameter("@fUrl",fUrl)
                };
            return new DBHelperSQL<Foot>(CommonTool.dbname).ExcuteSql(sql,parm);   
        }
}

FooterDAL
//FooterDAL将datatable,就是excel里面的数据添加到sql数据库
  .NET新手区 最新文章
将ZIP文件添加到程序集资源文件然后在运行时
Web服务的调用
.NET创建WebService服务简单的例子
多线程编程学习笔记——任务并行库(三)
序列化和反序列化
Spring学习之路
多线程(6)线程同步
ASPX.Net控件
如何写出高性能SQL语句
来份ASP.NET Core尝尝
上一篇文章           查看所有文章
加:2017-11-29 23:22:07  更:2017-11-29 23:22:12 
 
技术频道: 站长资讯 .NET新手区 ASP.NET C# WinForm Silverlight WCF CLR WPF XNA Visual Studio ASP.NET MVC .NET控件开发 Entity Framework WinRT/Metro Java C++ PHP Delphi Python Ruby C语言 Erlang Go Swift Scala R语言 Verilog 其它语言 架构设计 面向对象 设计模式 领域驱动设计 Html/Css JavaScript jQuery HTML5 SharePoint GIS技术 SAP Oracle ERP Dynamics CRM K2 BPM 信息安全 企业信息化其他 Android开发 iOS开发 Windows Phone Windows Mobile 其他手机开发 敏捷开发 项目与团队管理 软件工程其他 SQL Server Oracle MySQL NoSQL 其它数据库 Windows 7 Windows Server Linux
脚本语言: vbs/VBScript DOS/BAT hta htc python perl 游戏相关 VBA 远程脚本 ColdFusion ruby专题 autoit seraphzone PowerShell linux shell Lua Golang Erlang 其它教程
网站开发: CSS/HTML/Xhtml html5 CSS XML/XSLT Dreamweaver教程 经验交流 开发者乐园 Android开发资料
360图书馆 软件开发资料 文字转语音 购物精选 软件下载 美食菜谱 新闻资讯 电影视频 小游戏 Chinese Culture 股票 租车
生肖星座 三丰软件 视频 开发 短信 中国文化 网文精选 搜图网 美图 阅读网 多播 租车 短信 看图 日历 万年历 2017年12日历
2017-12-17 17:47:24
多播视频美女直播
↓电视,电影,美女直播,迅雷资源↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT知识库