zoukankan      html  css  js  c++  java
  • Excel导入导出数据库(MVC)

    后端

    using Dapper;
    using Newtonsoft.Json;
    using NPOI.HSSF.UserModel;
    using NPOI.SS.UserModel;
    using System;
    using System.Collections.Generic;
    using System.Data;
    using System.Data.SqlClient;
    using System.Diagnostics;
    using System.IO;
    using System.Linq;
    using System.Web;
    using System.Web.Mvc;
    using static Test.SqlConCty;
    
    namespace Test.Controllers
    {
        public class HomeController : Controller
        {
            public ActionResult Index()
            {
                return View();
            }
    
            // GET: UploadExcel
            public ActionResult TestExcel(string filePath)
            {
                return View();
            }
            /// <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();
                    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();
                        }
                }
            }
    
    
            /// <summary>
            /// Excel导入
            /// </summary>
            /// <param name="filePath"></param>
            /// <returns></returns>
            public DataTable ImportExcelFile(string filePath)
            {
                HSSFWorkbook hssfworkbook;
                #region//初始化信息
                try
                {
                    using (FileStream file = new FileStream(filePath, FileMode.Open, FileAccess.Read))
                    {
                        hssfworkbook = new HSSFWorkbook(file);
                    }
                }
                catch (Exception e)
                {
                    throw e;
                }
                #endregion
    
                ISheet sheet = hssfworkbook.GetSheetAt(3);
                DataTable table = new DataTable();
                IRow headerRow = sheet.GetRow(0);//第一行为标题行
                int cellCount = headerRow.LastCellNum;//LastCellNum = PhysicalNumberOfCells
                int rowCount = sheet.LastRowNum - 2;
    
                for (int i = headerRow.FirstCellNum; i < cellCount; i++)
                {
                    DataColumn column = new DataColumn(headerRow.GetCell(i).StringCellValue);
                    table.Columns.Add(column);
                }
                for (int i = (sheet.FirstRowNum + 4); i <= rowCount; i++)
                {
                    IRow row = sheet.GetRow(i);
                    DataRow dataRow = table.NewRow();
    
                    if (row != null)
                    {
                        for (int j = row.FirstCellNum; j < cellCount; j++)
                        {
                            if (row.GetCell(j) != null)
                                dataRow[j] = GetCellValue(row.GetCell(j));
                        }
                    }
    
                    table.Rows.Add(dataRow);
                }
                using (SqlBulkCopy abc = new SqlBulkCopy(SqlConnectionFactory.Connection))
                {
                    abc.BatchSize = table.Rows.Count;
                    abc.BulkCopyTimeout = 11;
                    abc.DestinationTableName = "ExcelTable";
                    for (int i = 0; i < table.Columns.Count; i++)
                    {
                        abc.ColumnMappings.Add(table.Columns[i].ColumnName, i);
                    }
                    abc.WriteToServer(table);
                }
                return table;
            }
    
            [HttpPost]
            public ActionResult TestExcel(FormCollection form)
            {
                    HttpPostedFileBase file = Request.Files[0];
                    string path = Server.MapPath("\Models");
                    path += "\" + file.FileName;
                    file.SaveAs(path);
                    ImportExcelFile(path);
                    return View();
            }
            public string EE()
            {
                using (SqlConnection con = SqlConnectionFactory.Connection)
                {
                    string sql = "select TsetId,TheDate, Tnumber, Tname, Depter, Bdate, Beonduty, GetoffWork, BeondutyTwo, GetoffWorkTwo, Belate, Leaver, Absenceoftime, Total, BText from ExcelTable";
                    var list = con.Query(sql);
                    return JsonConvert.SerializeObject(list);
                }
            }
             public ActionResult Detailss()
            {
                ExcelExprot();
                return View();
            }
            protected void ExcelExprot()
            {
                string schoolname = "401";
                //创建Excel文件的对象
                NPOI.HSSF.UserModel.HSSFWorkbook book = new NPOI.HSSF.UserModel.HSSFWorkbook();
                //添加一个sheet
                NPOI.SS.UserModel.ISheet sheet1 = book.CreateSheet("Sheet1");
                //获取list数据
                List<Models.TesModel> listRainInfo = GetAlll();// m_BLL.GetSchoolListAATQ(schoolname); 
                                                                  //给sheet1添加第一行的头部标题
                NPOI.SS.UserModel.IRow row1 = sheet1.CreateRow(0);
                row1.CreateCell(0).SetCellValue("工号");
                row1.CreateCell(1).SetCellValue("姓名");
                row1.CreateCell(2).SetCellValue("所属部门");
                row1.CreateCell(3).SetCellValue("时间");
                row1.CreateCell(4).SetCellValue("上班");
                row1.CreateCell(5).SetCellValue("下班");
                row1.CreateCell(6).SetCellValue("上班");
                row1.CreateCell(7).SetCellValue("下班");
                row1.CreateCell(8).SetCellValue("迟到时间(分钟)");
                row1.CreateCell(9).SetCellValue("早退时间(分钟)");
                row1.CreateCell(10).SetCellValue("缺勤时间(分钟)");
                row1.CreateCell(11).SetCellValue("合计");
                row1.CreateCell(12).SetCellValue("备注");
    
                //将数据逐步写入sheet1各个行  年龄>备注
                for (int i = 0; i < listRainInfo.Count; i++)
                {
                    NPOI.SS.UserModel.IRow rowtemp = sheet1.CreateRow(i + 1);
                    rowtemp.CreateCell(0).SetCellValue(listRainInfo[i].TsetId.ToString());
                    rowtemp.CreateCell(1).SetCellValue(listRainInfo[i].TheDate.ToString());
                    rowtemp.CreateCell(2).SetCellValue(listRainInfo[i].Tnumber.ToString());
                    rowtemp.CreateCell(2).SetCellValue(listRainInfo[i].Tnumber.ToString());
                    rowtemp.CreateCell(3).SetCellValue(listRainInfo[i].Tname.ToString());
                    rowtemp.CreateCell(4).SetCellValue(listRainInfo[i].Depter.ToString());
                    rowtemp.CreateCell(5).SetCellValue(listRainInfo[i].Bdate.ToString());
                    rowtemp.CreateCell(6).SetCellValue(listRainInfo[i].Beonduty.ToString());
                    rowtemp.CreateCell(7).SetCellValue(listRainInfo[i].GetoffWork.ToString());
                    rowtemp.CreateCell(8).SetCellValue(listRainInfo[i].BeondutyTwo.ToString());
                    rowtemp.CreateCell(9).SetCellValue(listRainInfo[i].Belate.ToString());
                    rowtemp.CreateCell(10).SetCellValue(listRainInfo[i].Leaver.ToString());
                    rowtemp.CreateCell(11).SetCellValue(listRainInfo[i].Absenceoftime.ToString());
    
                }
                // 写入到客户端 
                System.IO.MemoryStream ms = new System.IO.MemoryStream();
                book.Write(ms);
                ms.Seek(0, SeekOrigin.Begin);
    
    
                ms.Flush();
                ms.Position = 0;
                //编辑完后 通过response输出
                Response.Clear();
                Response.Buffer = true;
                Response.Charset = "UTF8";
                Response.ContentEncoding = System.Text.Encoding.UTF8;
                Response.ContentType = "application/msexcel";
                Response.AddHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode("考勤明细.xls"));
                Response.BinaryWrite(ms.ToArray());
                Response.Flush();
                Response.End();
            }
            private List<Models.TesModel> GetAlll()
            {
                List<Models.TesModel> list = new List<Models.TesModel>();
                string sql = "select TsetId,TheDate, Tnumber, Tname, Depter, Bdate, Beonduty, GetoffWork, BeondutyTwo, GetoffWorkTwo, Belate, Leaver, Absenceoftime from ExcelTable";
                SqlConnection DBper = SqlConnectionFactory.Connection;
                var oo = DBper.Query(sql);
                var json = JsonConvert.SerializeObject(oo); 
                list = JsonConvert.DeserializeObject<List<Models.TesModel>>(json);
                return list;
            }
        }
    }

    前段

    @{
        Layout = null;
    }
    
    <!DOCTYPE html>
    
    <html>
    <head>
        <meta name="viewport" content="width=device-width" />
        <title>Index</title>
        <script src="~/Scripts/jquery-3.3.1.js"></script>
    </head>
    <body>
        <div>
            <form action="/Home/TestExcel" enctype="multipart/form-data" method="post">
                <text>选择:(工作表名“Sheet1”)</text>
                <input name="file" type="file" id="file" />
                <input type="submit" name="Upload" value="导入" />
            </form>
            <input id="Button1" type="button" value="导出" onclick="location.href='/Home/Detailss'" />
            <table>
                <thead>
                    <tr>
                        <th>工号</th>
                        <th>姓名</th>
                        <th>所属部分</th>
                        <th>时间</th>
                        <th>上班</th>
                        <th>下班</th>
                        <th>上班</th>
                        <th>下班</th>
                        <th>迟到时间(分钟)</th>
                        <th>早退时间(分钟)</th>
                        <th>缺勤时间(分钟)</th>
                        <th>合计(分钟)</th>
                        <th>备注</th>
                    </tr>
                </thead>
                <tbody id="tb"></tbody>
            </table>
        </div>
        <script>
            $(document).ready(function () {
                $.ajax({
                    url: '/Home/EE',
                    dataType: 'json',
                    type: 'get',
                    success: function (data) {
                        $(data).each(function () {
                            var tr = '<tr>'
                                + '<td>' + this.TsetId + '</td>'
                                + '<td>' + this.TheDate+'</td>'
                                + '<td>' + this.Tnumber + '</td>'
                                + '<td>' + this.Tname + '</td>'
                                + '<td>' + this.Depter + '</td>'
                                + '<td>' + this.Bdate + '</td>'
                                + '<td>' + this.Beonduty + '</td>'
                                + '<td>' + this.GetoffWork + '</td>'
                                + '<td>' + this.BeondutyTwo + '</td>'
                                + '<td>' + this.GetoffWorkTwo + '</td>'
                                + '<td>' + this.Belate + '</td>'
                                + '<td>' + this.Leaver + '</td>'
                                + '<td>' + this.Absenceoftime + '</td>'
                                + '<td>' + this.Total + '</td>'
                                + '<td>' + this.BText + '</td>'
                                + '</tr>';
                            $("#tb").append(tr);
                        })
                    }
                })
            })
        </script>
    </body>
    
    </html>
  • 相关阅读:
    iOS开发UI篇—Quartz2D使用(绘图路径)
    iOS开发UI篇—Quartz2D简单使用(三)
    iOS开发UI篇—Quartz2D使用(图片剪切)
    WordPress主题开发: 制作文章页面single.php
    Wordpress页面判断
    为WordPress某个文章添加额外的样式
    Wordpress本地伪静态设置
    Wordpress添加关键词和描述
    Wordpress制作sidebar.php
    Wordpress固定链接设置
  • 原文地址:https://www.cnblogs.com/wxj2/p/11765217.html
Copyright © 2011-2022 走看看