项目总结【Excel中附件导出和导入】
2012-03-09 16:09
78 查看
公司两年前开发了一个项目电子平台,其中有一个模块是"项目问题清单",这个模块主要是让工程师记录项目的问题并跟踪,但是由于很多工程师不能在外网访问和录入表单时不够方便,所以用户提出了采用Excel导入功能。
这个问题清单主要功能有以下几点:
1.表结构是主从表关系,一个问题对应对个行动计划
2.一个问题中可以插入图片和附件
3.邮件提醒功能
4.允许将问题清单导入和导出(图片和附件必须跟上)
其中,最为纠结的是Excel中插入或导出附件这个功能。
最新的解决方案是用NPOI方式来操作,但是经分析,NPOI仅支持图片的导出,虽然有返回图片的对象,但是不能获取到指定单元格的图片,还有一个就是不支持2007和附件的插入
后来采用了DocumentFormat.OpenXml.dll这个东西。
以下具体讲讲这个中间的过程。
1.用Open Xml SDK 2.0将做好的模板生成代码,对代码分析和封装
说说其中的对象:SharedStringTablePart 共享数据部件
DrawingsPart 图片部件
ThemePart 主题部件
WorkbookStylesPart 样式部件
WorksheetPart sheet部件
VmlDrawingPart 绘图对象
EmbeddedPackagePart 嵌入包部件
2.导出遇到的问题
2.1 导出的图片自动旋转180了,主要修改这段代码 A.Transform2D transform2D = new A.Transform2D()即可;
2.2 附件.pptx次序颠倒,最后一个附件跑到第一个位置了,研究发现有一段是拼接字符串的东东,代码封装如下:
View Code
2.IO操作、linq操作对象
3..vml后缀文件的了解
4.如何查看及分析问题
这个问题清单主要功能有以下几点:
1.表结构是主从表关系,一个问题对应对个行动计划
2.一个问题中可以插入图片和附件
3.邮件提醒功能
4.允许将问题清单导入和导出(图片和附件必须跟上)
其中,最为纠结的是Excel中插入或导出附件这个功能。
最新的解决方案是用NPOI方式来操作,但是经分析,NPOI仅支持图片的导出,虽然有返回图片的对象,但是不能获取到指定单元格的图片,还有一个就是不支持2007和附件的插入
后来采用了DocumentFormat.OpenXml.dll这个东西。
以下具体讲讲这个中间的过程。
1.用Open Xml SDK 2.0将做好的模板生成代码,对代码分析和封装
说说其中的对象:SharedStringTablePart 共享数据部件
DrawingsPart 图片部件
ThemePart 主题部件
WorkbookStylesPart 样式部件
WorksheetPart sheet部件
VmlDrawingPart 绘图对象
EmbeddedPackagePart 嵌入包部件
2.导出遇到的问题
2.1 导出的图片自动旋转180了,主要修改这段代码 A.Transform2D transform2D = new A.Transform2D()即可;
2.2 附件.pptx次序颠倒,最后一个附件跑到第一个位置了,研究发现有一段是拼接字符串的东东,代码封装如下:
View Code
/// <summary> /// Author:严智远 Remark:将流填充到ImagePart对象中 Date:2012-02-18 /// </summary> /// <param name="imagePart3"></param> private void GenerateImagePartContent(ImagePart imagePart, string filePath) { //将图片转换成字符 System.Drawing.Bitmap bmp = (System.Drawing.Bitmap)System.Drawing.Image.FromFile(HttpContext.Current.Server.MapPath("~")+filePath); MemoryStream stream = new MemoryStream(); bmp.Save(stream, System.Drawing.Imaging.ImageFormat.Bmp); stream.Position = 0; byte[] buff = new byte[stream.Length]; stream.Read(buff, 0, (int)stream.Length); stream.Close(); System.IO.Stream data = GetBinaryDataStream(System.Convert.ToBase64String(buff, 0, buff.Length)); imagePart.FeedData(data); data.Close(); }
2.IO操作、linq操作对象
3..vml后缀文件的了解
4.如何查看及分析问题
相关文章推荐
- 项目开发过程中对excel导入导出操作的总结
- 项目开发过程中对excel导入导出操作的总结
- 项目开发过程中对excel导入导出操作的总结
- 项目开发过程中对excel导入导出操作的总结
- excel的导出导入的总结
- java项目中Excel文件的导入导出
- 总结 php导出Excel php导入Excel PhpExcel使用说明 PhpExcel使用手册
- (转)基于Metronic的Bootstrap开发框架经验总结(7)--数据的导入、导出及附件的查看处理
- 【飞秋】ASP.NET 之 常用类、方法的超级总结,并包含动态的EXCEL导入导出功能,奉上类库源码
- NPOI导入导出EXCEL通用类,供参考,可直接使用在WinForm项目中
- 循序渐进开发WinForm项目(5)--Excel数据的导入导出操作
- 关于oracle导出excel和excel导入oracle的经验总结
- 项目中Excel导入总结
- ASP.NET 之 常用类、方法的超级总结,并包含动态的EXCEL导入导出功能,奉上类库源码
- 基于Metronic的Bootstrap开发框架经验总结(7)--数据的导入、导出及附件的查看处理
- NPOI导入导出EXCEL通用类,供参考,可直接使用在WinForm项目中
- 【项目总结】之——导出Excel
- 在springmvc项目中使用poi导入导出excel
- 超实用的PHPExcel[导入][导出]实现方法总结
- 框架 day50 BOS项目 4 批量导入(ocupload插件,pinyin4J)/POI解析Excel/Combobox下拉框/分区组合条件分页查询(ajax)/分区数据导出(Excel)