EXCEL表写入时问题解决
来源:互联网 发布:壹方凌网络是干嘛的 编辑:程序博客网 时间:2024/06/03 15:15
我是个新手,以前很少操作excel表,这次由于工作需要,写个很简单的小程序,但是这个小程序让我碎了心,搞了两天,在运气的加持下,终于搞定了,现分享一下。
我写的程序很简单,一个excel表(下称A表)中有三列,第一列是号码,从A表中读出号码,通过号码查年龄、姓名,然后写回A表中的二、三列,为了提高效率,中间加了DATATABLE为中转。在这个简单的程序中出现了两个问题
问题一:
调试时,保存查询出来的数据到A表时,总是提示A表是只读文件,要另存副本,但我只想存回A表,在此其中试了Worksheet.SaveAS()或Workbook.save()方法,期间成功保存了一次,但就再也不成功了,总是提示A表是只读文件。后读了网上的文章加入Microsoft.Office.Interop.Excel.Application.Quit()方法还是问题依旧。
解决:偶然灵光闪现发现了问题原因,是因为未退出造成了A表的占用,由于Microsoft.Office.Interop.Excel.Application.Quit()是调试中途加入的,加入之前的Microsoft.Office.Interop.Excel.Application仍在占用A表,在任务管理器中清除所有EXCEL.EXE 进程,再次调试,成功。
问题二:
在解决上个问题后认为大功告成时,发现A表保存的数据结果不对或是没有保存结果,跟踪了发现不是数据库查询问题,回想了一下过程,为了灵活适应环境,想把A表放在程序文件夹里,把绝对路径改为了默认路径,改后为读入和打开连接语句分别是
string strConn= @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=dc.xls;" + "Extended Properties='Excel 8.0;HDR=Yes;IMEX=1'";//读入
Excel.Workbook wk = workbooks.Open("dc.xls", Missing.Value, false, Missing.Value, Missing.Value, Missing.Value, false, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value);//写入操作前打开A表
解决:后经奋战终于搞清楚了原因, string strConn= @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=dc.xls;" + "Extended Properties='Excel 8.0;HDR=Yes;IMEX=1'"这样写的确是读程序所在文件夹下的A表, 但打开A表时这样写 Excel.Workbook wk = workbooks.Open("dc.xls", Missing.Value, false, Missing.Value, Missing.Value, Missing.Value, false, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value);却打开的是我的文档下的A表(真奇怪),所以只有绝对路径才能满足要求。针对解决方法如下:
string path = System.IO.Directory.GetCurrentDirectory();
string strConn= @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+path+"\\dc.xls;" + "Extended Properties='Excel 8.0;HDR=Yes;IMEX=1'";//读入 保险都加了
Excel.Workbook wk = workbooks.Open(path+"\\dc.xls", Missing.Value, false, Missing.Value, Missing.Value, Missing.Value, false, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value);
问题解决。
- EXCEL表写入时问题解决
- csv写入时指定表头
- ini文件写入时遇到的问题
- Copy-On-Write(写入时复制)技术
- PHP写入时复制 (Copy on Write)
- java文件写入时为何总写不进去
- RandomAccessFile写入时中文乱码解决方案
- .net数据写入时,没有写入SQL数据库
- 一个关于文件写入时乱码的故事
- nfs写入时提示read-only file system的原因
- 文件读取和写入时,文件分隔符的差别
- Linux挂载ntfs移动硬盘写入时Read-only file system
- Hbase写入时指定版本潜在的问题
- nfs 成功挂载后,写入时出现permission denied的解决
- PHP fwrite换行写入时换行符不起作用的原因
- c语言中怎样在文件写入时换行?
- 【Python 学习笔记】文件写入时遇到 TypeError 报错
- 【详解】Python建立Map写Excel表
- SVN过滤
- lzg_ad:XP Embedded SP2正式版安装详解
- AndFix解析——(上)
- C#实现压缩与解压缩
- ffmpeg命令行实现YUV和RGB之间格式的转换
- EXCEL表写入时问题解决
- Spring容器初始化后执行自定义的业务操作
- Android设备通过wifi连接adb调试
- HUSTM 1601 - Shepherd
- KMP算法
- 多线程下载
- AndFix解析——(中)
- 获取页面Url地址栏后面的参数
- Spring AOP: proxy-target-class 值的意思