OpenXml Excel数据导入导出(含图片的导入导出)
声明:里面的很多东西是基于前人的基础上实现的,具体是哪些人 俺忘了,我做了一些整合和加工
这个项目居于openxml做Excel的导入导出,可以用OpenXml读取Excel中的图片 和OpenXml插入Excel 图片,相信这两个还是挺有用的
OpenXmlHelper 类为对外抛出的类,包含封装的导入导出的数据操作方法和一些对象的属性
一、导出Excel数据
1.导出的数据为DataSet,可以允许多个DataTable
1.需要设置RowIndex;RowIndex为数据起始行(也就是可以根据你的Excel模板声明第一行数据的起始行,导出几个工作簿就声明 int[] 对应的长度)
2.OpenXmlExportImages 导出后的图片数据类型为Dictionary<string, List<OpenXmlExportImages>>,key为对应的工作簿名称
OpenXmlExportImages类为图片导出数据存储类
- /// <summary>
- /// 导出
- /// </summary>
- public class OpenXmlExportImages
- {
- /// <summary>
- /// X坐标
- /// </summary>
- public long X { get; set; }
- /// <summary>
- /// Y坐标
- /// </summary>
- public long Y { get; set; }
- /// <summary>
- /// 宽度
- /// </summary>
- public long? Width { get; set; }
- /// <summary>
- /// 高度
- /// </summary>
- public long? Height { get; set; }
- /// <summary>
- /// 图片路径如c:\eee.png
- /// </summary>
- public string ImagePath { get; set; }
- }
OpenXmlExportImages
导出的图片位置就靠x,y来设置了,图片路径要用绝对路径不用的话我就不知道会出啥事了
3.导出的代码demo,
- protected void BtnExcelOut_Click(object sender, EventArgs e)
- {
- var fileTemplatePath = Server.MapPath("~/Template/TestTemplate.xlsx");
- var filePath = Server.MapPath(string.Format("~/TempFile/{0}.xlsx", Guid.NewGuid().ToString()));
- OpenXmlHelper ox = new OpenXmlHelper();
- ox.RowIndex = new int[] { };
- System.Data.DataSet ds = new System.Data.DataSet();
- DataTable dt1 = GetData();
- ds.Tables.Add(dt1);
- ox.OpenXmlExportImages = new System.Collections.Generic.Dictionary<string, System.Collections.Generic.List<OpenXmlExportImages>>();
- System.Collections.Generic.List<OpenXmlExportImages> openXmlExportImages=new System.Collections.Generic.List<OpenXmlExportImages>();
- OpenXmlExportImages oximg1=new OpenXmlExportImages();
- oximg1.ImagePath = @"E:\Pictures\未命名-2.png";
- oximg1.X = ;
- oximg1.Y = ;
- openXmlExportImages.Add(oximg1);
- OpenXmlExportImages oximg2 = new OpenXmlExportImages();
- oximg2.ImagePath = @"E:\Pictures\8F00FD3446EF4044867BB87ED8B80716.gif";
- oximg2.X = ;
- oximg2.Y = ;
- openXmlExportImages.Add(oximg2);
- OpenXmlExportImages oximg3 = new OpenXmlExportImages();
- oximg3.ImagePath = @"E:\Pictures\2000.jpg";
- oximg3.X = ;
- oximg3.Y = ;
- oximg3.Width = ;
- oximg3.Height = ;
- openXmlExportImages.Add(oximg3);
- ox.OpenXmlExportImages.Add("数据", openXmlExportImages);
- ox.ExcelExport(ds, filePath, fileTemplatePath);
- DownLoadExcelFile(filePath);
- }
Excel导出
二、导入Excel数据
1.导入Excel之后数据格式为DataSet,允许为多个工作簿,DataTable的tablename为对应的工作簿名称
2.OpenXmlImportImages 导入Excel后如果存在图片,存储在改类中
OpenXmlImportImages 中的Image为二进制的图片流,至于要怎么存储大伙自己转换吧
FromRow,FromCol是图片所在的行列 RefId做标识用的
- /// <summary>
- /// 导入
- /// </summary>
- public class OpenXmlImportImages
- {
- public string RefId { get; set; }
- /// <summary>
- /// 列
- /// </summary>
- public int FromRow { get; set; }
- /// <summary>
- /// 行
- /// </summary>
- public int FromCol { get; set; }
- public byte[] Image { get; set; }
- }
OpenXmlImportImages
3.导入代码demo
- /// <summary>
- /// 导入Excel数据
- /// </summary>
- private void ImportingExcelData()
- {
- OpenXmlHelper ox = new OpenXmlHelper();
- string filePath = Server.MapPath("~/Template/data.xlsx");
- ox.RowIndex = new int[] { };
- DataSet ds = ox.ExcelToDataSet(filePath);
- data = ds.Tables[];
- OpenXmlImportImages = ox.OpenXmlImportImages["数据"];
- }
Excel导入
------------
完成,希望对大家有用,如有bug欢迎大家一起改正,至于里面的东西提问大伙就自己消化吧,demo为vs2012写的
------------
代码:点击下载
OpenXml Excel数据导入导出(含图片的导入导出)的更多相关文章
- 【转】 如何导入excel数据到数据库,并解决导入时间格式问题
在办公环境下,经常会用到处理excel数据,如果用写程序导入excel数据到数据库那就太麻烦了,涉及解析excel,还要各种格式问题,下面简单利用数据库本身支持的功能解决这类导入问题. 准备 创建表 ...
- 在SQL中导入Excel数据时强制以文本类型导入
Excel不是关系型数据库,在导入到sql中时对于数值型,sql有时int型会处理成float,有时数字文本混排的列,sql会认为是数值型,导入的结果有的数据变成了null,但是用sql导出excel ...
- JAVA通过poi对Excel数据在(jsp+ssh)环境下导入导出
POI的下载与安装 请到网站http://www.apache.org/dyn/closer.cgi/poi/右击超链接2.5.1.zip下载压缩包poi-bin-2.5.1-final-20040 ...
- PHPExcel数据导入(含图片)
PHPExcel是一个PHP类库,用来帮助我们简单.高效实现从Excel读取Excel的数据和导出数据到Excel. 首先下载压缩包: https://codeload.github.com/PHPO ...
- 循序渐进开发WinForm项目(5)--Excel数据的导入导出操作
随笔背景:在很多时候,很多入门不久的朋友都会问我:我是从其他语言转到C#开发的,有没有一些基础性的资料给我们学习学习呢,你的框架感觉一下太大了,希望有个循序渐进的教程或者视频来学习就好了. 其实也许我 ...
- QC学习三:Excel数据导入导出QC操作流程
环境: QC9 WindowsXP Office2007 1. 准备 1.通过Excel导入QC,需要下载Microsoft Excel Add-in: http://update.externa ...
- php做EXCEL数据导出导入开发的一些小问题
前两天刚刚做开发CRM系统项目,在做要做EXCEL导出导入功能,因为以前做.NET开发用的是NPOI,但可是没找到PHP版本的,所以就网搜找了个国外的开源PHPEXCEL , 一开始只是做了简单的导入 ...
- Excel数据导入导出
1.将sql数据库表中的数据导入到Excel表格里: 方法一.使用StreamWrite对象,这里要注意的是 用“\t”换列,StreamWrite对象的WriteLine方法 一行一行写入. pub ...
- 利用PL/SQL Developer工具导出数据到excel,导入excel数据到表
使用PL/SQL Developer工具. 导出: 1.执行select 语句查询出需要导出的数据. 2.在数据列表中右键,选择save results.保存为.csv文件,然后已excel方式打开就 ...
随机推荐
- Elasticsearch集群搭建
现有两部机器:192.168.31.86,192.168.31.87 参考以往博文对Elasticsearch进行配置完成:http://www.cnblogs.com/zhongshengzhe ...
- [转载代码]VB.NET 中查询 Linq to SQL 执行时的SQL语句
在搜索使用LINQ TO SQL 添加数据后获得自增长ID的方法时,发现C#可以使用DebuggerWritter把使用Linq to SQL执行的SQL语句显示到即时窗口,于是在网上搜索到在VB.N ...
- <select>改造成<s:select>实现表单的回显功能
初始: <select name="viewType"> <option value="0">全部主题</option> & ...
- UVa 112 Tree Summing
题意: 计算从根到叶节点的累加值,看看是否等于指定值.是输出yes,否则no.注意叶节点判断条件是没有左右子节点. 思路: 建树过程中计算根到叶节点的sum. 注意: cin读取失败后要调用clear ...
- PostgreSQL中如何查询在当前的哪个数据库中
[pgsql@localhost bin]$ ./psql -d tester psql () Type "help" for help. tester=# select curr ...
- 硝烟中的scrum学习笔记 - 怎样制定Sprint计划(Plan Meeting)
1. 如何估算我们这个sprint能做多少个故事点 1) 本能反应 2) 生产率计算 估算生产率/实际生产率 看看团队的历史,看看他们在过去几个sprint里的生产率是多少 然后假定在下一个sp ...
- JSON API in Javascript
1. Serialize JavaScript object to JSON var messageObject = { title: 'Hello World!', body: 'It\'s gr ...
- SPOJ 1557. Can you answer these queries II 线段树
Can you answer these queries II Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 https://www.spoj.com/pr ...
- 在C# WinForm程序中创建控件数组及相应的事件处理
控件数组是VB提供的一个优秀的设计解决方案,它能很方便快捷的处理大批同类控件的响应和时间处理,但不知为什么在C#中这个优秀特性没有传承下来,甚为可惜,本文将要探讨就是如何在C# WinForm程序实现 ...
- delphi 文件或目录转换成 TreeView
//文件或目录转换成 TreeViewprocedure DirToTreeView(Tree: TTreeView; Directory: string; Root: TTreeNode; Incl ...