当Excel导入成为需要时,之前的导出Excel为html方式的方法就受阻了,于是,需要开始新的百度与google来解决问题。

前提为OLEDB+Excel。

根据需求,多数是对于表的数据的导入。于是产生这么一个需求过程:

1。准备一个空的标准Excel。

2。根据表名查询字段

3。动态生成字段表头

4。Copy空的标准Excel,循环表头生成新的标准Excel以二进制流导出。

5。用户再根据表头的提示添加数据再上传提交。

(1步和4步为大体上为网上搜出来的想法)

过程遇到这么点问题:

问题1:

网上1步和4步的想法,是先做好标准Excel,直接导出。所以代码上用的insert into table直接往表添加数据了。

于本人的需求有点差距了,异常折腾了半天才折腾到用了Create Table。于是引发了第二个问题:

问题2:

在为Excel Create Table 时,报“不能修改表'xxxx' 的设计。它在只读数据库中”,经自己这么一想,再经网上那么一忽悠。权限问题!。for遍了网络,都直指这个权限问题。

于是就是一堆的往文件夹添加IUser_用户名或EveryOne权限的解决方案,是挺折磨人的,检查了N百遍还是报的错。

最后在某处看到一条关于数据链接链接的解释如下:

代码
如果把Excel看作数据库,那么要注意连接字符串: private readonly string readConn = "Provider=Microsoft.Jet.OLEDB.4.0;" +"Data Source={0};"               +"Extended Properties='Excel 8.0;HDR=YES;IMEX=1;'"; HDR=YES 表示将sheet的第一行作为列名,所以我们默认excel的首行是列名。 IMEX=1 表示大致的意思是使用导入的模式,把数字也作为字符串来操作。     有一点很重要。IMEX=1,是一种导入的模式,所以首先这个文件要存在,如果不存在会报错:“Microsoft Jet 数据库引擎找不到对象'…\Customer.xls'。请确定对象是否存在,并正确地写出它的名称和路径”,而且这样写了以后就算文件是存在的,还有一个问题是不能对文件更新的,会提示“不能修改表 'sheet1' 的设计。它在只读数据库中”等错误,甚至还有提示权限的问题。

于是去掉IMEX=1,问题解决。

于是问题3也产生了:

新建的表默认都排在最后了,无法排在第一个,这样用户打开看到空的就不好,于是drop table xxx---》无效

忽悠下自己是不是方法不对头,上网搜。于是又发现这么段说明:

虽然 Jet OLE DB 提供程序允许您在 Excel 工作簿中插入和更新记录,但是不允许进行 DELETE(删除)操作。如果您尝试对一个或多个记录执行 DELETE 操作,您将收到以下错误信息: 
Deleting data in a linked table is not supported by this ISAM. 这是将 Excel 工作簿作为数据库进行处理时所固有的限制。

于是,想了一个比较搜的主意

在空的Excel里删除两个Sheet(默认有三个,系统限制必须存在一个)

然后将剩下的一个改名叫“xxx说明",在里面写操作说明。

至此,将就解决,还有很多工作排成队在后面......

版权声明:本文原创发表于 博客园,作者为 路过秋天

操作Excel导入的问题(转)的更多相关文章

  1. NPOI操作Excel导入DataTable中

    using NPOI.HSSF.UserModel; using NPOI.SS.UserModel; using System.Data; using System.IO; using NPOI.X ...

  2. Open XML操作Excel导入数据

    项目中发现使用OleDb(using System.Data.OleDb)相关对象处理Excel导入功能,不是很稳定经常出问题,需要把这个问题解决掉.项目组提出使用OpenXML来处理Excel的导入 ...

  3. POI操作Excel导入和导出

    Apache的POI组件是Java操作Microsoft Office办公套件的强大API,当中对Word,Excel和PowperPoint都有支持,当然使用较多的还是Excel.由于Word和Po ...

  4. apache POI 操作excel<导入导出>

    1.首先导入maven依赖 <!-- POI核心依赖 --> <dependency> <groupId>org.apache.poi</groupId> ...

  5. 【原创】POI操作Excel导入导出工具类ExcelUtil

    关于本类线程安全性的解释: 多数工具方法不涉及共享变量问题,至于添加合并单元格方法addMergeArea,使用ThreadLocal变量存储合并数据,ThreadLocal内部借用Thread.Th ...

  6. ThinkPHP3.2.3使用PHPExcel类操作excel导入读取excel

    方法一: 1. 下载PHPExcel并保存在如下位置: 2. 在控制器中引用 vendor("PHPExcel.PHPExcel"); $objReader = \PHPExcel ...

  7. ASP.NET Core使用EPPlus操作Excel

    1.前言 本篇文章通过ASP.NET Core的EPPlus包去操作Excel(导入导出),其使用原理与NPOI类似,导出Excel的时候不需要电脑上安装office,非常好用 2.使用 新建一个AS ...

  8. TP5使用phpoffice phpexcel包操作excel(导出)

    安装composer(window版本) 安装composer(MAC版本) 安装composer(Linux版本) 在PhpStorm配置 导出excel 1.使用composer安装phpoffi ...

  9. ThinkPHP3.2.3使用PHPExcel类操作excel导出excel

    如何导入excel请看:ThinkPHP3.2.3使用PHPExcel类操作excel导入读取excel // 引入PHPExcel类 import("Org.Util.PHPExccel& ...

随机推荐

  1. HDU 1863 畅通工程

    畅通工程 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submissi ...

  2. mysql优化:连接数

    有时候我们会遇见"MySQL: ERROR 1040: Too many connections"的异常,一种原因是訪问量过高,MySQLserver抗不住,这个时候就要考虑添加从 ...

  3. android153 笔记 5

    52. Linux中跨进程通信的几种方式 . linux编程全部是基于文件管理的. # 管道( pipe ):管道也是一个文件,一个进程负责读一个进程负责写,管道是一种半双工(2边可以通信但是不能是同 ...

  4. android144 360 快捷方式

    package com.example; import android.net.Uri; import android.os.Bundle; import android.app.Activity; ...

  5. mysql 5.6 binlog组提交

    mysql 5.6 binlog组提交实现原理 http://blog.itpub.net/15480802/viewspace-1411356 Redo组提交 Redo提交流程大致如下 lock l ...

  6. Android:TabHost实现Tab切换

    TabHost是整个Tab的容器,包含TabWidget和FrameLayout两个部分,TabWidget是每个Tab的表情,FrameLayout是Tab内容. 实现方式有两种: 1.继承TabA ...

  7. 更改gps.conf来加快GPS搜星速度

    国内NTP ServerNTP全称是Network Time Protocol,是用来让计算机之间实现时间同步的协议,而发布这种校对时间的服务器,就是NTP Server!一般来说客户端与服务器之间的 ...

  8. linux进程后台运行的几种方法

    转载:http://hi.baidu.com/ntuxmzvdpzbnuxq/item/79131b93f606a348f0421562 我 们经常会碰到这样的问题,用 telnet/ssh 登录了远 ...

  9. iOS10全新推送功能的实现

    从iOS8.0开始推送功能的实现在不断改变,功能也在不断增加,iOS10又出来了一个推送插件的开发(见最后图),废话不多说直接上代码: 在开始之前需要打开一个推送开关,不然无法获取deviceToke ...

  10. Http Statis 500 -错误笔记

    HTTP Status 500 - type Exception report message description The server encountered an internal error ...