c#从前端接收excel表将其数据导入到数据库中

复制代码
/// <summary>
        /// 数据导入
        /// </summary>
        /// <param name="files">数据文件</param>
        /// <returns></returns>
        public string Import(HttpFileCollection files)
        {
            string msg = "";
            if (files.Count > 0)
            {
                // 获取文件转化为流
                var file = files[0];
                Stream fileStream = file.InputStream;
                IWorkbook workbook;
                if (file.FileName.EndsWith(".xls"))
                {
                    workbook = new HSSFWorkbook(fileStream);
                }
                else
                {
                    workbook = new XSSFWorkbook(fileStream);
                }
                // 数据导入
                var m = Import(workbook);
                
                if (!string.IsNullOrEmpty(m))
                {
                    msg += $"{file.FileName}\n:" + m;
                }
                else
                {
                    msg += $"{file.FileName}:导入成功";
                }
                //流关闭
                fileStream.Close();
            }
            return msg;
        }


        public string Import(IWorkbook workbook)
        {
            string err = "";
            ISheet sheet0 = workbook.GetSheetAt(0); //获取第一个表
            if (sheet0.LastRowNum >= 101)
            {
                return "抱歉,一次最多只能导入100条";
            }

            for (int j = 1; j <= sheet0.LastRowNum; j++) //对工作表每一行
            {
                IRow row = sheet0.GetRow(j); //row读入第i行数据
                if (row != null)
                {
                    table data = new table()
                    {
               //根据数据类型填入表中
               string = row.GetCell(0).StringCellValue, date
= row.GetCell(1).DateCellValue, int = row.GetCell(2).NumericCellValue }; // 添加到数据库 _dbContext.table.Add(data); } } // 保存到到数据库 _dbContext.SaveChanges(); return err; }
复制代码

 

posted @   混子一  阅读(730)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
点击右上角即可分享
微信分享提示