关于Excel导入的问题记录

当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百遍还是报的错。

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

 

ExpandedBlockStart.gif代码
如果把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---》无效

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

 

ExpandedBlockStart.gif代码
虽然 Jet OLE DB 提供程序允许您在 Excel 工作簿中插入和更新记录,但是不允许进行 DELETE(删除)操作。如果您尝试对一个或多个记录执行 DELETE 操作,您将收到以下错误信息: 
Deleting data 
in a linked table is not supported by this ISAM.


这是将 Excel 工作簿作为数据库进行处理时所固有的限制。

 

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

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

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

 

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

转载于:https://www.cnblogs.com/cyq1162/archive/2010/03/09/1681816.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/264010.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

AIX-vi操作-提示Unknown terminal type的问题解决方法

AIX-vi操作-提示Unknown terminal type的问题解决方法AIX Version 5.3$ vi /etc/profilelinux: Unknown terminal type[Hit return to continue] :q!I dont know what kind of terminal you are on - all I have is linux.[Using open mode]……临时办法,下次启动失…

Java性能调优工具

2019独角兽企业重金招聘Python工程师标准>>> 1、JDK命令行工具 1.1、jps命令 jps用于列出Java的进程,jps可以增加参数,-m用于输出传递给Java进程的参数,…

python3将字符串unicode转换为中文

在我们的python使用过程中,可能会遇到这样的情况: 我们得到的中文数据是unicode编码类型的,这在python中是没有问题的,可以直接打印显示为中文。 但是,如果我们需要和其它语言或前端进行交互或需要存到数据库中的时候&…

连接SQL Server文件集锦

在新建SqlConnection对象,连接资料库时连接失败,出现“常规网络错误。请检查您的网络文档。” DataSource直接写IP的话,通信协议是按照TCP/IP协议连接的,如果服务器端TCP/IP服务没有开启,则会报错“不允许远程连接” A…

python 波形发生_事件与信号

事件 Event所有的GUI程序都是事件驱动的。事件主要由用户触发,但也可能有其他触发方式:例如网络连接、window manager或定时器。当我们调用QApplication的exec_()方法时会使程序进入主循环。主循环会获取并分发事件。在事件模型中,有三个参与…

数据结构与算法6—树

树 树的表示方式有 树形图表示法:逻辑结构描述直观 嵌套集合表示法(文氏图表示法) 凹入表示法 广义表表示法 二叉树 二叉树是另一种重要的树形结构,是度为2的有序树,它的特点是每个结点至多有两棵子树。 二叉树的递归定义 二叉树…

LNMP一键安装包在安装完成后的一些安全设置

2019独角兽企业重金招聘Python工程师标准>>> 1.修改php.ini中的 base_dir 设定为:open_basedir/home/wwwroot/:/tmp/, 这样,脚本只能在wwwroot和tmp下读取。 2.设定权限,防止跨目录列表。 chown root:root wwwroot c…

docker基础应用

环境: centos 7 docker 19.03.0-beta3 192.168.10.10 关于如何安装docker请参考:https://www.cnblogs.com/caesar-id/p/10857312.html 1、查找合适的版本 [rootlocalhost ~]# docker search centos 2、下载centos镜像 [rootlocalhost ~]#docker pull c…

java 简单数据类型_java基本数据类型

基本数据类型JAVA中一共有八种基本数据类型,他们分别是byte、short、int、long、float、double、char、boolean类型型别字节取值范围byte整型1byte-27 ~ 27-1short整型2byte-215 ~ 215-1int整型4byte-231 ~ 231-1long整型8byte-263 ~ 263-1float浮点型4byte3.402823…

Win7中IIS7.0安装及ASP环境配置

打开控制面板中“程序”: “程序”中“打开或关闭Windows功能”: 如图,安装IIS7时需要选择要使用的功能模块: IIS7安装完成之后可以在开始菜单的所有程序中看到“管理工具”,其中有一个“Internet信息服务管理器”,如果没有可以按以下步骤…

java 3number_java 数据Number、Math

一个初出茅庐的小子与大家共享一些关于Number和Math的使用,因水平有限,难免有写的不完善的地方,嘻嘻。看完之后,希望可以留下你珍贵的指导意见。The Numbers Classes在写代码的时候,也许会使用到java各种的基本数据类型…

HOG(方向梯度直方图)

结合这周看的论文,我对这周研究的Histogram of oriented gradients(HOG)谈谈自己的理解: HOG descriptors 是应用在计算机视觉和图像处理领域,用于目标检測的特征描写叙述器。这项技术是用来计算局部图像梯度的方向信息的统计值。这样的方法跟边缘方向直…

保留数据给硬盘增加分区

我的块硬盘只有一个分区,里面还有数据,但是想再划分一个区,在win10系统下是这样操作的 首先,我的硬盘的文件系统是fat32,先通过命令提示符把文件系统转换成NTFS,转换前“压缩卷”是灰色的 convert c: /fs:n…

c# 简单序列化

序列化:是将对象状态转换为可保持或传输的格式的过程,原因有两个,第一是想永久的保存这些数据,以便将来可以重建这些数据。第二是想把数据从一个应用程序域发送到另外一个应用程序域中去。反序列化:就是把存储介质中的…

windows mobile开发循序渐进(6)windows mobile device center 使用问题

由于个人中邪,在经历一次windows 7安装失败之后,贼心不死,于昨天又重新安装了windows 7,终于成功。 回到windows mobile的开发上来呢,首先是配置环境,按照之前的经验,比较顺利的安装了virtual p…

mysql 代理 a_Keepalived+Mysql+Haproxy

#dd dd0 配主从vi /etc/my.cnf[mysqld]server-id 1log-bin mysql-binbinlog-ignore-db mysql,information_schemabinlog_format mixedauto-increment-increment 2auto-increment-offset 1#ddgrant replication slave on *.* to dd192.168.55.% identified by 123456show …

你真的了解Ioc与AOP 吗?(2)

三、基于配置文件和Reflection的工厂模式 为了消除MainApp对其它组件的依赖性,我们引入工厂模式,并且根据配置文件指定的装配规程,利用.net提供的反射技术完成对象的组装工作。本部分代码仅仅提供一种功能演示,如果实际应用仍需进…

关于一道数据库例题的解析。为什么σ age22 (πS_ID,SCORE (SC) ) 选项是错的?

本人大二学子。近段时间在做数据库复习题的时候遇到一道题,如下。 有关系SC(S_ID,C_ID,AGE,SCORE),查找年龄大于22岁的学生的学号和分数,正确的关系代数表达式是( &#…

java获取表主外键_通过 jdbc 分析数据库中的表结构和主键外键

文章转自:http://ivan4126.blog.163.com/blog/static/20949109220137753214811/在某项目中用到了 hibernate ,大家都知道 hibernate 是 ORM 框架,他是有能力根据实体生成数据库表的。我们在单元测试的时候用到了 dbUnit ,dbUnit 可…

c#扩展方法奇思妙用高级篇四:对扩展进行分组管理

从系列文章开篇到现在,已经实现的很多扩展了,但过多的扩展会给我们带来很多麻烦,试看下图: 面对这么多“泛滥”的扩展,很多人都会感到很别扭,的确有种“喧宾夺主”的感觉,想从中找出真正想用的方…