我们都知道,对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添加数据,怪像!的更多相关文章

  1. PowerDesigner创建表 拷贝创建表语句 SQLSERVER创建数据库 使用查询 创建表 并且添加数据

    PowerDesigner创建表 : 1.双击打开PowerDesigner   2.双击打开Create model 3左键点击Model  types,再点击Physical    Data  m ...

  2. SAP SMARTFORMS-基于内存方式在report程序中传递数据到smartforms显示

    一.准备工作 1.新建include程序 1> include程序名字:ZDD_INC_0104 2> ZDD_INC_0104  程序中的内容为 2.使用T-CODE :SE11新建两个 ...

  3. 向ACCESS数据库中的表导入EXCEL表,在 System.Data.OleDb.OleDbException 中第一次偶然出现的“System.Data.dll”类型的异常

    向ACCESS数据库中的表导入EXCEL表,EXCEL表Sheet1中与ACCESS数据库表中的关键字对应的列的值,不能与数据库中表的主键项值重复,不然就会出现 在 System.Data.OleDb ...

  4. Spring-Security (学习记录四)--配置权限过滤器,采用数据库方式获取权限

    目录 1. 需要在spring-security.xml中配置验证过滤器,来取代spring-security.xml的默认过滤器 2. 配置securityMetadataSource,可以通过ur ...

  5. (2)OLEDB数据库操作

    1.首先要引入 System.Data.OracleClient.dll 2.引入命名空间 using System.Data.OleDb; OleDb类  https://msdn.microsof ...

  6. 向MySql数据库导入excel表数据

    最近要开发一个小的答题系统,如果题目人工录入那确实很麻烦.所以想到是不是可以从用一些现有数据格式的文件导入数据.在网上查了一下,看到有关于将excel的数据导入到mysql的方法.所以将题库数据整理成 ...

  7. 将Excel中数据导入数据库(一)

    在工作中经常要将Excel中数据导入数据库,这里介绍一种方法. 假如Excel中的数据如下: 数据库建表如下: 其中Id为自增字段: Excel中数据导入数据库帮助类如下: using System; ...

  8. springMVC(5)---导入excel文件数据到数据库

    springMVC(5)---导入excel文件数据到数据库 上一篇文章写了从数据库导出数据到excel文件,这篇文章悄悄相反,写的是导入excel文件数据到数据库.上一篇链接:springMVC(4 ...

  9. 数据在内存中的存储方式( Big Endian和Little Endian的区别 )(x86系列则采用little endian方式存储数据)

    https://www.cnblogs.com/renyuan/archive/2013/05/26/3099766.html 1.故事的起源 “endian”这个词出自<格列佛游记>.小 ...

随机推荐

  1. 学习iOS

    最近想学习一下iOS开发,不过一点基础都没有,得先从熟悉object-C语法开始,在此把学习中的一些知识点作为记录. mac pro常用操作 学习ios[1]Objective-C 基本语法 学习io ...

  2. SQL SERVER 2008

    sql server 2008 r2 下载安装教程 sql server 2008 是微软公司开发的一套数据库管理系统.是目前大型数据库中常用数据库之一.性能稳定,功能强大,是面向中大型企业的一款数据 ...

  3. 在为ListView设置adapter时出错

    为listView设置adapter,代码如下: SimpleAdapter simpleAdapter = new SimpleAdapter(this, listItems, R.layout.m ...

  4. SQL语句导致cpu占用如此高

    一般我们可以使用sql server自带的性能分析追踪工具sql profiler分析数据库设计所产生问题的来源,进行有针对性的处理.但我们也可以通过自己写SQL语句来有针对性的进行性能方面的查询.通 ...

  5. Cogs 14. [网络流24题] 搭配飞行员

    这道题其实蛮好想的,因为分为正,副飞行员.所以就把正飞行员当作Boy,副飞行员当作Girl.然后做Hungry即可. #include<bits/stdc++.h> using names ...

  6. href链接的地址

    tencent://message/?uin=QQ号. 链接一个弹出框.指向一个QQ号.

  7. 【转】Swift之 ? 和 !

    原文地址:http://joeyio.com/ios/2014/06/04/swift---/ Swift语言使用var定义变量,但和别的语言不同,Swift里不会自动给变量赋初始值,也就是说变量不会 ...

  8. eclipse 相同变量高亮显示

    windows-> preferences-> java-> Editor-> Mark Occurences

  9. RASPBERRY PI 外设学习资源

    参考: http://www.siongboon.com/projects/2013-07-08_raspberry_pi/index.html Raspberry Pi         Get st ...

  10. elasticsearch相关文章

    http://blog.csdn.net/laigood12345/article/category/1113868