采用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”这个词出自<格列佛游记>.小 ...
随机推荐
- 一个会Flash的人来说CSS3
以前在上大学的时候学过Flash,而且以前做一些网页效果都是用的Flash,现在才知道以前我所用的方法是有多麻烦.在学过CSS3之后,我发现以前要用Flash写半天的效果,现在用几句CSS3代码就搞定 ...
- <c:forEach>循环list,一个表格两列数据
参考: http://zhidao.baidu.com/link?url=apG5dUmW7RjB5eOYKSWOWdKd7nxFpkDO4n3i8R6MWYKl7E2JC1OCtPILF4G4EUO ...
- vue-新建项目出错情况分析
1.状况一: 按照正常流程新建项目,最终运行npm run dev 的时候,就频频出错,最终找出问题原来在于部分依赖包丢失了,于是重新安装所需要的依赖包再运行项目便好了!
- innodb 存储引擎特性
使用独立表空间后,系统表空间存储什么内容呢? 1.innodb 数据字典信息 和存储引擎相关. frm 是服务器的数据字典和存储引擎无关. 2. undo 回滚段. 可以单独存储. ...
- ORM
参考:http://wenku.baidu.com/link?url=Kc9KHESrzLUp8KtcQH4Ls4QQpKosNiyQAVgkNX-UN4j9QuRhS-Hy5FGJjmWW2oszT ...
- JS-DOM基础
1 JS-DOM 全称:document object model 1.1 获取页面元素 getElementsByTagName():无论元素的数量是多少,都会存入数组 getElement ...
- Request和response的用法总结
Request 个我总结:只要记住 只要是有关于客户端请求的信息,都可以藉由它来取得,例如请求标头.请求方法.请求参数.使用者IP等等信息. 3.什么情况下为响应?什么情况下为请求? 简单一句话,请求 ...
- lnmp 设置ci pathinfo和去掉index.php
LNMP上各个版本pathinfo各个版本的设置基本一样: lnmp v1.1上,修改对应虚拟主机的配置文件去掉#include pathinfo.conf前面的#,把try_files $uri = ...
- Bootstrap <基础三十>Well
Well 是一种会引起内容凹陷显示或插图效果的容器 <div>.为了创建 Well,只需要简单地把内容放在带有 class .well 的 <div> 中即可.下面的实例演示了 ...
- ICEM(2)—机翼翼稍网格绘制
有时我们需要观察翼尖涡,这就需要将机翼全部被网格包围.但是网上比较多的教程都是机翼边缘即为网格边缘,机翼位于网格内部的不多.若是直接将网格拉伸,则会产生结构和非结构网格交错的情况.下面是绘制步骤 1. ...