c#创建、保存excel正常执行要点补疑
using System.Reflection;
public class MyConsole
{
public static void Main()
{
Application app = new ApplicationClass();
try
{
//让后台执行设置为不可见
app.Visible = false;
//新增加一个工作簿
Workbook wBook = app.Workbooks.Add(true);
//如果要打开已有的工作簿,则使用下面的注释语句
// Workbook wBook = app.Workbooks.Open(@"C:\YourPath\YourWorkbook.xls",
// missing, missing, missing, missing, missing, missing, missing,
// missing, missing, missing, missing, missing,missing, missing);
//取得一个工作表
//如果打开了已有的工作簿,也可以这样获取工作表Worksheet wSheet = wBook.ActiveSheet as Worksheet
Worksheet wSheet = wBook.Worksheets[1] as Worksheet;
wSheet.Cells[1, 1] = "this is a test";
//设置禁止弹出保存和覆盖的询问提示框
app.DisplayAlerts = false;
app.AlertBeforeOverwriting = false;
//保存工作簿
wBook.Save();
//保存excel文件
app.Save("C:\\abc.xls");
}
catch
{
}
finally
{
//确保Excel进程关闭
app.Quit();
app = null;
}
}
}
代码注释部分只是简单描述各语句的原由,个别的还是值得推敲的。
Workbooks.Add的参数是个object类型,通常使用true或null,表明工作簿在默认文档下创建,或者使用枚举值 XlWBATemplate.xlWBATWorksheet,但如果传入一个excel完整文件名,却相当于打开已有工作簿。
wBook.Worksheets虽然反映的是工作表的集合,然而新创建的工作簿中只有一个工作表,且索引是1,如果换成0将无法找到指定的WorkSheet,如果是操作多个工作表的话,建议用new WorkSheetClass()实例化之后加入到wBook.Worksheets中去。如果是打开已存在的工作簿,这条语句也可能会报错,最好是调用wBook.ActiveSheet来获取或者再加些判断。
这两句代码至关重要,而且必不可少,否则,保存时会弹出“是否保存sheet1.xls”的对话框。像示例中的保存,在windows server 2003中,因为权限的原因,还可能会出现这样的现象(其它操作系统的结果有待考证):生成的abc.xls除了本机上运行此代码的用户打开正常外,其他户打开后的错误信息如下:
确认所指定的文件夹已存在。
确认文件所在的文件夹不是只读的。
确认给出的文件名不包含下列字符:<>?[]:Sheet1.xls或*。
确认文件/路径名长度不超过218个字符。
因为此时创建的工作簿其实是在当前用户的“我的文档”目录下自动生成了一个Sheet1.xls副本,而abc.xls是指向这个副本的快捷方式,所以导致其他用户无权访问。我采取的解决办法是将这两句替换为:
wBook.Save();
这样做,“我的文档”下就不会再创建Sheet1.xls,而且打开可以发现,原来工作簿里那个工作表名是sheet1.xls的也更改名字为abc.xls了。
这个关闭一直有疑点,因为C#操作com非托管对象时,凭借Quit()还没有释放掉对象,excel进程不一定会终止,于是,有人使用KillProcess()来处理,我个人认为这不是一个好主意,可能会破坏其它正在执行的excel进程。目前我使用app = null;权作安慰吧。不过有一点是一定要做到,就是在Quit()前不能再有任何更改,不然还是会弹出保存的对话框。所以退出前确保一定是执行过WorkBook或是Application的Save()方法的。
对于在c#中操作excel应用的方面很多,可能还会有些疑问出现,知晓来龙去脉的朋友尽量补充以方便大家吧。
转载于:https://www.cnblogs.com/hzuIT/articles/907165.html
c#创建、保存excel正常执行要点补疑相关推荐
- C#中创建、打开、读取、写入、保存Excel的一般性代码
1 Excel对象 微软的Excel对象模型包括了128个不同的对象,从矩形,文本框等简单的对象到透视表,图表等复杂的对象.下面我们简单介绍一下其中最重要,也是用得最多的四个对象. (1) Appli ...
- python 创建excel,操作excel,保存excel,修改excel,删除sheet页
from openpyxl import Workbook #该包可进行excel相关的操作 import time import datetime import locale #支持中文日期loca ...
- python使用xlwt创建与保存excel文件
xlwt处理excel的思想是先创建一个excel文件:book,然后创建sheet表:sheet,最后对sheet表内的单元格:cell写入数据. 小栗子: import xlwtif __name ...
- 如何在Excel中自动创建报告 Excel中自动创建报告的方法
如何在Excel中自动创建报告 Excel中自动创建报告的方法,Excel工作表中存储的数据,可以使用宏来一键创建报告并导出为不同的文件类型.Excel自带步骤记录器,因此你不需要自己编写宏.小编在这 ...
- 服务器保存excel文件慢,从使用IE的服务器缓慢地保存Excel文件
这里的问题是试图下载带有html标记内容的excel文件.系统需要很长时间才能下载.有时,在请求下载时,IE的保存对话框不会立即显示.从使用IE的服务器缓慢地保存Excel文件 流程就是这样.这是一个 ...
- python自动化接口测试excel用例串行之行_python 读取 Excel 自动化执行测试用例
python 读取 Excel 自动化执行测试用例 Excel 测试用例的读取 安装 python 操作Excel 的库 pip install xlrd/xlwt/xlutils (安装三个操作库) ...
- C#在线打开编辑保存Excel文件[pageoffice]
在项目开发过程中,经常会涉及到生成Excel报表,但往往系统只能通过后台生成Excel报表并保存到服务器上,若想在系统中打开Excel文件并进行编辑保存,有些人可能就没有思路了.因此,为了实现Exce ...
- 如何真正实现无提示保存Excel文档
要想取消Excel文档的保存提示,从而实现文档的自动保存,应该从两个方面加以考虑,一是设置ThisWorkBook.Saved属性,当此属性为True时,Excel会认为该文档已被保存过,因此不会弹出 ...
- type=file的未选择任何文件修改_Excel基础—文件菜单之创建保存
点赞再看,养成习惯:勤能补拙是良训,一分辛劳一分才. 微信搜索[亦心Excel]关注这个不一样的自媒体人. 本文GitHub https://github.com/hugogoos/Excel 已收录 ...
最新文章
- jax-ws服务使用
- GPU 图像并行处理
- android 5.0 ios 8,Android 5.0和iOS8.1哪个好?安卓5.0与iOS8.1区别对比
- BPP 相关——02
- ab压力测试php脚本,ab压力测试工具-批量压测脚本
- Linux内核--基于Netfilter的内核级包过滤防火墙实现
- 如果实现了一种不用暂停世界的GC算法,会对现在编程语言产生什么影响?
- windows修改用户文件夹名称 更改用户名 修改C盘Users目录下文件夹名称
- 13首唐诗五律,哪个是你心目中的“五律”第一?
- matlab fsolve fzero,Matlab中的fzero和fsolve函数
- springboot读取xml配置文件
- BBED处理RMAN-03009,ORA-1956
- 《手把手教你移植InfoNES(到HANKER-LM4F232)》
- 基于JAVA幼儿园综合管理系统计算机毕业设计源码+系统+数据库+lw文档+部署
- 使用git控制word版本
- 模拟人生 java 安卓版,模拟人生畅玩版
- 51单片机(八).单片机的I2C与串口通讯
- 今日头条财经部门后台研发实习生面试
- P50发布,鸿蒙OS用户突破4000万!
- uniapp调用上一页的方法