MVC中Excel导入

1.在项目中添加对NPOI的引用,NPOI下载地址:http://npoi.codeplex.com/releases/view/38113

前端代码

<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

控制器

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"];//file对应前端选择文件的name属性
            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

业务逻辑层

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

FooterDAL将datatable,就是excel里面的数据添加到sql数据库

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
时间: 2024-08-09 12:36:53

MVC中Excel导入的相关文章

Java中Excel导入功能实现、excel导入公共方法_POI -

这是一个思路希望能帮助到大家:如果大家有更好的解决方法希望分享出来 公司导入是这样做的 每个到导入的地方 @Override public List<DataImportMessage> materialDataImport2(byte[] fileBytes, String fileName) { //return DataImport(fileBytes, fileName, "inv_m"); File file = FileUtils.getFileFromByte

php开发中Excel导入功能的具体实现方法

对于在做php开发项目中,一般的项目设计到最多用到的是Excel的导出功能,而对于其导入功能一般是很少见的,而且对于php开发中Excel的导入功能也要比导出功能开发起来更困难一些,那么今天就来分享一下php开发中Excel导入功能的具体实现步骤: 1.首先将下载下来的PHP Excel插件代码放入项目/Thinkphp/Extend/Vendor/下; 2.在模板添加导入功能; html代码实现如下:<form action="{:U('Turntable/imports')}"

java中excel导入\导出工具类

1.导入工具 1 package com.linrain.jcs.test; 2 3 4 import jxl.Cell; 5 import jxl.Sheet; 6 import jxl.Workbook; 7 import jxl.write.Label; 8 import jxl.write.WritableSheet; 9 10 import java.io.InputStream; 11 import java.lang.reflect.Field; 12 import java.te

asp.net 中excel 导入数据库

protected void Button1_Click(object sender, EventArgs e) { SqlConnection conn = new SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["LYConnectionString"].ConnectionString); ;//链接数据库 conn.Open(); try { string fileurl = t

C#中excel导入sql

using Microsoft.Office.Interop.Excel; public int ledinExcel(string file, object sender, EventArgs e) { //try //{ System.Data.DataTable dt = xsldata(file); int errorcount = 0; int insertcount = 0; //int updatecount = 0; //string strcon = "server=ROCKE

在Asp.Net MVC中使用NPOI插件实现对Excel的操作(导入,导出,合并单元格,设置样式,输入公式)

前言 NPOI 是 POI 项目的.NET版本,它不使用 Office COM 组件,不需要安装 Microsoft Office,目前支持 Office 2003 和 2007 版本. 1.整个Excel表格叫做工作表:WorkBook(工作薄),包含的叫页(工作表):Sheet:行:Row:单元格Cell. 2.NPOI是POI的C#版本,NPOI的行和列的index都是从0开始 3.POI读取Excel有两种格式一个是HSSF,另一个是XSSF. HSSF和XSSF的区别如下: HSSF

ASP.NET MVC excel导入

近来开始学习MVC,没有了以前强大的webform里面的控件,感觉有点不习惯,慢慢的就好了. MVC导入excel和webform其实没多大区别,以下为代码: 视图StationImport.cshtml的代码: @{     ViewBag.Title = "StationImport";     Layout = "~/Areas/Admin/Views/Shared/_index.cshtml"; } @using (Html.BeginForm("

asp.net Mvc Npoi 导出导入 excel

因近期项目遇到所以记录一下: 首先导出Excel : 首先引用NPOI包 http://pan.baidu.com/s/1i3Fosux (Action一定要用FileResult) /// <summary> /// 批量导出本校第一批派位学生 /// </summary> /// <returns></returns> public FileResult ExportStu2() { string schoolname = "401"

将Excel导入DataGridView 中的"select * from [Sheet1$]"中[ ]里面表单名的动态获取

Sheet1$是Excel默认的第一个表名,如果改动:select * from [Sheet1$]"将查询失败,因此应根据选择自动获取excel表名: 1 OpenFileDialog ofd = new OpenFileDialog(); //选择文件路径 2 ofd.Title = "Excel文件"; 3 ofd.FileName = ""; 4 ofd.Filter = "Excel文件(*.xls)| *.xls"; 5 s