NPOI上传EXCEL

代码:

 /// <summary>
        /// Excel文件导入
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void btnUpload_Click(object sender, EventArgs e)
        {
            string msg = string.Empty;
            try
            {

                if (FileUpload1.HasFile)
                {
                    string fileName = Server.HtmlEncode(FileUpload1.FileName);
                    string fileExt = System.IO.Path.GetExtension(fileName).ToLower();
                    int result = 0;
                    // 检查上传的文件类型
                    if (fileExt != ".xls" && fileExt != ".xlsx")
                    {
                        Page.ClientScript.RegisterStartupScript(this.GetType(), "", "show(\"请选择需要上传的Excel文件\")", true);
                        return;
                    }
                    List<AllianceSpecialCommissionTicketsResource> list = new List<AllianceSpecialCommissionTicketsResource>();
                    long SCRuleID = Convert.ToInt64(this.hid_SCRuleID.Value);
                    // NPOI
                    Stream fileStream = FileUpload1.PostedFile.InputStream;
                    IWorkbook workbook = null;
                    if (fileExt == ".xlsx")
                    {
                        workbook = new XSSFWorkbook(fileStream); // .xlsx
                    }
                    else
                    {
                        workbook = new HSSFWorkbook(fileStream); // .xls
                    }
                    ISheet sheet = workbook.GetSheetAt(0);
                    for (int i = (sheet.FirstRowNum + 1); i <= sheet.LastRowNum; i++)
                    {
                        IRow row = sheet.GetRow(i);
                        if (row != null)
                        {
                            if (row.Cells.Count == 7)
                            {

                                for (var j = 0; j < 7; j++)
                                {
                                    string c = CommonFunc.ConvertObjectToString(row.GetCell(j)).ToString().Trim();
                                    string colName = GetColName(j);
                                    if (string.IsNullOrEmpty(c))
                                    {
                                        msg = "文件第" + (i + 1) + "行" + colName + "不能为空!"; break;
                                    }
                                    if (j % 2 == 0 && j != 6)
                                    {
                                        //必须为int类型
                                        int re = 0;
                                        if (!Int32.TryParse(c, out re))
                                        {
                                            msg = "文件第" + (i + 1) + "行" + colName + "格式错误!"; break;
                                        }
                                    }
                                    //必须为double类型
                                    if (j == 6)
                                    {
                                        double re = 0;
                                        if (Double.TryParse(c, out re))
                                        {
                                            if (re >= 100)
                                            {
                                                msg = "文件第" + (i + 1) + "行分成率不能超过100%!"; break;
                                            }
                                        }
                                        else
                                        {
                                            msg = "文件第" + (i + 1) + "行" + colName + "格式错误!"; break;
                                        }
                                    }
                                }
                                if (string.IsNullOrEmpty(msg))
                                {
                                    AllianceSpecialCommissionTicketsResource r = new AllianceSpecialCommissionTicketsResource();
                                    r.SCRuleID = SCRuleID;
                                    r.ScenicID = CommonFunc.ConvertObjectToInt32(row.GetCell(0));
                                    r.ScenicName = CommonFunc.ConvertObjectToString(row.GetCell(1)).Trim();
                                    r.TicketID = CommonFunc.ConvertObjectToInt32(row.GetCell(2));
                                    r.TicketName = CommonFunc.ConvertObjectToString(row.GetCell(3)).Trim();
                                    r.ResourceID = CommonFunc.ConvertObjectToInt32(row.GetCell(4));
                                    r.ResourceName = CommonFunc.ConvertObjectToString(row.GetCell(5)).Trim();
                                    r.Rate = CommonFunc.ConvertObjectToDecimalSingle(row.GetCell(6));
                                    r.Rate = r.Rate / 100;
                                    list.Add(r);
                                }
                            }
                            //防止空行
                            else if (row.Cells.Count == 1)
                            {
                                string c1 = CommonFunc.ConvertObjectToString(row.GetCell(row.LastCellNum - 1)).ToString().Trim();
                                if (string.IsNullOrEmpty(c1))
                                {
                                    //空行
                                }
                                else
                                {
                                    msg = "文件第" + (i + 1) + "行数据有误!";
                                }
                            }
                            else
                            {
                                msg = "文件第" + (i + 1) + "行数据有误!";
                            }
                            if (!string.IsNullOrEmpty(msg))
                            {
                                Page.ClientScript.RegisterStartupScript(this.GetType(), "", "show(\"" + msg + "\");isS=true;", true); return;
                            }
                        }
                    }
                    using (TransactionScope scope = new TransactionScope())
                    {
                        AllianceSpecialCommissionRules rule = rDao.FindByPk(SCRuleID);
                        if (rule.ApproveStatus != "W")
                        {
                            rule.ApproveStatus = "W";
                            rule.ApproveTime = null;
                            rule.Approver = null;
                            result = rDao.UpdateAllianceSpecialCommissionRules(rule);
                        }
                        //删除旧数据
                        List<AllianceSpecialCommissionTicketsResource> trs = tDao.GetAll().Where(x => x.SCRuleID == SCRuleID).ToList();
                        foreach (var t in trs)
                        {
                            result = tDao.DeleteAllianceSpecialCommissionTicketsResource(t);
                        }
                        //添加新数据
                        foreach (var r in list)
                        {
                            result = tDao.InsertAllianceSpecialCommissionTicketsResource(r);
                        }
                        if (result == 0)
                        {
                            msg = "Excel导入特殊门票成功!";
                            scope.Complete();
                        }
                        else
                        {
                            msg = "Excel导入特殊门票失败!";
                        }
                    }
                }
                else
                {
                    msg = "请选择上传文件!";
                }
            }
            catch (Exception ex)
            {
                logger.Debug(ex);
                msg = "Excel导入特殊门票失败!";
            }
            Page.ClientScript.RegisterStartupScript(this.GetType(), "", "show(\"" + msg + "\");isS=true;", true);
        }

        protected string GetColName(int k)
        {
            string msg = string.Empty;
            switch (k)
            {
                case 0: msg = "景点ID"; break;
                case 1: msg = "景点名称"; break;
                case 2: msg = "门票ID"; break;
                case 3: msg = "门票名称"; break;
                case 4: msg = "资源ID"; break;
                case 5: msg = "资源名称"; break;
                case 6: msg = "分成率"; break;
            }
            return msg;
        }

整个文件

http://files.cnblogs.com/hongdada/SpecialList.7z

时间: 2024-08-10 23:37:45

NPOI上传EXCEL的相关文章

eclipse中导入jdk源码、SpringMVC注解@RequestParam、SpringMVC文件上传源码解析、ajax上传excel文件

eclipse中导入jdk源码:http://blog.csdn.net/evolly/article/details/18403321, http://www.codingwhy.com/view/799.html. ------------------------------- SpringMVC注解@RequestParam:http://825635381.iteye.com/blog/2196911. --------------------------- SpringMVC文件上传源

js兼容ie获取上传excel文件名称以及大小,绝对路径

/**  *   * @param obj file对象 document.getElementById(elementId);  * @returns  */ function getExcelFileFullPath(obj){ if (obj){ // ie if (window.navigator.userAgent.indexOf("MSIE") >= 1){ obj.select(); return document.selection.createRange().t

下载不含数据EXCEL的固定表头模版(标准EXCEL只含有列头),然后上传EXCEL.显示成功和上传失败的EXCEL连接

<div id="import" runat="server" visible="false"> Step1:<asp:HyperLink ID="HyperLink1" NavigateUrl="~/CommonTemplate/设备清单模版.xlsx" runat="server">下载模版</asp:HyperLink><br />

ASP.NET 实现上传EXCEL,利用NOPI操作,转换得到DataTable

这几天正好用到上传Excel,并根据Excel中的数据做相应的处理,故整理以备用. 用到的资源: (1)NOPI 2.2.0.0 可自己官网下载,也可点击:http://pan.baidu.com/s/1jIRxivW (2)用到一些常见处理文件的公共方法类,可以添加到项目中:http://pan.baidu.com/s/1dEWGKNZ 如过上述连接因故无法使用,可在评论留下邮箱,我打包发送过去,如有更好的建议,欢迎指导. 后台的提示方法ShowMsgHelper,根据自己的改写即可. ===

上传excel数据到数据库中

上传excel表格数据到数据库 导入固定路径下的excel数据到数据库 <form id="disposeFlightDataForm" action="../upload/disposeFlightData" method="post"> <input id="disposeFlightDataButton" type="submit" value="处理航班数据"

SpringMVc上传excel或csv文件

1.JSP页面代码 <form enctype=""multipart/form-data" method="post"> <input type="file" name="file"> <input type="submit" value="上传" > </form> 2.controller中代码 @RequestMappin

abap金税上传EXCEL版

SAP ERP ECC6.0标准功能提供给了金税接口,对于一般的公司来说,这个接口基本也够了. 事务代码:GT_DLN 下载SAP发票信息: 事务代码:GT_ULN 上传金税信息到SAP中: 前提条件:SAP ERP ECC6.0 功能增强包EHp3及以上. 激活业务功能事务代码 SFW5选择业务功能FIN_LOC_CI_1,点击激活按钮. 激活业务功能包后,系统将执行一个后台任务,执行可能需要长达一小时. 参见SAP Note:Note 1290073 – China Golden Tax S

使用ocupload和POI一键上传Excel并解析导入数据库

使用的工具如下:  JQuery ocupload jquery.ocupload-1.1.2.js Apache POI  poi-3.9.jar 如果是Maven项目添加依赖如下: <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>3.9</version> </dependency> J

js上传Excel文件

一.问题 需要在项目里添加一个上传excel文件的功能,因为其他同样的后台里面有上传文件的功能,第一反应就是想着直接用.了解了一下发现它是利用bootstrap的fileinput实现的,但是我怎么都不能把fileinput插件给加到java的项目里,然后就只能自己用js实现吧.好像也没什么特别的需求. 1)原本的样式不好看,需要和项目一致 2)只上传xls和xlxs的文件 二.代码 <input type="file" id="file" name=&quo