ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

基于Layui + .net mvc Excel导入功能

2022-01-04 20:38:01  阅读:231  来源: 互联网

标签:return string Layui excel Excel bean mvc ToString res


html

<input type="button" class="layui-btn layui-btn-blue2 layui-btn-sm" id="Excel导入" value="导入" />

js

/*从本地添加excel文件方法*/
layui.use('upload', function () {
    var $ = layui.jquery
        , upload = layui.upload
        , form = layui.form;
    upload.render({
        elem: '#Excel导入'//附件上传按钮ID
        , url: '/tools/excel/'//附件上传后台地址
        , multiple: true
        , accept: 'file'
        , exts: 'xls'//(允许的类别)
        , before: function (obj) {/*上传前执行的部分*/ }
        , done: function excel(res) {
            /*上传后执行的部分*/
            $.post("/ImportTool/excel", { newname: res.data.newname }, function (res) { layer.msg(res.msg); }, "json");
        }
        , allDone: function (res) {/*全部文件上传完毕执行该方法*/ }
    });
});//上传事件结束

Controller      /tools/excel/

        /// <summary>
        /// 导入excel的方法
        /// </summary>
        /// <param name="fc"></param>
        /// <returns></returns>
        public string excel(FormCollection fc)
        {
            try
            {
                string guid = Guid.NewGuid().ToString();
                var file = Request.Files[0];
                if (file == null ||
                  String.IsNullOrEmpty(file.FileName) ||
                  file.ContentLength == 0)
                {
                    return "{\"code\":1,\"msg\":\"文件上传失败!\" ,\"data\":{\"src\":\"\"}}";
                }

                string filename = System.IO.Path.GetFileName(file.FileName);
                string newName = buildFileName(guid, filename);
                string virtualPath = String.Format("/upload/{0}", newName);

                string path = Server.MapPath(virtualPath);
                file.SaveAs(path);                

                return "{\"code\":0,\"msg\":\"文件上传成功!\" ,\"data\":{\"src\":\"\",\"filename\":\"" + filename + "\",\"newname\":\"" + newName + "\",\"size\":\"" + (file.ContentLength/1024) + "\"}}";
            }
            catch (Exception ex)
            {
                return "{\"code\":1,\"msg\":\"文件上传失败!\" ,\"data\":{\"src\":\"\"}}";
            }
        }
        /// <summary>
        /// 根据文件名称生产新的文件名称;
        /// </summary>
        /// <param name="filename"></param>
        /// <returns></returns>
        public static string buildFileName(string newname, string filename)
        {
            string postfix = filename.Substring(filename.LastIndexOf('.'));
            string newName = newname + postfix;

            return newName;
        }

Controller     /ImportTool/excel

/*excel导入方法*/
        public string excel()
        {
            string newname = Request["newname"];
            string virtualPath = String.Format("/upload/{0}", newname);
            string path = Server.MapPath(virtualPath);
            DataTable dt = ExcelHelper.exceltoTable(path);//excel中的数据在dt中
			//导入到数据库示例
            病虫害管理S dal = new 病虫害管理S();
            病虫害管理 bean = new 病虫害管理();
            string ret = "";
            bool res = true;
            for (int i = 0; i < dt.Rows.Count; i++)//行
            {
                DataRow row = dt.Rows[i];

                bean.项目名称 = row[0].ToString();
                bean.病虫害名称 = row[1].ToString();
                bean.发生日期 = Convert.ToDateTime(row[2].ToString());
                bean.具体位置 = row[3].ToString();
                bean.危害植株 = row[4].ToString();
                bean.危害面积 = row[5].ToString();
                bean.防治措施 = row[6].ToString();


                bean.Id = Guid.NewGuid().ToString();
                bean.status = 0;
                SUser user = (SUser)Session["USER"];
                bean.Author = user.Uid == null ? "异常用户" : user.Uid.ToString();
                bean.上传来源 = user.Name == null ? "异常用户" : user.Name.ToString(); ;
                bean.序号 = "BC" + DateTime.Now.ToString("yyyyMMddHHmmssff");
                bean.Created = DateTime.Now;
                bean.orgId = user.OrgId;

                res = dal.update(bean);
            }
            if (res)
                ret = "{\"msg\":\"数据导入成功!\"}";
            else
                ret = "{\"msg\":\"数据导入异常!\"}";

            return ret;
		//示例结束
        }

 ExcelHelper.exceltoTable

using System;
using System.Data;
using System.Data.OleDb;
using System.IO;


namespace COMMON
{
    /// <summary>
    /// Excel导出工具类
    /// </summary>
    public static class ExcelHelper
    {
        public static string OledbConnString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0};Extended Properties=Excel 8.0;";

        public static DataTable exceltoTable(string path)
        {
            try
            {
                if (File.Exists(path))
                {
                    //获取excel数据
                    DataTable dt1 = new DataTable("excelTable");
                    string strConn = string.Format(OledbConnString, path);
                    OleDbConnection conn = new OleDbConnection(strConn);
                    conn.Open();
                    DataTable dt = conn.GetSchema("Tables");
                    //判断excel的sheet页数量,查询第1页
                    if (dt.Rows.Count > 0)
                    {
                        string selSqlStr = string.Format("select * from [{0}]", dt.Rows[0]["TABLE_NAME"]);
                        OleDbDataAdapter oleDa = new OleDbDataAdapter(selSqlStr, conn);
                        oleDa.Fill(dt1);
                    }
                    conn.Close();
                    return dt1;
                }
            }
            catch (Exception ex)
            {                
                return null;
            }

            return null;
        }
    }
}

注:一列中不能同时存在文字和数字,不然读取不到

标签:return,string,Layui,excel,Excel,bean,mvc,ToString,res
来源: https://www.cnblogs.com/qqxx/p/15763902.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有