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

这个项目居于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数据导入导出(含图片的导入导出)的更多相关文章

  1. 【转】 如何导入excel数据到数据库,并解决导入时间格式问题

    在办公环境下,经常会用到处理excel数据,如果用写程序导入excel数据到数据库那就太麻烦了,涉及解析excel,还要各种格式问题,下面简单利用数据库本身支持的功能解决这类导入问题. 准备 创建表 ...

  2. 在SQL中导入Excel数据时强制以文本类型导入

    Excel不是关系型数据库,在导入到sql中时对于数值型,sql有时int型会处理成float,有时数字文本混排的列,sql会认为是数值型,导入的结果有的数据变成了null,但是用sql导出excel ...

  3. 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 ...

  4. PHPExcel数据导入(含图片)

    PHPExcel是一个PHP类库,用来帮助我们简单.高效实现从Excel读取Excel的数据和导出数据到Excel. 首先下载压缩包: https://codeload.github.com/PHPO ...

  5. 循序渐进开发WinForm项目(5)--Excel数据的导入导出操作

    随笔背景:在很多时候,很多入门不久的朋友都会问我:我是从其他语言转到C#开发的,有没有一些基础性的资料给我们学习学习呢,你的框架感觉一下太大了,希望有个循序渐进的教程或者视频来学习就好了. 其实也许我 ...

  6. QC学习三:Excel数据导入导出QC操作流程

    环境: QC9 WindowsXP Office2007   1. 准备 1.通过Excel导入QC,需要下载Microsoft Excel Add-in: http://update.externa ...

  7. php做EXCEL数据导出导入开发的一些小问题

    前两天刚刚做开发CRM系统项目,在做要做EXCEL导出导入功能,因为以前做.NET开发用的是NPOI,但可是没找到PHP版本的,所以就网搜找了个国外的开源PHPEXCEL , 一开始只是做了简单的导入 ...

  8. Excel数据导入导出

    1.将sql数据库表中的数据导入到Excel表格里: 方法一.使用StreamWrite对象,这里要注意的是 用“\t”换列,StreamWrite对象的WriteLine方法 一行一行写入. pub ...

  9. 利用PL/SQL Developer工具导出数据到excel,导入excel数据到表

    使用PL/SQL Developer工具. 导出: 1.执行select 语句查询出需要导出的数据. 2.在数据列表中右键,选择save results.保存为.csv文件,然后已excel方式打开就 ...

随机推荐

  1. 浅析网站开发中的 meta 标签的作用

    *:first-child { margin-top: 0 !important; } body>*:last-child { margin-bottom: 0 !important; } /* ...

  2. hadoop2.1.0编译安装教程

    由于现在hadoop2.0还处于beta版本,在apache官方网站上发布的beta版本中只有编译好的32bit可用,如果你直接下载安装在64bit的linux系统的机器上,运行会报一个INFO ut ...

  3. ecshop后台限制IP登录

    ecshop是开源系统,所以难免会有漏洞   黑客攻击网站,往往是通过漏洞获取后台管理员权限,然后再做一些破坏 如果我们在后台文件里限制指定的IP才能登录后台,就相对安全多了 下面给出大家解决方案: ...

  4. [1.1]Knowledge that should be prepared

    Actually, there are a huge amount of knowledge we need to learn. So I hope you don't be scared. It's ...

  5. google域名邮箱申请 gmail域名邮箱申请(企业应用套件)指南

    近期一直有朋友问我怎么注冊域名邮箱,于是整理出来,贴出来吧.已经非常具体了,你能够直接对比着做了.什么是域名邮箱? 假设你有一个自己的域名,通过对域名dns进行设置,创建以自己的域名作为邮箱后缀的邮箱 ...

  6. 网络编程中常见地址结构与转换(IPv4/IPv6)

    1. sockaddr/sockaddr_in/in_addr (IPv4).sockaddr6_in/in6_addr/addrinfo (IPv6) struct sockaddr { unsig ...

  7. cmp排序hdoj 1106排序

    上班之余抽点时间出来写写博文,希望对新接触的朋友有帮助.今天在这里和大家一起学习一下cmp排序 /*标题还是比拟的水吧,但是花的时间还是比拟的多,心不够静*/ #include <iostrea ...

  8. oracle 基本语句练习(一) where, between ,null, like,转义字符,order by

    1   where  筛选关键字; select * from emp where job >'CLERK' 从emp表中列出 job值大于'CLERK'的项 (由于比较的是字符串,所以加单引号 ...

  9. 关于java的JIT知识

    1.JIT的工作原理图  工作原理 当JIT编译启用时(默认是启用的),JVM读入.class文件解释后,将其发给JIT编译器.JIT编译器将字节码编译成本机机器代码. 通常javac将程序源码编译, ...

  10. 第1章 游戏之乐——NIM(2)“拈”游戏分析

    NIM(2)“拈”游戏分析 1. 问题 有N块石头和两个玩家A和B,玩家A先将石头分成若干堆,然后按照BABA……的顺序不断轮流取石头,能将剩下的石头一次取光的玩家获胜.每次取石头时,每个玩家只能从若 ...