1.前端代码

  1. 本例使用初始MVC代码结构讲解excel文档的上传及保存至数据库操作
  2. 下面为前端代码
  3. 实现效果如图

<form id="formfile" enctype="multipart/form-data" style="float:left">

<span id="spFileUpload">
        <!--选择文件-->
        <button type="button" id="btnxuanze" class="btn btn-xs btn-info" οnclick="uploadClick()"><i class=""></i>选择文件</button>
        <!--文件名-->
        @Html.TextBox("f_fileName", "", new { @class = "input-middle" })
        <input type="file" name="fileField" class="files" id="fileField" style="opacity:0;display:none" size="28" accept="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet, application/vnd.ms-excel" />
        <button type="button" class="btn  btn-xs btn-success" οnclick="uploadfile()">上传</button>
    </span>
</form>

2.后台代码

  1. 为了方便演示,设计excel格式数据,如下图
  2. 同时设计数据库,与excel对应字段 (以上均为方便演示)
  3. 注意表列名与字段名转换对应关系

--数据库建表脚本

use CourseManageDB  --修改成自己本地数据库
go

if exists (select * from sysobjects where name= 't_externalPay')
drop table t_externalPay
go

create table t_externalPay
(
    f_bankCode varchar(50),
    f_province varchar(50),
    f_city varchar(50),
    f_bankOther varchar(50),
    f_remittanceAccount varchar(50),
    f_adminName varchar(50),
    f_money decimal(8,2),
    f_order int
)
go

//后台程序处理上传excel并存至sqlserver代码

public ActionResult ExcelToDataTable()
        {
            IWorkbook workbook = null;
            ISheet sheet = null;
            DataTable table = new DataTable();
            var fileData = Request.Files["myfirstField"];
            workbook = WorkbookFactory.Create(fileData.InputStream);
            //文件名称,带时间,方便日后导出数据时,根据条件查询
            var fileName = fileData.FileName.ToString().Split('.')[0] + " " + DateTime.Now.ToString("HHmmss") + ".xls";

var cellstyle = workbook.CreateCellStyle();
            var hssfDataFormat = workbook.CreateDataFormat();
            cellstyle.DataFormat = hssfDataFormat.GetFormat("@");

Dictionary<string, string> dictionary = new Dictionary<string, string>();
            dictionary.Add("银行", "f_bankCode");
            dictionary.Add("省份", "f_province");
            dictionary.Add("城市", "f_city");
            dictionary.Add("分行", "f_bankOther");
            dictionary.Add("账号", "f_remittanceAccount");
            dictionary.Add("姓名", "f_adminName");
            dictionary.Add("金额", "f_money");
            dictionary.Add("人员代号", "f_order");

if (workbook != null)
            {
                sheet = workbook.GetSheetAt(0);
                int rowCount = sheet.LastRowNum + 1;//总行数=内容总数+列头
                IRow headerRow = sheet.GetRow(0); //首行
                int cellCount = headerRow.LastCellNum; //一行最后一个方格的编号为 总列数
                //表头数据
                for (int i = headerRow.FirstCellNum; i < cellCount; i++)
                {
                    DataColumn column = new DataColumn(dictionary.Where(w=>w.Key == headerRow.GetCell(i).StringCellValue).Select(w=>w.Value).FirstOrDefault());
                    table.Columns.Add(column);
                }
                //读取列数据
                for (int i = 1; i < rowCount; i++)
                {
                    IRow rows = sheet.GetRow(i);
                    if (rows != null && rows.GetCell(0) != null && rows.GetCell(0).StringCellValue != null)
                    {
                        //创建与表格相同结构的新行
                        DataRow datarow = table.NewRow();
                        for (int j = rows.FirstCellNum; j < cellCount; j++)
                        {
                            if (rows.GetCell(j) != null && rows.GetCell(j).ToString() != "")
                            {
                                //给表每行数据赋值
                                datarow[j] = rows.GetCell(j).ToString();
                            }
                        }
                        table.Rows.Add(datarow);
                    }
                }
            }

//连接数据库,准备写入
            string conn = ConfigurationManager.ConnectionStrings["conn_mydb"].ToString();
            SqlConnection connection = new SqlConnection(conn);

if (connection.State == ConnectionState.Closed)
            {
                connection.Open();
            }

using (SqlTransaction transaction = (SqlTransaction)connection.BeginTransaction())
            {
                using (SqlBulkCopy sqlBulkCopy = new SqlBulkCopy(connection, SqlBulkCopyOptions.KeepIdentity, transaction))
                {
                    sqlBulkCopy.DestinationTableName = "t_externalPay";
                    for (int i = 0; i < table.Columns.Count; i++)
                    {
                        sqlBulkCopy.ColumnMappings.Add(table.Columns[i].ColumnName, table.Columns[i].ColumnName);
                    }
                    sqlBulkCopy.BatchSize = table.Rows.Count;
                    try
                    {
                        sqlBulkCopy.WriteToServer(table);
                        transaction.Commit();
                    }
                    catch (Exception)
                    {
                        transaction.Rollback();
                        throw;
                    }
                }
            }

return View("Contact");
        }

3.总结

初学编程万事开头难,只要用心你也可以.

c# excel文档导入及excel存储数据库相关推荐

  1. 将excel导入到页面表格_如何将Excel文档导入Google表格

    将excel导入到页面表格 Did someone send you an Excel document, but you don't have Excel? Giving up on Microso ...

  2. Mac OS X将CSV格式转换为Excel文档格式,Excel转CSV中文乱码问题

    一:在Mac上假设你使用Excel打开windows导出的CSV格式文档.你会发现表格中全部的的内容都显示在A列. 那么,怎样恢复正常呢,你能够将CSV格式的文档导入到Excel文档中,这样就正常显示 ...

  3. excel 文档管理服务器,Excel Server Tutorial

    在企事业单位的实际业务中所需要使用的信息,除了数据之外,还包括文档.文档是各种类别和格式的,它们可能是Word文件,如企业的规章制度:可能是AutoCAD文件,如产品设计图纸:也可能是视频.音频文件, ...

  4. excel文档查询服务器,excel服务器数据库查询语句

    excel服务器数据库查询语句 内容精选 换一换 华为云帮助中心,为用户提供产品简介.价格说明.购买指南.用户指南.API参考.最佳实践.常见问题.视频帮助等技术文档,帮助您快速上手使用华为云服务. ...

  5. 服务器导出excel文档,服务器导出excel功能配置

    服务器导出excel功能配置 内容精选 换一换 该任务指导用户完成Linux云服务器的相关配置与其他驱动的安装,为最终生成的Linux裸金属服务器私有镜像做准备.配置Linux云服务器.具体操作请参考 ...

  6. SQL语句——将Excel文档导入数据表中

    INSERT   game_riddles_content(content)     SELECT   *   FROM             OPENROWSET('Microsoft.JET.O ...

  7. java修改另存excel_Word文档导入Excel总变形,调整格式你花了1小时,同事三步就搞定...

    在进行文档编辑的时候我们都会用到Word,利用Word完成文档简历的编辑后,为方便文档的管理我们会把对应的简历文档复制粘贴到Excel当中.但是每次将Word内容直接复制到表格中后,我们都需要进行格式 ...

  8. Java web--利用java操作excel文档

    在web应用程序的开发中,如果需要将Excel文档中的信息导入数据库或将数据库的信息导出到Excel文档中,需要应用程序访问Excel文件.目前,操作Excel文档的java组件主要有Jxl和POI两 ...

  9. ARCGIS导入XY坐标的EXCEL文档,出现无法选择X和Y字段的问题

    近日用ARCGIS导入具有XY坐标的EXCEL文档时出现了无法选择X和Y字段的问题.像下图这样,在x field栏出现的字段应该是Excel文件中的x,但这个字段却没有出现. 最后发现是excel中数 ...

最新文章

  1. 开发健壮的企业级应用的研究
  2. jmeter获取mysql数据并作为请求参数使用
  3. [异步、tensorflow] - 子线程操作tensor,主线程处理tensor
  4. 有一个会泰勒级数的八岁表妹是怎样一种体验?
  5. 华为触摸提示音怎么换_抖音苹果iPhone手机怎么改微信消息提示音 自定义换声音教程...
  6. iPhone 13 Pro系列被抢疯:官网已推迟36天发货
  7. Linux系统内存管理实验报告,Linux 内存管理 综合实验报告.pdf
  8. android 文本分页显示,Android查看带有列表视图的分页器并动态添加文本
  9. Redis(三)源source编译
  10. Oracle约束的使用
  11. 跨时钟域处理所用到的同步器
  12. access里的多步oledb错误_access数据库常见问题处理
  13. 涨姿势 , JavaScript 玩转多线程编程~
  14. 暑假假期训练总结-3
  15. 蕃茄工作法 - 让你轻松应对繁忙的工作
  16. 百度步行导航加poi搜索android,Android Studio百度地图路线规划以及POI搜索功能的实现...
  17. PDF怎么编辑修改内容?分享两种编辑修改方法
  18. Nginx基本使用方法
  19. Ubuntu16.04调整屏幕分辨率至1920*1080
  20. 基于主成分分析PCA的人脸识别

热门文章

  1. 计算机视觉-语义分割论文总结
  2. UltraEdit 注册机使用说明
  3. 为什么 50 欧姆成为了射频传输线的阻抗标准
  4. Spark on Hive Hive on Spark傻傻分不清?
  5. jquery获取元素索引值index()
  6. 汉字笔顺字帖在线生成器网站源码
  7. 【Unity3D日常开发】修改游戏对象的材质颜色
  8. 如何区分本地用户和域用户?
  9. payscale 美国计算机专业,2016PayScale美国大学排名:计算机专业
  10. 由海天瑞声支持,全球最大多领域英语开源数据集发布