fileupload NPOI导入EXECL数据

fileupload JS

@section scripts{
    <script src="~/Content/js/fileupload/vendor/jquery.ui.widget.js"></script>
    <script src="~/Content/js/fileupload/jquery.fileupload.js"></script>
    <script type="text/javascript">

        $("#fu_UploadFile").fileupload({
            url: _webBaseUrl + "/Owner/ImportExcel",
            acceptFileTypes: /(\.|\/)(xlsx|xls)$/i,
            add: function (e, data) {
                var file = data.files[0];
                var suffix = /\.[^\.]+/.exec(file.name.toUpperCase());
                if (suffix != ‘.XLSX‘ && suffix != ‘.XLS‘) {
                    alert(‘建议上传.XLSX &nbsp 文件哦!‘);
                    return false;
                }
                //$("#Up").on("click", function () {
                data.submit();//开始上传
                //});
            },
            process: function (e, data) {

            },
            progressall: function (e, data) {

            },
            done: function (e, data) {
                var result = eval("(" + data.result + ")");
                if (result.IsSuccess == ‘true‘) {
                    alert(result.Message);
                    PageJump(pageIndex);
                }
                else {
                    alert(result.Message);
                }
            },
            fail: function (e, data) {
                alert("上传失败,请联系管理员。");
            }
        });
    </script>
}

controller

        public ActionResult ImportExcel()
        {
            string messages = string.Empty;
            bool isSuccess = false;
            try
            {
                HttpPostedFileBase file = Request.Files[0];//接收客户端传递过来的数据.
                if (file == null)
                {
                    messages = "请上传Excel文件";
                    return Content("{\"IsSuccess\":\"" + isSuccess + "\",\"Message\":\"" + messages + "\"}", "text/plain");
                }
                else
                {
                    //对文件的格式判断,此处省略
                    List<InOwnerVO> ownerList = new List<InOwnerVO>();
                    Stream inputStream = file.InputStream;
                    //HSSFWorkbook hssfworkbook = new HSSFWorkbook(inputStream);
                    XSSFWorkbook hssfworkbook = new XSSFWorkbook(inputStream);
                    NPOI.SS.UserModel.ISheet sheet = hssfworkbook.GetSheetAt(0);
                    // IRow headerRow = sheet.GetRow(0);//第一行为标题行
                    // int cellCount = headerRow.LastCellNum;//LastCellNum = PhysicalNumberOfCells
                    int rowCount = sheet.LastRowNum;//LastRowNum = PhysicalNumberOfRows - 1

                    for (int i = (sheet.FirstRowNum + 1); i <= rowCount; i++)
                    {
                        IRow row = sheet.GetRow(i);
                        InOwnerVO owner = new InOwnerVO();
                        if (row != null)
                        {
                             if (row.GetCell(0) != null)
                            {
                                owner.Name = GetCellValue(row.GetCell(0));
                            }
                            if (row.GetCell(1) != null)
                            {
                                owner.Tel = GetCellValue(row.GetCell(1));
                            }
                             if (row.GetCell(2) != null)
                            {
                                owner.StoreNo = GetCellValue(row.GetCell(2));
                            }
                             if (row.GetCell(3) != null)
                            {
                                owner.HouseNo = GetCellValue(row.GetCell(3));
                            }

                        }
                        ownerList.Add(owner);
                    }

                    OwnerManager manager = new OwnerManager();
                    isSuccess = manager.ImportOwner(ownerList);
                    if (isSuccess)
                    {
                        messages = "导入成功!";
                    }
                    return Content("{\"IsSuccess\":\"" + isSuccess + "\",\"Message\":\"" + messages + "\"}", "text/plain");
                    //return Content("导入成功");
                }

            }
            catch (Exception e)
            {
                messages = "导入失败!";
                return Content("{\"IsSuccess\":\"" + isSuccess + "\",\"Message\":\"" + messages + "\"}", "text/plain");
                //return Content("导入失败");
            }
        }

        /// <summary>
        /// 根据Excel列类型获取列的值
        /// </summary>
        /// <param name="cell">Excel列</param>
        /// <returns></returns>
        private static string GetCellValue(ICell cell)
        {
            if (cell == null)
                return string.Empty;
            switch (cell.CellType)
            {
                case CellType.Blank:
                    return string.Empty;
                case CellType.Boolean:
                    return cell.BooleanCellValue.ToString();
                case CellType.Error:
                    return cell.ErrorCellValue.ToString();
                case CellType.Numeric:
                case CellType.Unknown:
                default:
                    return cell.ToString();//This is a trick to get the correct value of the cell. NumericCellValue will return a numeric value no matter the cell value is a date or a number
                case CellType.String:
                    return cell.StringCellValue;
                case CellType.Formula:
                    try
                    {
                        HSSFFormulaEvaluator e = new HSSFFormulaEvaluator(cell.Sheet.Workbook);
                        e.EvaluateInCell(cell);
                        return cell.ToString();
                    }
                    catch
                    {
                        return cell.NumericCellValue.ToString();
                    }
            }
        }

时间: 2024-10-13 06:39:11

fileupload NPOI导入EXECL数据的相关文章

NPOI导入导出数据

//导入数据 protected void btnImport_Click(object sender, EventArgs e) { //判断fileImport控件中是否有需要上传的文件 if (this.fileImport.HasFile) { //判断文件类型是否符合要求   if (Path.GetExtension(this.fileImport.FileName) != ".xls") { MessageTips("上传的文件类型不符合要求", Me

SqlServer2008 脚本导入Execl数据

使用SQL脚本导入Execl数据,是使用SQL的链接服务器的访问接口来完成的. 1.所以首先,需要数据库中有对应的Execl访问接口,使用的是SQlServer2008R2+Office2013,所以安装使用的是ACE2010的驱动 下载地址:  http://www.microsoft.com/zh-cn/download/details.aspx?id=13255 安装之后在数据会有对应的访问接口 2.开启Ad Hoc Distributed Queries --开启Ad Hoc Distr

NPOI导入Excel数据

using NPOI.HSSF.UserModel;using NPOI.SS.UserModel;using NPOI.XSSF.UserModel;using System;using System.Collections.Generic;using System.Data;using System.IO;using System.Linq;using System.Text; namespace Common{ ///使用此代码需要添加NPOI的dll引用 public class Exc

同时向主表和从表里面导入execl数据 (asp.net webform)

//前台 <asp:FileUpload ID="UPExecl" runat="server" /> <asp:Button ID="BtnExecl" runat="server" Text="确认" OnClick="BtnExecl_Click" /> //批量导入销售发货单 protected void BtnExecl_Click(object sen

利用NPOI读取Execl数据插入数据库

首先你得准备NPOI的dll文件 这里提供百度云链接: 链接:https://pan.baidu.com/s/1EavAso5hztTbuexgb9XsvA 提取码:jyk6 前台代码 <%@ Page Language="C#" AutoEventWireup="true" CodeFile="导入到数据库.aspx.cs" Inherits="导入到数据库" %> <!DOCTYPE html> &

navicat 导入execl数据 傻瓜式教程

需求:将execl中的数据导入到指定表中几个字段数据 1.选中表右键--->选择导入向导 选择Excel点击下一步 下一步 直接下一步 因为有表直接下一步 点击下一步 下一步 点击开始 出现这个恭喜你成功了! 原文地址:https://www.cnblogs.com/zhangdke/p/12425026.html

Asp.net中利用NPOI组件快速导入导出Execl数据

相信很多童鞋都开发过Execl的导入导出功能,最近产品中无论是后台数据分析的需要,还是前端满足用户管理的方便,都有Execl导入导出的维护需求产生. 以前做这个功能,如果是web,利用HttpContext.Current.Response.ContentType ="application/ms-excel";就可以导出html数据表格到execl中,这种方法的问题就是编码格式的兼容性太差,用Mac OS之类的 office打开直接乱码给你看.或者是调用office的COM组件,或宏

NPOI批量导入大量数据

简介:NPOI批量导入大量数据 使用SqlBulkCopy 可以将datatable里面的大量数据批量复制到数据库中,而不用担心性能问题,比系统中的传统做法(每20行数据执行一遍mydb.execute强多了) SqlBulkCopyColumnMapping(源列名,目标列名) 附代码如下: Try Using sqlblk As New SqlBulkCopy(MyDB.GetSqlConnectionString()) sqlblk.BatchSize = DtInput.Rows.Cou

Execl数据导入SQL Server

将execl表格 数据导入进数据库 可以指定列 也可以 * 注意:该语句只能在本地数据库执行 如果连接的是远程服务器 应到该服务器上执行语句 设置服务器全局配置 启用Ad Hoc Distributed Queries 该组件存在 安全隐患 所以默认是关闭 exec sp_configure 'show advanced options',1 reconfigure exec sp_configure 'Ad Hoc Distributed Queries',1 reconfigure 可以导入