最近忙于winform的项目,客户想要将数据保存成excel表格的形式,考虑到数据量不是很大,所以打算用微软自带的excel com组件来实现,几经周折才发现效率实在是太低,不到2K行的数据,要运行7s的时间,这让客户情何以堪,所以改用ado,但是只能增删改查数据,无法创建excel表,如果要创建,最好还是用com组件,代码:

 string connStr = "";string fileType = System.IO.Path.GetExtension(FileName);if (string.IsNullOrEmpty(fileType)){return null;}if (fileType == ".xls"){connStr = "Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=" + FileName + ";" + ";Extended Properties=\"Excel 8.0;HDR=YES;IMEX=1\"";}else{connStr = "Provider=Microsoft.ACE.OLEDB.12.0;" + "Data Source=" + FileName + ";" + ";Extended Properties=\"Excel 12.0;HDR=YES;IMEX=1\"";  }string sel_F = "select * from [{0}]";OleDbConnection conn = null;OleDbDataAdapter da = null;System.Data.DataTable dtSheetName = null;DataSet ds = new DataSet();try{conn = new OleDbConnection(connStr);conn.Open();string SheetName = "";dtSheetName = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, new object[] { null, null, null, "TABLE" });da = new OleDbDataAdapter();for (int i = 0; i < dtSheetName.Rows.Count; i++){SheetName = (string)dtSheetName.Rows[i]["TABLE_NAME"];/*** 读取出来无效SheetName一般情况最后一个字符都不会是$。* 如果SheetName有一些特殊符号,读取出来的SheetName会* 自动加上单引号,比如在Excel中将SheetName编辑成:MySheet(1),* 此时读取出来的SheetName就为:'MySheet(1)$',所以判断最后一个* 字符是不是$之前最好过滤一下单引号。* */if (SheetName.Contains("$") && SheetName.Replace("'", "").EndsWith("$")){continue;}da.SelectCommand = new OleDbCommand(string.Format(sel_F, SheetName), conn);da.Fill(ds,SheetName);}}catch (Exception err){Console.WriteLine(err.Message + "\n" + err.StackTrace);}finally{conn.Dispose();conn.Close();da.Dispose();}

以上为查询,但是当我进行插入修改操作时却提示 “操作必须使用一个可更新的查询”,查了半天资料,终于找到原因原来是连接字符串的问题,HDR ( HeaDer Row )设置若指定值为Yes,代表 Excel 档中的工作表第一行是栏位名称若指定值為 No,代表 Excel 档中的工作表第一行就是資料了,IMEX ( IMport EXport mode )设置MEX 有三种模式,各自引起的读写行为也不同,容後再述:0 is Export mode1 is Import mode2 is Linked mode (full update capabilities),改为2,搞定。即字符串为:

connStr = "Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=" + FileName + ";" + ";Extended Properties=\"Excel 8.0;HDR=YES;IMEX=2\"";

转载于:https://www.cnblogs.com/rinysky/p/3284646.html

C#操作 excel表格相关推荐

  1. python excel操作单元格_python 操作excel表格的方法

    说明:由于公司oa暂缺,人事妹子在做考勤的时候,需要通过几个excel表格去交叉比对员工是否有旷工或迟到,工作量大而且容易出错. 这时候it屌丝的机会来啦,花了一天时间给妹子撸了一个自动化脚本. 1. ...

  2. 使用VC来操作Excel表格的源码

    下面的代码段是关于使用VC来操作Excel表格的的代码,应该对小伙伴们也有用. if (CoInitialize(NULL) != 0) { AfxMessageBox("初始化COM支持库 ...

  3. python 编辑excel需要什么包_Python 中操作EXCEL表格的包

    今天,马云爸爸又来贡献金句了,比王健林公公一亿一个小目标还高,"一个月挣一二十个亿很难受!!!",作为在传统企业主要为电商部门提供数据分析的数据分析师,体验太深刻了. 双11前后, ...

  4. android jxl.jar 使用,使用jxl.jar在Android中操作Excel表格——重中之重——对隐藏表的处理...

    曾简单了解过C#,将Excel(数据库表)表中的数据导入到C#中,使用C#制作的图形化界面进行对Excel表中数据进行操作. 今天想试试,在Android中导入Excel表格进行操作.在网上查阅资料, ...

  5. 【web开发】☆★之利用POI操作Excel表格系列教程【6】遍历工作簙行和列取值

    [web开发]☆★之利用POI操作Excel表格系列教程[6]遍历工作簙行和列取值 package com.xiaoye.demo; import java.io.FileInputStream; i ...

  6. Python操作Excel表格(二)

    Python操作Excel表格第二弹 本博客在前一篇博客基础上增加了若干函数,如按列寻找值,查重和增强型查重.数据写入等相关代码.实现了类似Sql的查询(注解中的SQL语句仅做参考,并非可执行SQL) ...

  7. java操作excel方法_Java实现操作excel表格的方法

    Java开发人员开发的项目需要自动读取数据,其实我们还需要用程序处理Excel数据表,接下来爱站技术频道小编就为大家讲解Java实现操作excel表格的方法吧! 一:查 (查找本地指定位置的excel ...

  8. python openpyxl操作Excel表格

    原创:未经允许不得转载,转载需标明出处 打算分为两个部分: 第一部分为:操作Excel表格 第二部分为:操作Excel图表 现在发布为第一部分内容 在最近的项目中的使用到了提取Android帧率日志, ...

  9. python操作xls_python操作excel表格的方法

    这篇文章我们来讲一下在网站建设中,python操作excel表格的方法.本文对大家进行网站开发设计工作或者学习都有一定帮助,下面让我们进入正文. 说明:由于公司oa暂缺,人事妹子在做考勤的时候,需要通 ...

  10. Java 操作excel表格 - JXL(Java excel api)

    Java 操作excel表格 Java 操作 Excel 最常用的就是JXL(Java excel api)和POI,用起来挺简单的,不过相应的其功能也并非很强大,够用就行! 首先,下载jxl.jar ...

最新文章

  1. Winform中实现新增和更新共用一个页面的示例流程
  2. 六、MySQL DML数据操纵语言学习笔记(插入、修改、删除详解 + 强化复习)
  3. 一个封装比较完整的FTP类——clsFTP
  4. python内存注入代码_Python模板注入
  5. EFGrid ---- copy 属性
  6. 码农们的聚餐,会复杂到什么程度?
  7. 卷积神经网络--可视化中间激活
  8. 学习笔记_java8新特性
  9. 全球与中国高密度聚乙烯塑料桶市场深度研究分析报告
  10. [原创]威胁猎人 | 2018年上半年短视频行业黑灰产研究报告
  11. worldpress或zblog安装时建立数据库连接时出错
  12. 实时系统与分时系统的区别
  13. 雷达的工作原理示意图_倒车雷达的工作原理是什么 倒车雷达原理图
  14. 高德AR 车道级导航技术演进与实践
  15. uIP TCP/IP协议栈
  16. 谁打开了便携笔记本的潘多拉盒子
  17. 改造智能风扇之——BLDC风扇改造软件篇
  18. 寒假2018培训:DAY1
  19. js获取元素样式-行内样式、内部样式、外部样式
  20. umeditor编辑器插件图片尺寸太大问题解决

热门文章

  1. CVPR2021 最佳论文候选—提高图像风格迁移的鲁棒性
  2. 腾讯开源视频动作检测算法DBG,打破两项世界纪录!
  3. Zbrush 2019有哪些新功能需要你的探索,赶紧来看看
  4. java线程深入_深入聊聊Java多线程
  5. 【TensorFlow】TensorFlow从浅入深系列之十二 -- 教你深入理解卷积神经网络中的池化层
  6. 【OpenCV】OpenCV实战从入门到精通之 -- 显示创建Mat对象的七种方法
  7. 【EI会议】 2021年图像处理与智能控制国际学术会议(IPIC 2021)
  8. 【资源下载】512页IBM沃森研究员Charu最新2018著作《神经网络与深度学习》(附下载链接)
  9. 面向小姐姐的编程——JAVA面向对象之继承(三)
  10. python专业方向 | 文本相似度计算