1. #region 导入
  2. /// <summary>
  3. /// 导入
  4. /// </summary>
  5. /// <param name="sender"></param>
  6. /// <param name="e"></param>
  7. private void btnImport_Click(object sender, EventArgs e)
  8. {
  9. try
  10. {
  11. DataSet ds = new DataSet();
  12. OpenFileDialog openFileDialog = new OpenFileDialog();
  13. openFileDialog.Filter = "Excel文件(*.xls,*.xlsx)|*.xls;*.xlsx";
  14. if (openFileDialog.ShowDialog() == DialogResult.OK)
  15. {
  16. string filename = openFileDialog.FileName;
  17. string connection = "Provider = Microsoft.Jet.OLEDB.4.0 ; Data Source =" + filename + ";Extended Properties=Excel 8.0";
  18. OleDbConnection thisconnection = new OleDbConnection(connection);
  19. thisconnection.Open();
  20. DataTable tb = thisconnection.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);
  21. string sheetName = tb.Rows[]["TABLE_NAME"].ToString();
  22. string command = "select * from [" + sheetName + "]";
  23. OleDbDataAdapter adapter = new OleDbDataAdapter(command, thisconnection);
  24. adapter.Fill(ds, "[" + sheetName + "]");
  25. thisconnection.Close();
  26. DataTable _DataRows = ds.Tables[];
  27. if (_DataRows.Rows.Count > )
  28. {
  29. //将从Excel读取的数据显示到gd上
  30. ShowItems(_DataRows);
  31. }
  32. else
  33. Commons.ShowMessageEx("所选择文件中没有可导入数据行!", MessageKind.Exclamation);
  34. }
  35. }
  36. catch (Exception ex)
  37. {
  38. if (ex.Message == "外部表不是预期的格式。")
  39. {
  40. Commons.ShowMessageEx("请将数据文件进行另存后,重试导入!", MessageKind.Error);
  41. }
  42. else
  43. MessageBoxEx.ShowError(ex);
  44. }
  45. }
  46. void ShowItems(DataTable ds)
  47. {
  48. this.dg_WelfaresDetails.Rows.Clear();
  49. int err = ;
  50. string Msgs = string.Empty;
  51. decimal mJe = ; //总金额
  52.  
  53. int dgRows = ;
  54. for (int i = ; i < ds.Rows.Count; i++)
  55. {
  56. //检测账户是否存在
  57. DataTable dt = CommonBLL.GetList("*", "V_Finance_EmployeeAccs", "ccode='" + ds.Rows[i]["账户编号"].ToString().Trim() + "' and CNAME='" + ds.Rows[i]["账户名称"].ToString().Trim() + "' and cbank='" + ds.Rows[i]["身份证号"].ToString().Trim() + "'");
  58. if (dt.Rows.Count > )
  59. {
  60. this.dg_WelfaresDetails.Rows.Add();
  61. this.dg_WelfaresDetails.Rows[dgRows].Cells["账户ID"].Value = dt.Rows[]["AccID"].ToString();
  62. this.dg_WelfaresDetails.Rows[dgRows].Cells["账户编号"].Value = ds.Rows[i]["账户编号"].ToString();
  63. this.dg_WelfaresDetails.Rows[dgRows].Cells["账户名称"].Value = dt.Rows[]["cname"].ToString();
  64. this.dg_WelfaresDetails.Rows[dgRows].Cells["身份证号"].Value = dt.Rows[]["cbank"].ToString();
  65. this.dg_WelfaresDetails.Rows[dgRows].Cells["福利金额"].Value = ds.Rows[i]["福利金额"].ToString();
  66. this.dg_WelfaresDetails.Rows[dgRows].Cells["福利备注"].Value = ds.Rows[i]["福利备注"].ToString();
  67. this.dg_WelfaresDetails.Rows[dgRows].Cells["DetailsID"].Value = "";
  68. dgRows++;
  69.  
  70. mJe += Commons.ParseDecimalValue(ds.Rows[i]["福利金额"].ToString());
  71. }
  72. else
  73. {
  74. err++;
  75. Msgs += "Excel中第【" + (i + ).ToString() + "】行," + ds.Rows[i]["账户名称"].ToString().Trim() + "【账户信息有误】,请核查!\r\n";
  76. }
  77. }
  78. labMsgInfo.Text = "总行数:" + this.dg_WelfaresDetails.Rows.Count.ToString() + " " + "总金额:" + mJe.ToString() + " [元]";
  79. if (err == )
  80. {
  81. //允许保存
  82. MessageBoxEx.ShowMessage("浏览Excle中数据成功!", MessageKind.Information);
  83. this.btnDeleteRow.Enabled = true;
  84. this.btnSave.Enabled = true;
  85. }
  86. else
  87. {
  88. //不允许保存
  89. MessageBoxEx.ShowMessage(Msgs, MessageKind.Exclamation);
  90. this.btnSave.Enabled = false;
  91. }
  92. }
  93. #endregion

C# 导入Excel的更多相关文章

  1. 一步步实现ABAP后台导入EXCEL到数据库【3】

    在一步步实现ABAP后台导入EXCEL到数据库[2]里,我们已经实现计划后台作业将数据导入数据库的功能.但是,这只是针对一个简单的自定义结构的导入程序.在实践应用中,面对不同的表.不同的导入文件,我们 ...

  2. 一步步实现ABAP后台导入EXCEL到数据库【1】

    在SAP的应用当中,导入.导出EXCEL文件的情况是一个常见的需求,有时候用户需要将大量数据定期导入到SAP的数据库中.这种情况下,使用导入程序在前台导入可能要花费不少的时间,如果能安排导入程序为后台 ...

  3. [Asp.net]常见数据导入Excel,Excel数据导入数据库解决方案,总有一款适合你!

    引言 项目中常用到将数据导入Excel,将Excel中的数据导入数据库的功能,曾经也查找过相关的内容,将曾经用过的方案总结一下. 方案一 NPOI NPOI 是 POI 项目的 .NET 版本.POI ...

  4. IE8下导入EXCEL数据传到客户端以附件下载

    IE8下导入EXCEL数据传到客户端以附件下载方式出现,而不显示数据,解决方法:以text/html格式返回. HttpResponseMessage message = new HttpRespon ...

  5. java的poi技术读取和导入Excel

    项目结构: http://www.cnblogs.com/hongten/gallery/image/111987.html  用到的Excel文件: http://www.cnblogs.com/h ...

  6. 报表工具如何实现多次导入Excel

    很多人在开发报表的时候会遇到将多张表样相同的excel导入到模板,然后提交至数据库中.但问题是很多情况,在线导入不支持一次性选择多个excel,一次只能选择一个excel,也不能将多个excel中的数 ...

  7. .NET导入Excel到SQL数据库

    在我们开发各类应用型系统,经常会遇到导入导出Excel,为什么会用到他呢?企业或者单位在从无信息化到信息化的一个转变过程.在没有信息化的企业或单位之前,一般都采用Excel来记录相应的数据,做统计计算 ...

  8. SQL Server服务器上需要导入Excel数据的必要条件

    SQL Server服务器上需要导入Excel数据,必须安装2007 Office system 驱动程序:数据连接组件,或者Access2010的数据库引擎可再发行程序包,这样就不必在服务器上装Ex ...

  9. 导入excel数据到数据库

    1.上传excel到服务器 jsp页面代码 <form action="actionname" method="post" id="form1& ...

  10. PLSQL Developer导入Excel数据

    LSQL Developer导入Excel数据 最近处理将Excel数据导入Oracle的工作比较多.之前都是采用Sqlldr命令行导入的方式处理.每次导入不同格式的Excel表数据,都需要先把Exc ...

随机推荐

  1. 解决webstrom 输入法光标不跟随问题

    参考博客地址 https://blog.csdn.net/wang414300980/article/details/79537875 原因是jdk版本问题,下载jdk jbsdk8u152b1036 ...

  2. tinyxml源码解析(上)

    转载于:http://www.cnblogs.com/marchtea/archive/2012/11/09/2762669.html 前言: 前段时间做功能可行性的时候简单的使用了tinyxml.在 ...

  3. UVA10462:Is There A Second Way Left? (判断次小生成树)

    Is There A Second Way Left? Description: Nasa, being the most talented programmer of his time, can’t ...

  4. Spring 容器AOP的实现原理——动态代理

    参考:http://wiki.jikexueyuan.com/project/ssh-noob-learning/dynamic-proxy.html(from极客学院) 一.介绍 Spring的动态 ...

  5. 从samsung提供内核进行移植

    1.尝试编译分析结果 配置编译下载尝试 (1)检查Makefile中ARCH和CROSS_COMPILE(2)make xx_defconfig(3)make menuconfig(4)make -j ...

  6. Codeforces 351B Jeff and Furik 概率 | DP

    B. Jeff and Furik time limit per test 1 second memory limit per test 256 megabytes input standard in ...

  7. Spring理论基础-控制反转和依赖注入

    第一次了解到控制反转(Inversion of Control)这个概念,是在学习Spring框架的时候.IOC和AOP作为Spring的两大特征,自然是要去好好学学的.而依赖注入(Dependenc ...

  8. Codeforces Round #478 (Div. 2)

    题目链接:http://codeforces.com/contest/975 A. Aramic script time limit per test:1 second memory limit pe ...

  9. bzoj 1079 DP

    比较容易看出来是DP,但是如果我们记录每一种颜色还剩多少种的话,消耗的转移的时间复杂度5^15,但是我们考虑到每一种颜色,如果数量相同的话,其实是等效的,所以我们用w[a][b][c][d][e][l ...

  10. js_读【javascript面向对象编程指南】笔记

    写在前面: 工欲善其事,必先利其器.编程的器,是前人总结的经验,常言道站在巨人的肩膀上开发,往往比自己另辟蹊径容易的多.经验藏于书,故有书中自有颜如玉,书中自有黄金屋,我也一度认为读书要花费很多时间, ...