数据表格的导入

开发工具与关键技术: VS ,数据表格的导入
作者:刘佳明
撰写时间:2019年 5 月 5 日
(注:本文章所使用插件,代码均来源于老师的课件!!!!!)

之前就有说过,MVC的一些基本功能,本次小编就会为大家详细阐述,MVC的导入;
MVC导入,顾名思义,就是使用MVC来完成我们所要的数据导入,目前小编只学习了数据表格的导入,及Word文档的导入,本文只详细介绍数据表格的导入,
需要完成数据表格的导入,主要的思路如下;
页面构建(需要导入时会有一个layui表格的构建,需要将我们导入的数据对应的放入到layui表格中去,便于导入查看)~~ 需要准备数据表格的模板(该模板需要后勤人员准备)~~使用插件,在数据表格的导入,导出中都需要就将数据转化为流的形式来进行编辑(本次讲解使用的插件为NPOI的插件,并非只限该一种插件方法)~~具体的数据导入操作
在完成vs的一系列的操作后,在控制器中编辑下载导入模块的方法:具体代码如下:

public ActionResult DownImportTemplate(HttpPostedFileBase file)
        {
            string filePath = Server.MapPath("~/Document/Template/考生信息导入模板.xls");//模块所存放的位置;
            if (System.IO.File.Exists(filePath))
            {
                //获取文件的名称
                string strfileName = Path.GetFileName(filePath);//Path 将文件转化为路径;

                return File(new FileStream(filePath, FileMode.Open), "application/octet-stream", strfileName);
            }
            else
            {
                return Content("模板文件不存在,请联系系统运维人员。");
            }

        }

下截图是导入时所弹出的个关于下载的提示框
在这里插入图片描述
//思路:
//(1)判断类型是不是: .xls
//1、获取读取的文件; 2、把文件转换为二进制数组;3、二进制数组转成内存流;4、利用NPOI把内存流中的数据读取成工作簿Excel
//(2)工作簿中有工作表
//(3)工作表有数据
//(4)数据准确性(学院 专业 年级 班级 表跟表之间的关系)
//(5)数据都有,然后读取数据。
因数据导入 的方法代码过于的繁多,在本文中小编也就截取其中每一思路中比较重要的部分,来讲解;

//1、获取读取的文件; 2、把文件转换为二进制数组;3、二进制数组转成内存流;4、利用NPOI把内存流中的数据读取成工作簿Excel

if (".xls".Equals(fileExtension) || ".XLS".Equals(fileExtension))///判断文件名称的后缀
                {
                    //声明二进制数组存放文件
                    byte[] fileBytes = new byte[file.ContentLength];
                    //将传入的文件转化为二进制的数组存入fileBytes
                    file.InputStream.Read(fileBytes, 0, file.ContentLength);
                    //将二进制数组转化为内存流
                    MemoryStream excelFileStream = new MemoryStream(fileBytes);
                    //将内存流转化为工作簿
                    NPOI.SS.UserModel.IWorkbook workbook = new HSSFWorkbook(excelFileStream);

//(2)工作簿中有工作表
利用单表的linq语句查询出对应的数据信息,

//(4)数据准确性(学院 专业 年级 班级 表跟表之间的关系)

  // 定义datatable
                            DataTable dtExcel = new DataTable();
                            //将数据先装到datatable中                        
                            //获取标题行--- 第二行,索引为1;第一行是说明
                            NPOI.SS.UserModel.IRow rowHeader = sheet.GetRow(1);

                            //获取表格列数  
                            int cellCount = rowHeader.LastCellNum;
                            //获取表格行数
                            int rowCount = sheet.LastRowNum + 1;

                            //创建dataTable中的列,循环添加标题行中各个单元格的值
                            for (int i = rowHeader.FirstCellNum; i < cellCount; i++)
                            {
                                //通过遍历行中的每一个单元格,获取标题行各个单元格的数据
                                DataColumn dtColumn = new DataColumn(rowHeader.GetCell(i).StringCellValue);
                                //将获取到的标题行的数据放到datatable中;
                                dtExcel.Columns.Add(dtColumn);

//(5)数据都有,然后读取数据。

//读取Excel中的数据
                            //(sheet.FirstRowNum) 第一行是说明;第二行是标题;第三行开始才是数据信息
                            for (int i = (sheet.FirstRowNum) + 2; i < rowCount; i++)
                            {
                                //获取行(1、2、3...)数据
                                NPOI.SS.UserModel.IRow row = sheet.GetRow(i);//1
                                //创建DataTable行
                                DataRow dtRow = dtExcel.NewRow();
                                if (row != null)
                                {
                                    //遍历excel中一行的所有单元格
                                    for (int j = row.FirstCellNum; j < cellCount; j++)
                                    {
                                        if (row.GetCell(j) != null)
                                        {
                                            dtRow[j] = row.GetCell(j).ToString();
                                        }
                                    }
                                }
                                //将填入数据的dtRow添入dtExcel
                                dtExcel.Rows.Add(dtRow);
                            }
                            int intSuccess = 0;
                            int intFail = 0;

                            //(4)数据准确性(学院	专业	年级	班级   表跟表之间的关系)
                            //遍历datatable中的数据
                            foreach (DataRow row in dtExcel.Rows)
                            {
                                //创建studentVo对象保存每一条数据
                                Student student = new Student();
                                try
                                {
                                    //获取学院ID 和学院名称
                                    student.AcademeName = row["学院"].ToString().Trim();
                                    //通过dataTable中的AcademeName到dbAcademe中查找相应的AcademeID
                                    student.AcademeID = dbAcademe.Where(p => p.AcademeName == student.AcademeName).SingleOrDefault().AcademeID;

                                    //获取专业id和名称
                                    //根据学院ID和专业名称获取相应的专业ID
                                    student.SpecialtyName = row["专业"].ToString().Trim();
                                    student.SpecialtyID = dbSpecialty.Where(p => p.AcademeID == student.AcademeID && p.SpecialtyName == student.SpecialtyName).SingleOrDefault().SpecialtyID;

                                    //获取年级ID 和名称
                                    //根据学院ID以及年级名称获取相应的年级ID
                        student.GradeName = row["年级"].ToString().Trim();
        student.GradeID = dbGrade.Where(p => p.AcademeID == student.AcademeID && p.GradeName == student.GradeName).SingleOrDefault().GradeID;
                                    //获取 班级ID和名称
                                    //根据学院ID&专业ID&班级名称获取班级ID
              student.ClassName = row["班级"].ToString().Trim();
student.ClassID = dbClass.Where(p => p.AcademeID == student.AcademeID && p.SpecialtyID == student.SpecialtyID && p.GradeID == student.GradeID && p.ClassName == student.ClassName).SingleOrDefault().ClassID;

            student.StudentNumber = row["学号"].ToString().Trim();
            student.StudentName = row["姓名"].ToString().Trim();
            student.StudentIDNum = row["身份证号"].ToString().Trim();
            student.StudentSex = row["性别"].ToString().Trim();
            student.UserNuber = row["账号"].ToString().Trim();

                                    //将每一条数据都添加到对象列表中
                                    listStudentVo.Add(student);
                                    intSuccess++;//记录成功的条数

(本来想对代码进行更加详细解释的,但发现一旁的备注已经将每部分的代码说明的很具体了,所以小编也就不在做具体的讲解,如果有什么疑问的,可以私聊我,就这样,啾咪!!?)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在MATLAB,可以使用GUI(图形用户界面)来实现表格数据导入。下面是一种常见的方法: 1. 创建GUI界面:使用MATLAB的GUIDE工具或手动编写代码创建GUI界面。可以添加一个按钮或菜单项,用于触发数据导入操作。 2. 添加表格组件:在GUI界面上添加一个表格组件,用于显示导入数据。可以使用uitable函数创建表格对象,并设置其位置和大小。 3. 添加导入功能:为按钮或菜单项添加回调函数,用于处理数据导入操作。在回调函数,可以使用uigetfile函数选择要导入数据文件,并读取文件数据。 4. 数据处理:读取文件数据后,可以对数据进行必要的处理,例如格式转换、数据清洗等。然后,将处理后的数据填充到表格组件,使用set函数设置表格的Data属性。 5. 显示GUI界面:最后,使用uiwait函数显示GUI界面,并等待用户进行操作。 下面是一个示例代码,演示了如何在MATLAB实现表格数据导入的GUI界面: ```matlab function dataImportGUI % 创建GUI界面 fig = figure('Position', [100, 100, 400, 300]); % 添加表格组件 table = uitable(fig, 'Position', [50, 50, 300, 200]); % 添加导入按钮 importButton = uicontrol(fig, 'Style', 'pushbutton', 'String', '导入数据', ... 'Position', [150, 10, 100, 30], 'Callback', @importData); % 导入数据的回调函数 function importData(~, ~) % 选择数据文件 [filename, filepath] = uigetfile('*.csv', '选择要导入数据文件'); if filename ~= 0 % 读取数据文件 data = csvread(fullfile(filepath, filename)); % 在表格显示数据 set(table, 'Data', data); end end % 显示GUI界面 uiwait(fig); end ``` 这是一个简单的示例,你可以根据自己的需求进行修改和扩展。希望对你有所帮助!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值