导出office文件中所有图片
来源:互联网 发布:单身贵族 知乎 编辑:程序博客网 时间:2024/05/22 03:13
Microsoft Office 2003及以前版本的Office默认的文件格式是:
.doc (Word)
.xls (Excel)
.ppt (PowerPoint)
Microsoft Office 2007及后续版本(2010、2013、2016)默认的文件格式是:
.docx (Word)
.xlsx (Excel)
.doc (Word)
.xls (Excel)
.ppt (PowerPoint)
Microsoft Office 2007及后续版本(2010、2013、2016)默认的文件格式是:
.docx (Word)
.xlsx (Excel)
.pptx (PowerPoint)
提取office文件中的图片,可以把文档的后缀名改为 .zip,然后打开,在 media 目录下就能找到文档中插入的所有的图片文件。
.net 类库自带可以操作 zip 压缩文档的 API,我们可以用代码来完成。
try { ZipArchive zdoc = ZipFile.OpenRead(txtInput.Text); // 搜索 foreach (ZipArchiveEntry et in zdoc.Entries) { // 分析文件后缀 if (et.Name.Contains(".jpg") || et.Name.Contains(".jpeg") || et.Name.Contains(".png")) { listBox1.Items.Add(et.FullName); // 把文件实体复制到外部文件中 using (Stream strm = et.Open()) { string path = BuildPath(txtOutput.Text, et.Name); FileStream fsout = File.Open(path, FileMode.OpenOrCreate); strm.CopyTo(fsout); fsout.Close(); } } } } catch(Exception ex) { System.Diagnostics.Debug.WriteLine($"EXCEPTION: {ex.Message}"); MessageBox.Show("你的人品值不足,请及时充值。"); } finally { …… }
注意,你要引入以下两个程序集:
System.IO.Compression
System.IO.Compression.FileSystem
我们直接把 Office 文件当成zip文件来处理就行了,调用 ZipFile 类的 OpenRead 方法(静态),可以以只读方式打开文件,我们这里只要读出图片文件就行了,所以只读方式打开就够了。打开文件后,返回一个 ZipArchive 实例,它表示一个zip文档的实例。
压缩档中的文件是以一个个实体的形式存放的,每个实体用一个 ZipArchiveEntry 实例封装,所以我们要通过循环,筛选出后缀为 .jpg、.jpeg、.png的文件。
找出相关的实体后就好办了,直接将文件流复制到输出流中即可。
using (Stream strm = et.Open()) { string path = BuildPath(txtOutput.Text, et.Name); FileStream fsout = File.Open(path, FileMode.OpenOrCreate); strm.CopyTo(fsout); fsout.Close(); }
这里用到一个 BuildPath 方法,是个自定义方法,目的是组装文件名,如果文件已存在,就生成像 abc(1) abc(2) 这样的文件名。代码如下。/// <summary> /// 该方法用来生成新的路径 /// </summary> /// <param name="dir">要存放的目录</param> /// <param name="fn">实体文件名</param> /// <returns></returns> string BuildPath(string dir, string fn) { string tmpPath = Path.Combine(dir, fn); int i = 1; //这个值用来自增长 // 循环,直到生成不重复的文件名 // 如果文件名已存在,就生成 xxx(1)、xxx(2)、xxx(3)这样的文件名 while (File.Exists(tmpPath)) { // 不含后缀的文件名 string fn_1 = Path.GetFileNameWithoutExtension(fn); // 扩展名,如.txt string fn_ext = Path.GetExtension(fn); // 重组文件名 string _fn = $"{fn_1}({i}){fn_ext}"; // 重组路径 tmpPath = Path.Combine(dir, _fn); i++; } return tmpPath; }
源码在我的“低调程序员”群中,QQ群号:234215761.
阅读全文
0 0
- 导出office文件中所有图片
- hprof文件中导出图片
- 快速导出PDF文件中所有图片(使用Adobe Acrobat 10 )
- 导出visio2013文件中所有文本
- CorelDRAW中怎么实现将文件导出到Office
- 【项目实战】--Office文件导出
- 从ipa文件中导出图片
- ROS从bag文件中导出图片
- 批处理导出项目中所有java文件到txt中
- office各种文件转图片
- 枚举所有打开的Office文件路径
- 不需要安装office excel,导出GridView所有数据为Excel
- VC中导出Office的类库, 用于操作Office
- Excel表格怎么批量导出图片将文件中的图片导出到文件夹中
- java中将数据和图片导出到Excel文件中
- Echarts、Highcharts、html2canvas图片导出到excle文件中
- flex 导出文件&导出图片&文件下载
- js遍历本地所有图片文件,显示在浏览器中
- 论Java8中switch(String)的解决方案真实性
- 微信支付接口的开发
- Android反编译那些事
- 多管齐下显神威-2017逐浪CMS开启全新建站与WEB技术革命
- SpringMVC+freemarker实现菜单导航的思想一
- 导出office文件中所有图片
- 如何在神箭手上快速开发爬虫——第四课 如何爬取分页数据【蘑菇街商品评论】
- Kali Linux WPScan更新到2.9.3
- linux下串口相关控制
- plsql直接安装
- kafka集群操作指南
- HDU 6097 Mindis【计算几何】
- 【java自然语言处理】缩句
- linux常用指令