vsto 以隐藏的方式打开一个excel 文件 并获得excel文件的缩略图
public byte[] GetExcelPictureFile(string filepath)
{
Workbook workbook=null;
Microsoft.Office.Interop.Excel.Application excelApp = new
Microsoft.Office.Interop.Excel.Application();
excelApp.Visible = false;
string fileName = string.Empty;
try
{
CaCheContext.isUploadingTemplate = true;
workbook= excelApp.Workbooks.Open(filepath, 0, true, 5, "", "", true,
Microsoft.Office.Interop.Excel.XlPlatform.xlWindows, "",
false, false, 0, false, false, false);
fileName = AppDomain.CurrentDomain.BaseDirectory +DateTime.Now.ToString("yyyymmddhhmmss") + workbook.Name;
Sheets worksheets = workbook.Sheets;
int sheetcount = worksheets.Count;
List<string> nameList = new List<string>();
foreach (Worksheet a in worksheets)
{
nameList.Add(a.Name);
}
string firsrName = nameList.First();
Worksheet worksheet = worksheets[firsrName];
worksheet.Range["A1", "E20"].CopyPicture(XlPictureAppearance.xlScreen, XlCopyPictureFormat.xlBitmap);
if (Clipboard.ContainsImage())
{
Image img = Clipboard.GetImage();
Bitmap bitmap = new Bitmap(img);
//保存图片数据
MemoryStream stream = new MemoryStream();
bitmap.Save(stream, ImageFormat.Jpeg);
byte[] buffer = stream.ToArray();
bitmap.Dispose();
CaCheContext.isUploadingTemplate = false;
Cursor.Current = Cursors.Arrow;
return buffer;
}
else
{
CaCheContext.isUploadingTemplate = false;
Cursor.Current = Cursors.Arrow;
return null;
}
}
catch(Exception ex)
{
Cursor.Current = Cursors.Arrow;
CaCheContext.isUploadingTemplate = false;
MessageBox.Show("生成文件缩略图失败"+ex.Message);
return null;
}
finally
{
workbook.SaveAs(fileName);
workbook.Close();
excelApp.Workbooks.Close();
excelApp.Quit();
excelApp.SendKeys("{TAB}");
excelApp.SendKeys("{ENTER}");
excelApp = null;
this.Focus();
}
}
vsto 以隐藏的方式打开一个excel 文件 并获得excel文件的缩略图的更多相关文章
- fopen()函数以"a+"方式打开一个不存在的文件后读写出现问题
问题:在完成课后习题的时候,使用fopen()函数以"a+"方式打开一个不存在的文件时,写入.读取出现错误: //添加用户输入单词后,在单词头加入编号,确保编号跟着前面的开始排序 ...
- C++->以读或写方式打开一个文件
以读或写方式打开一个文件 #include<iostream.h> //.h以C|非C标准引用库文件 #include<fstream.h> #include<std ...
- C语言采用文本方式和二进制方式打开文件的区别分析
稍微了解C程序设计的人都知道,文本文件和二进制文件在计算机上面都是以0,1存储的,那么两者怎么还存在差别呢?对于编程人员来说,文本文件和二进制文件就是一个声明,指明了你应该以什么方式(文本方式/二进制 ...
- EasyUI Tabs + Yii2.0实现iframe方式打开页面(解决共用静态文件引入加载的问题)
在项目实际开发中,有将打开的各个链接页面隔离的需求(防止静态资源起冲突),这个时候常规思路就是使用iframe来实现!但遇到一个比较棘手的问题,当用easyui Tabs打开一个iframe页面时,怎 ...
- 第9.4节 Python中用readline读取二进制文件方式打开文件
在<第9.3节 Python的文件内容读取:readline>中介绍了使用readline读取文件的处理,readline除了使用文本文件方式打开文件读外,也可以读取二进制方式打开的文件, ...
- C++学习47 文件的概念 文件流类与文件流对象 文件的打开与关闭
迄今为止,我们讨论的输入输出是以系统指定的标准设备(输入设备为键盘,输出设备为显示器)为对象的.在实际应用中,常以磁盘文件作为对象.即从磁盘文件读取数据,将数据输出到磁盘文件.磁盘是计算机的外部存储器 ...
- Linux C 文件与目录2 文件的打开与关闭
文件的打开与关闭 open和close 文件的打开指的是从磁盘中找到一个文件,返回一个整形的打开文件顺序的编号.打开的文件处于可读.可写状态.文件的关闭指的是释放打开的文件,是文件处于不可读写的状态. ...
- 【已解决】每次打开Excel时会同时打开一个空的Excel表格
每次打开Excel时会同时打开一个空的Excel表格,情况如图. 官方解法如下,本人验证有效: 方法1, 请到以后路径中检查是否存在与空白文件夹同名字的Excel文件,删除它. C:\Users\\A ...
- [转]Win7、Windows Server 2008下无法在Windows Service中打开一个已经存在的Excel 2007文件问题的解决方案
昨天,组里一个小朋友告诉我,他写的报表生成服务中无法打开一个已经存在的Excel 2007文件,他的开发环境是Win7.Visual Studio .Net 2008(Windows Server 2 ...
随机推荐
- cookie及其特点
关于cookie我们首先要知道cookie是指会话跟踪技术 我们可以用它来做一下事情,但是我们需要清楚cookie是不安全的 功能: 会话状态管理(如用户登录状态.购物车.游戏分数和其它需要记录的信息 ...
- vue template标签
在普通的html里面: template标签默认有个 display:none; 属性,并且其里面的内容是不可见的. 在vue里面: template标签类似一个隐藏的div,在审查元素的时候是找不到 ...
- 痞子衡嵌入式:飞思卡尔i.MX RT系列MCU量产神器RT-Flash常见问题
对于MCUBootUtility,RT-Flash工具,有任何使用上的问题,可以在本博客下留言,也可以扫码加入QQ交流群.
- ASP.NET Core 2.2 WebApi 系列【二】使用EF CodeFirst创建数据库
Code First模式 Code First是指"代码优先"或"代码先行". Code First模式将会基于编写的类和配置,自动创建模型和数据库. 一.准备 ...
- C#基本语法<二>_线程
线程 多线程和异步函数 当异步线程在工作完成时如何通知调用线程 当异步线程出现异常的时候该如何处理 异步线程工作的进度如何实时的通知调用线程 如何在调用线程中取消正在工作的异步线程,并进行回滚操作 异 ...
- R语言入门1:安装R和RStudio
R语言入门1:安装R和RStudio 曹务强 中科院遗传学博士研究生 9 人赞同了该文章 1. Windows安装R 在Windows系统上,安装R语言比较简单,直接从R的官方网站下载,按照正常的软件 ...
- 037.[转] springboot 配置多个数据源
1.在application.properties文件 配置两个数据源 #默认使用 tomcat-jdbc spring.datasource.type=org.apache.tomcat.jdbc. ...
- webpack打包 The 'mode' option has not been set, webpack will fallback to
webpack 打包报错 The 'mode' option has not been set, webpack will fallback to 'production' for,Module no ...
- Putty 连接centOS7 超时问题
方法1: #vim /etc/ssh/sshd_config(添加或修改以下配置) ClientAliveInterval 60(每隔60秒给SSH客户端发送一次信号) ClientAliveCo ...
- SPA项目开发之登录
前端 首先安装开发模板 npm install element-ui -S npm install axios -S npm install qs -S npm install vue-axios - ...