采用OLEDB数据库方式向指定的Excel添加数据,怪像!
我们都知道,对Excel进行操作,其实方法是多种多样的,例如采用Office.Interop;例如采用ASPCell;例如采用NPOI;再例如采用数据库连接的方式OLEDB,etc.
还是先说说背景吧。背景是公司项目中,有一个大模块,以前采用的是Office.Interop,但是在自动化机子上面由于Office没有安装或者没有激活的情况,那么就会出现一些列的错误信息。提示的信息也是底层的什么COM......方正就是说明你的电脑上面没有安装Office或者没有激活Office,这样导致自动化机子经常报错。那么测试人员就不高兴了,人家就说,其他模块也有导入导出,也是操作Excel呀,为什么就这块出现问题呢。需要我定位查看。我通过查看代码,问题跟踪....一些常规的排查,发现我负责的模块导入导出采用的是Office.Interop组件(维护以前的代码),为什么不采用其他的控件呢?可能公司对其他插件的安全或者其他方面着想,没有使用像NPOI等类库。再者,其他模块都是采用的OLEDB,而且听说我负责这个模块相当的坑爹,我需要将所有的采用了Office.Interop的地方都使用OLEDB替换。
链接Office2003
Microsoft.Jet.OLEDB.4.0 ; Data Source =filePath;Extended Properties=Excel 8.0
链接Office2007+
Microsoft.Ace.OleDb.12.0;data source=filePath;Extended Properties='Excel 12.0; HDR=Yes; IMEX=1'
参数这些我都不说了,大家基本上都知道的,像什么增删改查,我都不一一举例了,我们模块中都是采用末班文件,导出文件,就是将模板文件拷贝到指定目录下面,再将数据插入到相应的文件中。
我们模板文件中有很多个Sheet,其中有一个Sheet只有个字段,在导出*.xls(Office2003)的时候,发现一个问题,那就是在单表单列的时候数据是从第三行开始插入的。
using (OleDbConnection conn = new OleDbConnection(connstr))
{
conn.Open();
OleDbCommand cmd = conn.CreateCommand();
for (int i = 0; i < data.Length; i++)
{
builder.Append("?,");
if (cmd.Parameters.Count <= i)
{
OleDbParameter para = cmd.CreateParameter();
para.OleDbType = OleDbType.VarChar;
cmd.Parameters.Add(para);
}
cmd.Parameters[i].Value = data[i] ?? string.Empty;
}
cmd.CommandText = string.Format("INSERT INTO [{0}$] VALUES ({1})", sheetName, builder.ToString().Trim(','));
cmd.ExecuteNonQuery();
}
在对一个表只有一列的时候出现了一下的结果。
出现这样的情况,想请园子里面的高手看看,是否是我哪里操作不对,因为在导出*.xlsx的时候是不会出现这样的情况。而且这样的情况在*.xls中单表单列的时候出现。
麻烦各位了!!
采用OLEDB数据库方式向指定的Excel添加数据,怪像!的更多相关文章
- PowerDesigner创建表 拷贝创建表语句 SQLSERVER创建数据库 使用查询 创建表 并且添加数据
PowerDesigner创建表 : 1.双击打开PowerDesigner 2.双击打开Create model 3左键点击Model types,再点击Physical Data m ...
- SAP SMARTFORMS-基于内存方式在report程序中传递数据到smartforms显示
一.准备工作 1.新建include程序 1> include程序名字:ZDD_INC_0104 2> ZDD_INC_0104 程序中的内容为 2.使用T-CODE :SE11新建两个 ...
- 向ACCESS数据库中的表导入EXCEL表,在 System.Data.OleDb.OleDbException 中第一次偶然出现的“System.Data.dll”类型的异常
向ACCESS数据库中的表导入EXCEL表,EXCEL表Sheet1中与ACCESS数据库表中的关键字对应的列的值,不能与数据库中表的主键项值重复,不然就会出现 在 System.Data.OleDb ...
- Spring-Security (学习记录四)--配置权限过滤器,采用数据库方式获取权限
目录 1. 需要在spring-security.xml中配置验证过滤器,来取代spring-security.xml的默认过滤器 2. 配置securityMetadataSource,可以通过ur ...
- (2)OLEDB数据库操作
1.首先要引入 System.Data.OracleClient.dll 2.引入命名空间 using System.Data.OleDb; OleDb类 https://msdn.microsof ...
- 向MySql数据库导入excel表数据
最近要开发一个小的答题系统,如果题目人工录入那确实很麻烦.所以想到是不是可以从用一些现有数据格式的文件导入数据.在网上查了一下,看到有关于将excel的数据导入到mysql的方法.所以将题库数据整理成 ...
- 将Excel中数据导入数据库(一)
在工作中经常要将Excel中数据导入数据库,这里介绍一种方法. 假如Excel中的数据如下: 数据库建表如下: 其中Id为自增字段: Excel中数据导入数据库帮助类如下: using System; ...
- springMVC(5)---导入excel文件数据到数据库
springMVC(5)---导入excel文件数据到数据库 上一篇文章写了从数据库导出数据到excel文件,这篇文章悄悄相反,写的是导入excel文件数据到数据库.上一篇链接:springMVC(4 ...
- 数据在内存中的存储方式( Big Endian和Little Endian的区别 )(x86系列则采用little endian方式存储数据)
https://www.cnblogs.com/renyuan/archive/2013/05/26/3099766.html 1.故事的起源 “endian”这个词出自<格列佛游记>.小 ...
随机推荐
- WCF学习总结
1. WCF简介 WCF (Windows Communication Foundation)是由微软发展的一组数据通信的应用程序开发借口.WCF由服务地址(Address) .协议绑定 (Bindi ...
- Mac OS 下 mysql 找不到 mysql.sock 的问题
mysql.sock 无法找到一般存在两种问题,一是mysql服务未启动,mysql.sock没有生成,二是mysql.sock的指向位置出错,在指向位置加个mysql.sock的软链接就可以解决. ...
- Mac +WebStorm+nodeJs+Freemarker.js的安装与使用
第一步用webStorm新建node+express项目 第二步执行npm i –save freemarker.js,安装 freemarker.js 模块 第三步安装java jdk包 jdk包地 ...
- Python自动化测试 (九)urllib2 发送HTTP Request
urllib2 是Python自带的标准模块, 用来发送HTTP Request的. 类似于 .NET中的, HttpWebRequest类 urllib2 的优点 Python urllib2 ...
- Spring AOP基本概念
Spring AOP基本概念 目录 Spring AOP定义 AOP基本术语 通知类型 AOP定义 AOP基本术语 切面( Aspect ):一个能横切多个对象的模块化的关注点.对Spring AOP ...
- Handle机制的原理
Android提供了Handle和Looper来满足线程间的通信.Handle先进先出原则.Looper类用来管理特定线程内对象之间的消息交换(Message Exchange). 1.Looper: ...
- PHP分页代码
} <a href="fenye.php?page=<?php echo <?php } <a href="fenye ...
- IOS Core Animation Advanced Techniques的学习笔记(一)
转载. Book Description Publication Date: August 12, 2013 Core Animation is the technology underlying A ...
- Ubuntu上安装MySql过程,以及遇到的一些问题
今天在Ubuntu服务器上安装MySql的时候遇到了一些问题,记录下来,以防以后忘记. 安装环境:Ubuntu14.04 安装命令: //安装Mysal服务端//会提示输入root密码 sudo ap ...
- 一个简单的游戏开发框架(七.动作Motion)
发现还没谈到最基本也是最重要的问题,怎么画图,画动画? 在原版cocos2d-x里画动画比较麻烦,见cocos2d-x学习笔记04:简单动画 cocostudio扩展出CCArmature类,就比较简 ...