OpenXml Excel数据导入导出(含图片的导入导出)

摘要:
宽度{get;set;}//////高度////发布?

声明:里面的很多东西是基于前人的基础上实现的,具体是哪些人 俺忘了,我做了一些整合和加工

这个项目居于openxml做Excel的导入导出,可以用OpenXml读取Excel中的图片 和OpenXml插入Excel 图片,相信这两个还是挺有用的

OpenXmlHelper 类为对外抛出的类,包含封装的导入导出的数据操作方法和一些对象的属性

一、导出Excel数据

1.导出的数据为DataSet,可以允许多个DataTable

1.需要设置RowIndex;RowIndex为数据起始行(也就是可以根据你的Excel模板声明第一行数据的起始行,导出几个工作簿就声明 int[] 对应的长度)

2.OpenXmlExportImages 导出后的图片数据类型为Dictionary<string, List<OpenXmlExportImages>>,key为对应的工作簿名称

OpenXmlExportImages类为图片导出数据存储类

OpenXml Excel数据导入导出(含图片的导入导出)第1张OpenXml Excel数据导入导出(含图片的导入导出)第2张
    /// <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,

OpenXml Excel数据导入导出(含图片的导入导出)第3张OpenXml Excel数据导入导出(含图片的导入导出)第4张
 1         protected void BtnExcelOut_Click(object sender, EventArgs e)
 2         {
 3             var fileTemplatePath = Server.MapPath("~/Template/TestTemplate.xlsx");
 4             var filePath = Server.MapPath(string.Format("~/TempFile/{0}.xlsx", Guid.NewGuid().ToString()));
 5             OpenXmlHelper ox = new OpenXmlHelper();
 6             ox.RowIndex = new int[] { 4 };
 7             System.Data.DataSet ds = new System.Data.DataSet();
 8             DataTable dt1 = GetData();
 9             ds.Tables.Add(dt1);
10             ox.OpenXmlExportImages = new System.Collections.Generic.Dictionary<string, System.Collections.Generic.List<OpenXmlExportImages>>();
11             System.Collections.Generic.List<OpenXmlExportImages> openXmlExportImages=new System.Collections.Generic.List<OpenXmlExportImages>();
12             OpenXmlExportImages oximg1=new OpenXmlExportImages();
13             oximg1.ImagePath = @"E:Pictures未命名-2.png";
14             oximg1.X = 100;
15             oximg1.Y = 100;
16             openXmlExportImages.Add(oximg1);
17             OpenXmlExportImages oximg2 = new OpenXmlExportImages();
18             oximg2.ImagePath = @"E:Pictures8F00FD3446EF4044867BB87ED8B80716.gif";
19             oximg2.X = 300;
20             oximg2.Y = 400;
21             openXmlExportImages.Add(oximg2);            
22             OpenXmlExportImages oximg3 = new OpenXmlExportImages();
23             oximg3.ImagePath = @"E:Pictures2000.jpg";
24             oximg3.X = 400;
25             oximg3.Y = 400;
26             oximg3.Width = 400;
27             oximg3.Height = 400;
28             openXmlExportImages.Add(oximg3);
29             ox.OpenXmlExportImages.Add("数据", openXmlExportImages);
30             ox.ExcelExport(ds, filePath, fileTemplatePath);
31             DownLoadExcelFile(filePath);
32         }
Excel导出

二、导入Excel数据

1.导入Excel之后数据格式为DataSet,允许为多个工作簿,DataTable的tablename为对应的工作簿名称

2.OpenXmlImportImages 导入Excel后如果存在图片,存储在改类中

OpenXmlImportImages 中的Image为二进制的图片流,至于要怎么存储大伙自己转换吧

FromRow,FromCol是图片所在的行列 RefId做标识用的

OpenXml Excel数据导入导出(含图片的导入导出)第5张OpenXml Excel数据导入导出(含图片的导入导出)第6张
 1     /// <summary>
 2     /// 导入
 3     /// </summary>
 4     public class OpenXmlImportImages
 5     {
 6         public string RefId { get; set; }
 7         /// <summary>
 8         /// 9         /// </summary>
10         public int FromRow { get; set; }
11         /// <summary>
12         ///13         /// </summary>
14         public int FromCol { get; set; }
15         public byte[] Image { get; set; }
16     }
OpenXmlImportImages

3.导入代码demo

OpenXml Excel数据导入导出(含图片的导入导出)第7张OpenXml Excel数据导入导出(含图片的导入导出)第8张
 1         /// <summary>
 2         /// 导入Excel数据
 3         /// </summary>
 4         private void ImportingExcelData()
 5         {
 6             OpenXmlHelper ox = new OpenXmlHelper();
 7             string filePath = Server.MapPath("~/Template/data.xlsx");
 8             ox.RowIndex = new int[] { 4 };
 9             DataSet ds = ox.ExcelToDataSet(filePath);
10             data = ds.Tables[0];
11             OpenXmlImportImages = ox.OpenXmlImportImages["数据"];
12         }
Excel导入

------------

完成,希望对大家有用,如有bug欢迎大家一起改正,至于里面的东西提问大伙就自己消化吧,demo为vs2012写的

------------

代码:点击下载

免责声明:文章转载自《OpenXml Excel数据导入导出(含图片的导入导出)》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇EasyPlayerPro(Windows)流媒体播放器开发之跨语言调用ElementUI中el-upload传递额外参数为date类型时后台SpringBoot接收不到下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Java学习---Excel读写操作

1.1.1. 简介 Apache POI 使用Apache POI 完成Excel读写操作 Apache POI 是用Java编写的免费开源的跨平台的 Java API,Apache POI提供API给Java程式对Microsoft Office格式档案读和写的功能。 http://poi.apache.org/ 下载POI的jar包 ,包括以下...

使用XML创建Excel文档

原例子使用VB.Net写的,以下的用C#改写的代码 原文代码: http://www.gotdotnet.com/Community/UserSamples/Details.aspx?SampleGuid=ddbaecb9-a260-4656-9f22-300b6a1ce66c本例使用XML来创建Excel文档,但在运行时不需要安装Excel程序。    ...

产品经理 数据分析

如果要解决一个问题,首先我们要准确地定义这个问题(按照上期所讲,这个需要有深刻的业务洞察能力),然后通过一系列的数据分析,定位原因,最后讨论并实施对策(即实现项目影响)。左右两个图对比,我们可以看到,数据分析的能力框架并不是天马行空想出来的,它是从解决问题的流程中提炼出来的。 无论是业务洞察还是数据分析,都是服务于原因定位。而当原因定位好之后,如果和你配合...

mysql8.0 创建数据库及对应的用户

1、使用root用户登入数据库 2、创建数据库 create dababase test_database 3、创建用户 ## % 代表不限制ip ## localhost 代表只能本地访问 ## 192.168.1.1 代表只能192.168.1.1 这个固定ip访问 create user 'testuser'@'%' identified by '...

SaaS模式应用之多租户系统开发(单数据库多Schema设计)

SaaS是Software-as-a-Service(软件即服务)的简称,这边具体的解释不介绍。 多租户的系统可以应用这种模式的思想,将思想融入到系统的设计之中。 一、多租户的系统,目前在数据库存储上,一般有三种解决方案: 1.独立数据库 2.共享数据库,隔离数据架构 3.共享数据库,共享数据架构 这里我就系统的实际需求情况,选择了第二种解决方案,下面简单...

POI导出excel模板三种方式

POI简介 POI是Apache软件基金会用java编写的免费开源的跨平台的Java API,提供API给java程序对Microsoft Office格式档案读和写的功能,一般用来操作Excel文件。用javaPOI导出Excel时,需要考虑Excel版本和数据量的问题。 JavaPOI导出Excel有三种形式: (1) 第一种HSSFWorkbook...