精华内容
下载资源
问答
  • c#导入excel
    千次阅读
    2018-05-02 17:25:55

    这几天又碰到了要导excel数据到数据库中,之前在网上也是找,东拼西凑也是把功能弄出来了,今天写个博客记录下。

    首先页面的代码

    @using (Html.BeginForm("Browse", "OutGygx", FormMethod.Post, new { enctype = "multipart/form-data", id = "form_Upload" }))
       { 
          <input id="FileUpload" type="file" name="FileUpload" style="width: 200px; height: 24px; background: White" />  
           <input id="btnImport" type="submit" class="easyui-linkbutton c4"  value="导入Excel" />
                   
            <p style="color: Red; text-align: center;">@ViewBag.error</p>   
                    }
    
    
    
    <!-- 或者通过js提交 一定要使用from表单 -->
     <form id="form" method="POST" enctype="multipart/form-data">
             <input id="FileUpload" type="file" name="FileUpload" style="width: 200px; height: 24px; background: White" /> 
            <a href="#" class="easyui-linkbutton c4"  onclick="Upload()">导入Excel</a>
        </form>
    
    
    //处理上传文件
            function Upload() {
                var EquipmentNo = $("#EquipmentNo").textbox('getValue');
                    $('#form').form('submit', {
                        url: '/EI_CheckStandard/Browse?EquipmentNo=' + EquipmentNo,
                        onSubmit: function () {
                            return $(this).form('validate');
                        },
                        success: function (result) {
                            if (result === "上传成功") {
                                $.messager.alert('提示', result);
                            } else {
                                $.messager.alert('提示', result);
                            }
                            CallBack1('#dgItem');//重载记录 
                        }
                    });
                }

     

     

    页面是通过from表单来访问到后台control中的方法

     

     

    然后是control层

    //将excel导入到数据库
            public ActionResult Browse(LSM_Out_ApplyGygx_M data)
            {
                // 获取上传的文件  
                HttpPostedFileBase file = Request.Files["FileUpload"];
                string filename = Path.GetFileName(file.FileName);
                // 获取上传文件的大小单位为字节byte  
                int filesize = file.ContentLength;
                // 获取上传文件的扩展名 
                string fileEx = System.IO.Path.GetExtension(filename); 
                string FileName;
                string savePath;
                if (file == null || file.ContentLength <= 0)
                {
                    ViewBag.error = "文件不能为空";
                    return Content("上传失败!");
                }
                else
                {
                    // 获取无扩展名的文件名  
                    string NoFileName = System.IO.Path.GetFileNameWithoutExtension(filename);
                    // 定义上传文件的最大空间大小为10M  
                    int Maxsize = 10000 * 1024;
                    // 定义上传文件的类型字符串  
                    string FileType = ".xls,.xlsx";
    
                    FileName = NoFileName + DateTime.Now.ToString("yyyyMMddhhmmss") + fileEx;
                    if (!FileType.Contains(fileEx))
                    {
                        ViewBag.error = "文件类型不对,只能导入xls和xlsx格式的文件";
                        return Content("上传失败!");
                    }
                    if (filesize >= Maxsize)
                    {
                        ViewBag.error = "上传文件超过10M,不能上传";
                        return Content("上传失败!");
                    }
                    // 指定文件存放路径(这里要在项目中建一个文件夹来存放上传的excel)
                    string path = AppDomain.CurrentDomain.BaseDirectory + "Download\\excel\\";
                    savePath = Path.Combine(path, FileName);
                    //存入
                    file.SaveAs(savePath);
                }
    
                string result = string.Empty;
                string strConn=null;
                //strConn = "Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=" + savePath + "; " + "Extended Properties=Excel 8.0;";  
                //if (fileEx == ".xlsx") //excel2007的文件            
                //{
                //    strConn = "Provider=Microsoft.Ace.OleDb.12.0;;Data Source=\"" + savePath + "\";Extended Properties=\"Excel 12.0;HDR=YES;IMEX=1;\"";
                //}
                //if (fileEx == ".xls")//excel2003的文件            
                //{
                //    strConn = "Provider=Microsoft.Jet.OleDb.4.0;Data Source=\"" + savePath + "\";Extended Properties=\"Excel 8.0;HDR=YES;IMEX=1;\"";
                //}
                // 此连接可以操作.xls与.xlsx文件 (支持Excel2003 和 Excel2007 的连接字符串)
                strConn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + savePath + ";Extended Properties='Excel 12.0;HDR=YES;IMEX=1'";   
                // 备注: "HDR=yes;"是说Excel文件的第一行是列名而不是数据,"HDR=No;"正好与前面的相反。  
                OleDbConnection conn = new OleDbConnection(strConn);
                // 打开数据库连接
                conn.Open();
                DataSet myDataSet = new DataSet();
                OleDbDataAdapter myCommand = new OleDbDataAdapter("select * from [Sheet1$]", strConn);
                try
                {
                                   
                    //      "IMEX=1 "如果列中的数据类型不一致,使用"IMEX=1"可必免数据类型冲突。  
    
                    //OleDbDataAdapter myCommand = new OleDbDataAdapter("select * from [Sheet1$]", strConn);  
    
                    //连接串  
                    //string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;" + "DataSource=" + Path + ";" + "ExtendedProperties=Excel8.0;";  
                    
                    myCommand.Fill(myDataSet, "ExcelInfo");
                 
                
                    //OutGygxController.Deleted();
                    DataTable table = myDataSet.Tables["ExcelInfo"].DefaultView.ToTable();
                    for (int i = 0; i < table.Rows.Count; i++)
                    {
                        // table.Rows[i][1] 就是获取第i行第1列的数据
                        data.EmpName = table.Rows[i][1].ToString();
    }
                    conn.Close();
                    // 每次上传完毕删除文件
                    System.IO.File.Delete(savePath);
                } catch (Exception ex)
                {
                    ViewBag.error = ex.Message;
                    return Content("错误");
                }
    
    
            }

    这里就到excel导入到获取数据功能就全实现了,最后只需要将获取到的数据存到表中就可以了。

    因为这种方式会上传一份excel到服务器保存才获取到数据,为了避免资源浪费,最后加上

    System.IO.File.Delete()

    就可以删除掉服务器上的excel了

    这个代码适用于vs2008以上版本,当然vs2008及以下版本也使用,适当改下代码就可以了

    更多相关内容
  • C# 导入Excel文件到ListView和导出ListView到Excel文件
  • C# 导入Excel读取图片上传
  • C# 导入excel到datagridview 在项目引用NuGet中安装Microsoft.Office.Interop.Excel
  • 改程序实现了Excel的数据导入到Datatable,在后台动态生成Lable和文本框等控件,以及如何取到控件的值和生成文本文档、添加显示图片等等的源代码,下载所需积分怎么涨这么快,给大家点福利,重置为5积分。
  • c#制作的EX29-Excel导入导出功能。
  • C#导入Excel操作类 插入excel折线图 各种图表 好多个例子
  • 通过NPOI插件实现WPF导入和导出excel文件,其中导入文件部分可以手动选怎文件所在位置,导出文件部分还没有写,懒得修改了,参照导入文件修改即可
  • C# 导入导出的execl的帮助类,方便学习和使用
  • C#导入Excel

    2018-07-26 18:33:00
    这篇文章就是交大家如何用C#向数据库中导入excel文件中的内容,先说了一下我们需要用到的工具或者代码,这次我们用layui的前端上传控件,想要导入excel文件,首先要能上传文件到后台,然后用npoi读取excel文件,好了...

    1.序言

    这篇文章就是交大家如何用C#向数据库中导入excel文件中的内容,先说了一下我们需要用到的工具或者代码,这次我们用layui的前端上传控件,想要导入excel文件,首先要能上传文件到后台,然后用npoi读取excel文件,好了,开始项目实战。

    2.新建一个web项目

    首先我们先要新建一个web项目,我这里就选择MVC了,然后我就打算在页面上放一个按钮。别的暂时不需要。

     

    6375263-d282e05d3ff39b0f.png

    image.png

     

    新建好项目之后,先把需要的东西加进去,layui和npoi,layui的话,直接去官网下一个文件夹,直接放到项目里就行。然后在NuGet里添加npoi和jquery,如图所示。

     

    6375263-f1667118992d7803.png

    TIM截图20180726173300.png


    安装好npoi之后,我们就开始添加页面,一个index.html页面,一个接收上传文件的UploadController.cs后台文件,
    都准备好之后就可以开始写代码了。

    3.写代码

    1、首先是index.html页面内容,先引入layui的js文件,然后写js,完整代码如下图。

    @{
        ViewBag.Title = "Home Page";
    }
    <link href="~/Scripts/layui/plugins/layui/css/layui.css" rel="stylesheet" />
    <script src="~/Scripts/jquery-3.3.1.min.js"></script>
    <script src="~/Scripts/layui/plugins/layui/layui.all.js"></script>
    
    <div class="jumbotron">
        <input type="button" name="name" id="Upload" value="选择文件" class="layui-btn" />
    </div>
    <script>
        layui.use('upload', function () {
            var upload = layui.upload;
    
            //指定允许上传的文件类型
            upload.render({
                elem: '#Upload'
                , url: '/Upload/ImportExcel'
                , exts: 'xlsx|xls' //普通文件
                , done: function (res) {
                    console.log(res)
                }
            });
        })
    </script>
    

    Index.cshtml页面的代码还是比较简单的,放一个按钮,然后把layui的上传代码加上去就行了,注意上传的url。
    2、接着是UploadController.cs的代码,先看读取excel的关键代码

     XSSFWorkbook workBook = new XSSFWorkbook(new FileStream(Path.GetFullPath(save_path), FileMode.Open));
                                    XSSFSheet sheet = (XSSFSheet)workBook.GetSheetAt(0);
                                    int rowCount = sheet.LastRowNum;
                                    //开始添加
    
                                    for (int j = 0; j < rowCount; j++)
                                    {
                                        string Id = Guid.NewGuid().ToString();
                                        string BookName = sheet.GetRow(j + 1).GetCell(0).ToString().Trim().Replace("\n", ";");
                                        string BookPrice = sheet.GetRow(j + 1).GetCell(1).ToString().Trim().Replace("\n", ";");
                                        string BookCount = sheet.GetRow(j + 1).GetCell(2).ToString().Trim().Replace("\n", ";");
                                    }
    

    简单的读取excel文件流程就是,首先读取上传过来的excel文件,然后读取第一个sheet,GetSheet(0) 就是指的第一个sheet,然后获取当前sheet的行数,一共有多少行数据,然后就是循环去一个一个找每一行的每一个单元格的值,这样就可以读取到excel文件文件的值了,放个图,表示测试正确。我先自己新建了一个excel文件,里面简单写上一行数据。

     

    6375263-d14d6a1334eeef2b.png

    image.png

     

    然后执行代码。点击选择文件,先在后台打个断点。

     

    6375263-50bf4ca1724e843d.png

    image.png


    选择桌面上的实例excel文件,

    6375263-d32ad0888f647885.png

    image.png

     

    我先上传之前在C#代码里加了个断点,可以看到执行到读取excel的代码时候,已经读取到值了。然后可以在for循环里面写上sql语句,向数据库中插入数据了。

     

    6375263-98d16ae815fd9b54.png

    image.png


    完整代码如下图。

    using NPOI.HSSF.UserModel;
    using NPOI.XSSF.UserModel;
    using NPOI.SS.UserModel;
    using NPOI.SS.Util;
    using System;
    using System.IO;
    using System.Text;
    using System.Web;
    using System.Web.Mvc;
    
    namespace WebApplication1.Controllers
    {
        public class UploadController : Controller
        {
            public ActionResult ImportExcel()  //导入excel文件信息
            {
                HttpFileCollectionBase file = Request.Files;//获取选中文件
                if (file.Count > 0)
                {
                    string _guid = DateTime.Now.ToString("yyyy年MM月dd日") + "-" + Guid.NewGuid().ToString().ToUpper().Replace("-", "");
                    string fileName = file[0].FileName;
                    Stream fs = file[0].InputStream;
                    if (file != null && file[0].ContentLength > 0)
                    {
                        using (StreamReader sr = new StreamReader(fs, Encoding.UTF8))
                        {
                            string save_diretion = Server.MapPath("../upload/");
                            string save_path = save_diretion + _guid + "-" + fileName;
                            try
                            {
                                file[0].SaveAs(save_path);
                                string sql = "";
                                if (fileName.EndsWith(".xls") || fileName.EndsWith(".xlsx"))
                                {
                                    XSSFWorkbook workBook = new XSSFWorkbook(new FileStream(Path.GetFullPath(save_path), FileMode.Open));
                                    XSSFSheet sheet = (XSSFSheet)workBook.GetSheetAt(0);
                                    int rowCount = sheet.LastRowNum;
                                    //开始添加
    
                                    for (int j = 0; j < rowCount; j++)
                                    {
                                        string Id = Guid.NewGuid().ToString();
                                        string BookName = sheet.GetRow(j + 1).GetCell(0).ToString().Trim().Replace("\n", ";");
                                        string BookPrice = sheet.GetRow(j + 1).GetCell(1).ToString().Trim().Replace("\n", ";");
                                        string BookCount = sheet.GetRow(j + 1).GetCell(2).ToString().Trim().Replace("\n", ";");
                                    }
                                }
    
                            }
                            catch (Exception e)
                            {
                                System.IO.File.Delete(save_path);
                                return Json(new
                                {
                                    code = 0,
                                    src = "",
                                    name = "",
                                    msg = "导入数据失败"
                                });
                                throw;
    
                            }
                            finally
                            {
                            }
                        }
    
                    }
    
                }
                return Json(new
                {
                    code = 1,
                    src = "",
                    name = "",
                    msg = "导入数据成功"
                });
            }
        }
    }
    

    好了简单的读取excel文件的代码就这么多,但是读取excel文件的时候,一定要记得判断单元格里面的数据格式,如果全部用ToString()的话,对于一些日期格式的数据会出现问题哦。
    Study hard and make progress every day.

    更多学习资料请关注"爱游戏爱编程"。

     

    6375263-578835b1e5aa99fa.jpg

    爱游戏爱编程.jpg

    展开全文
  • c# 导入 委托 进度条 可复用
  • 采用第三方类库NPOI来完成Excel导入与导出,NPOI是POI项目的.NET 版本,可用于Excel、Word的读写操作,不需要安装Office环境。
  • C#导入excel

    2015-08-11 17:20:04
    不用插件,快速将Excel的数据导入至数据库
  • Excel导入数据,使用SqlBulkCopy类批量导入数据到数据库。
  • c#导入excel

    2017-03-08 17:44:27
    asp.net针对Excel文件的导入与导出是非常常见的功能之一。本实例Asp.Net使用Npoi导入导出Excel的方法。分享给大家供大家参考之用。具体方法如下: 在使用Npoi导出Excel的时候,服务器可以不装任何office组件,一般在...
  • 内容概要:本资源介绍了如何从利用Npoi库操作Excel,如相关读取单元格、行,介绍了如何对单元格数据格式进行操作,并分享了如何将Datatable数据导入Mysql数据库,方便项目管理。 阅读建议:此资源以如何读取Excel...
  • c#Excel导入导出

    2019-01-16 14:11:15
    c#使用npoi导入导出Excel示例,支持asp.net core/asp.net,示例使用asp.Net core
  • CSharp导入和导出Excel的程序例子
  • 导入Excel数据插件.zip,导入Excel数据插件.exe
  • 自己整理的利用c#写的excel数据导入到oracle11G数据库,100%可用,里面包含程序demo和excel表格、建表的sql,需要学习和借鉴的朋友可以下载。
  • C# Excel导入导出多sheet页
  • 本文实例讲述了C#实现Excel表数据导入Sql Server数据库中的方法。分享给大家供大家参考,具体如下: Excel表数据导入Sql Server数据库的方法很多,这里只是介绍了其中一种: 1、首先,我们要先在test数据库中新建一...
  • C# 导入Excel文件数据的几种方法

    千次阅读 2020-02-27 12:10:59
    方法一:利用OleDb直接连接Excel文件进行读取数据。 //获取Excel路径 string fileUrl = GetExcel(fuImportStudent); //适合老旧版本的xls文件 const string cmdText = "Provider=Microsoft.Jet.OLEDB.4.0;Data...

    方法一:利用OleDb直接连接Excel文件进行读取数据。

    //获取Excel路径
            string fileUrl = GetExcel(fuImportStudent);
    
            //适合老旧版本的xls文件
            const string cmdText = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0};Extended Properties=\"Excel 8.0;HDR=Yes;IMEX=1;\"";
            //适合新版的xlsx文件
            //const string cmdText = "Provider=Microsoft.Ace.OleDb.12.0;Data Source={0};Extended Properties='Excel 12.0; HDR=Yes; IMEX=1'";
    
            System.Data.DataTable dt = null;
            //建立连接
            OleDbConnection connOleDb = new OleDbConnection(string.Format(cmdText, fileUrl));
    
            //打开连接
            if (connOleDb.State == ConnectionState.Broken || connOleDb.State == ConnectionState.Closed)
            {
                connOleDb.Open();
            }
    
            System.Data.DataTable schemaTable = connOleDb.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);
    
            //获取Excel的第一个Sheet名称
            string sheetName = schemaTable.Rows[0]["TABLE_NAME"].ToString().Trim();
    
            //查询sheet中的数据
            string strSql = "select * from [" + sheetName + "]";
            OleDbDataAdapter da = new OleDbDataAdapter(strSql, connOleDb);
            DataSet ds = new DataSet();
            da.Fill(ds);
            //将Excel数据转写成DataTable
            dt = ds.Tables[0];
    
            //关闭连接
            connOleDb.Close();
    
            if (dt.Rows.Count > 0)
            {
                for (int i = 0; i < dt.Rows.Count; i++)
                {
                    //这里进行写入数据库操作
                    //获取数据:dt.Rows[i]["表头名称"].ToString()
                }
            }

    如果是用Microsoft.Jet.OLEDB.4.0连接的,需要设置IIS允许32位程序:

    优点:适合简单固定格式的Excel表格,只要表头名称对上就行,不用管顺序问题。

    缺点:如果直接读取MyXls导出的Excel会出现只能读取第一列的问题(重新编辑一下或者另存xls又可以解决这个问题)。

    方法二:利用MyXls读取Excel数据。

            //获取Excel路径
            string fileUrl = GetExcel(fuImportContact);
    
            //加载要导入的Excel
            XlsDocument xls = new XlsDocument(fileUrl);
            //获得Excel中的指定一个工作页
            Worksheet sheet = xls.Workbook.Worksheets[0];
            //读取数据 循环每sheet工作页的每一行,不读取前1行
            for (int i = 2; i < sheet.Rows.Count; i++)
            {
                //这里进行写入数据库操作
                //获取数据:sheet.Rows[ushort.Parse(i.ToString())].GetCell(1).Value.ToString()
            }

    优点:不依赖服务器,可以读取MyXls导出的Excel文件。

    缺点:必须按照Excel列的顺序获取字段数据,对时间格式要求严格,会出现数字格式的日期,需要转换一下。如果列的数据为空也可能导致读取不了列的情况,比较不稳定。

    方法三:调用Microsoft.Office.Interop.Excel组件读取Excel数据。

    Microsoft.Office.Interop.Excel.Application excel = new Microsoft.Office.Interop.Excel.Application();
    
                Microsoft.Office.Interop.Excel.Workbook workbook;
    
                Microsoft.Office.Interop.Excel.Worksheet worksheet;
    
                object oMissing = System.Reflection.Missing.Value;//相当null
    
                workbook = excel.Workbooks.Open(filename, oMissing, oMissing, oMissing, oMissing, oMissing, oMissing, oMissing, oMissing, oMissing, oMissing, oMissing, oMissing, oMissing, oMissing);
    
                worksheet = (Worksheet)workbook.Worksheets[1];
    
                //int rowCount = int.Parse(txtRow1.Text.Trim()) + 1;// worksheet.UsedRange.Rows.Count;
    
                int colCount = worksheet.UsedRange.Columns.Count;
    
                Microsoft.Office.Interop.Excel.Range range1;
    
                System.Data.DataTable dt = new System.Data.DataTable();
    
                for (int i = 0; i < colCount; i++)
                {
                    range1 = worksheet.Range[worksheet.Cells[1, i + 1], worksheet.Cells[1, i + 1]];
    
                    if (range1.Value2 != null)
                    {
                        dt.Columns.Add(range1.Value2.ToString());
                    }
                }
    
                for (int j = 1; j < rowCount; j++)
                {
                    SetCount(j, label);
    
                    DataRow dr = dt.NewRow();
    
                    for (int i = 0; i < colCount; i++)
                    {
                        range1 = worksheet.Range[worksheet.Cells[j + 1, i + 1], worksheet.Cells[j + 1, i + 1]];
    
                        if (range1.Value2 != null)
                        {
                            dr[i] = range1.Value2.ToString();
                        }
                    }
    
                    dt.Rows.Add(dr);
    
                }
    
                excel.Quit();
    
            if (dt.Rows.Count > 0)
            {
                for (int i = 0; i < dt.Rows.Count; i++)
                {
                    //这里进行写入数据库操作
                    //获取数据:dt.Rows[i]["表头名称"].ToString()
                }
            }

    优点:可以读取复杂的Excel表格数据,读取列时不用管顺序。

    缺点:依赖服务器组件,服务器需要安装Excel组件。

    如果遇到时间字段变成数字,如:

    需要转换一下:

    private string ToDateTimeValue(string strNumber)
            {
                if (!string.IsNullOrWhiteSpace(strNumber))
                {
                    Decimal tempValue;
                    //先检查 是不是数字;
                    if (Decimal.TryParse(strNumber, out tempValue))
                    {
                        //天数,取整
                        int day = Convert.ToInt32(Math.Truncate(tempValue));
                        //这里也不知道为什么. 如果是小于32,则减1,否则减2
                        //日期从1900-01-01开始累加 
                        // day = day < 32 ? day - 1 : day - 2;
                        DateTime dt = new DateTime(1900, 1, 1).AddDays(day < 32 ? (day - 1) : (day - 2));
    
                        //小时:减掉天数,这个数字转换小时:(* 24) 
                        Decimal hourTemp = (tempValue - day) * 24;//获取小时数
                                                                  //取整.小时数
                        int hour = Convert.ToInt32(Math.Truncate(hourTemp));
                        //分钟:减掉小时,( * 60)
                        //这里舍入,否则取值会有1分钟误差.
                        Decimal minuteTemp = Math.Round((hourTemp - hour) * 60, 2);//获取分钟数
                        int minute = Convert.ToInt32(Math.Truncate(minuteTemp));
                        //秒:减掉分钟,( * 60)
                        //这里舍入,否则取值会有1秒误差.
                        Decimal secondTemp = Math.Round((minuteTemp - minute) * 60, 2);//获取秒数
                        int second = Convert.ToInt32(Math.Truncate(secondTemp));
    
                        //时间格式:00:00:00
                        string resultTimes = string.Format("{0}:{1}:{2}",
                                (hour < 10 ? ("0" + hour) : hour.ToString()),
                                (minute < 10 ? ("0" + minute) : minute.ToString()),
                                (second < 10 ? ("0" + second) : second.ToString()));
    
                        if (day > 0)
                            return string.Format("{0} {1}", dt.ToString("yyyy-MM-dd"), resultTimes);
                        else
                            return resultTimes;
                    }
                }
                return string.Empty;
            }

     

    展开全文
  • EX29-Excel导入导出_导出excel_c#导入excel_C#_excel导入导出_源码.zip
  • C#导入Excel表格数据

    千次阅读 2019-04-12 21:59:41
    C#导入Excel表格数据 开发工具与关键技术:VS、MVC 作者:小赵 撰写时间:2019/4/10 导入数据用bootstrap-4.1.3-dist前段框架的模态框搭建的导入页面的窗体,通过触发页面的按钮弹出模态框,其弹出模态框、关闭模态...

    导入数据用bootstrap-4.1.3-dist前段框架的模态框搭建的导入页面的窗体,通过触发页面的按钮弹出模态框,其弹出模态框、关闭模态框的方法框架的内部已经定义好调用方法就可以;弹出模态框,要重置from表单,以防上次打开的数据遗留;找到打开模态框的按钮,给这个按钮一个点击事件,找到要弹出的模态框用model(“show”)触发模态框弹出。导入Excel表格数据要根据其数据模板定义好的规则导入,通过触发按钮导入数据;刚弹出导入的模态框是没有数据的,所以导入到数据库的按钮要禁用,当表格有数据的时候才启用。打开模态框的代码、模态框的内容效果如下截图:

    在这里插入图片描述
    在这里插入图片描述
    一、 下载导入考生信息的模板

    1、 把建好的模板放在当前项目的文件夹里
    2、 通过代码找到模板
    3、 代码实现给用户下载模板,填写信息导入
    用IO流读取文件,判断模板文件是否存在;获取文件名称,以文件的格式返回数据;
    注意:在模板添加考生信息时,数据之间的关系要以数据库的关系对应,确保数据的准确性
    其方法代码、表格模板截图如下:

    在这里插入图片描述
    在这里插入图片描述
    二、 导入的方法
    方法的大致思路如下:
    1、判断文件类型是不是.xls格式
    (1)获取读取的文件;
    (2)把文件转换为二进制数组;(3)二进制数组转成内存流;(4)利用NPOI把内存流中的数据读取成工作簿Excel
    导入的数据临时存放于Session中,获取文件之前要清空临时存储数据的Session,以防Session残留以前的数据;获取文件的后缀,判断文件的后缀名是否是“.xls/.XLS”格式;声明一个二进制的数组存放文件,把文件以流的形式读取文件并传入二进制数组存放,再将二进制数组转化为内存流,由NPOI插件的方法将内存流转化为工作簿。其整个转换过程代码如下截图:
    在这里插入图片描述
    2、 判断工作簿中是否有工作表
    在这里插入图片描述
    3、判断工作表是否有数据 4、判断数据准确性(学院、专业、年级、班级、表跟表之间的关系)
    在这里插入图片描述
    在这里插入图片描述
    5、数据都有,然后读取数据,把数据临时存放Session。
    在这里插入图片描述
    三、 把导入的数据临时存放Session,将Session中的数据进行分页操作
    调用封装的分页类,实例化一个对象列表,判断Session中的数据是否为空;不为空,把Session中的数据赋值给刚实例化的对象列表;把数据进行分页的操作,分页前要把数据进行排序,最后返回分页数据;其代码如下截图所示:
    在这里插入图片描述
    四、 保存导入的数据(批量新增)
    导入数据成功,还需要把数据保存,保存数据的过程、结果都相当于是新增数据,因导入的数据是批量性的,所以保存的数据也是批量性,无意之中就是一个批量新增数据的过程。新增数据要做到几个步骤:1、判断页面要新增保存的数据是否为空2、判断新增的数据是否已存在,即检查新增的数据是否出现重复3、保存数据的操作、判断保存数据是否成功4、把保存的结果返回给用户。其新增保存的过程代码如下截图:
    在这里插入图片描述
    五、 模板导入数据的效果
    在这里插入图片描述

    展开全文
  • c#导出导入excel 自定义字段 自定义列 OleDb方式的excel导入 可以实现自定义字段,不按照模版的方式导出
  • C#导入excel数据

    2013-03-09 09:20:51
    C#导入excel数据
  • C# 导入Excel

    千次阅读 2019-08-16 11:34:00
    6、Excel校验:导入数据前,可先进行数据校验,确保Excel数据无问题。 7、最新版本格式的Excel,列会从‘砼等级’开始过滤(包含砼等级),意思是从‘砼等级’列开始的列,不添加到分部分项 8、删除指定节点...
  • 如果只是简单的导入数据,完全可以有更加简单的方案,方案的限制条件为; 只支持Windows平台 只读取Excel文件 支持xls和xlsx文件格式 依赖 还是有依赖的 2007 Office System Driver: Data Connectiv
  • C# Excel导入导出

    千次下载 热门讨论 2015-08-07 16:26:52
    C#调用NPOI进行Excel导入、导出。 文件为一个解决方案,包含了所有开发源码。 文章为:http://www.cnblogs.com/polk6/p/4425620.html

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 13,450
精华内容 5,380
关键字:

c#导入excel

友情链接: encryption.rar