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

这个项目居于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写的

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

代码:点击下载

最新文章

  1. sublime_markdown
  2. 树莓派3b+ 用samba与windows共享文件
  3. Web前端工程师成长之路
  4. 20145225《Java程序设计》 第8周学习总结
  5. LeetCode | Regular Expression Matching
  6. Spring AOP配置文件
  7. mysql数据导入
  8. 华为p7怎么打开usb调试模式
  9. Jsp页面里引入一个javascript文件,在jsp的onclick里怎么添加脚本文件里的方法
  10. RecyclerSwipeAdapterDemo【使用AndroidSwipeLayout用于列表项侧滑功能】
  11. windows10中修改环境变量的正确姿势
  12. jieba分词/jieba-analysis(java版)
  13. ③NuPlayer播放框架之类NuPlayer源码分析
  14. 解决警告 warning: directory not found for option
  15. 【转】webpack中关于source map的配置
  16. WP8.1 发送邮件
  17. 使用python来建立http服务
  18. ROS中的CMakeLists.txt (转)
  19. 五、oracle 表管理
  20. springboot 上传图片与回显

热门文章

  1. KVM学习笔记
  2. curl用法
  3. 在ASP.NET MVC中的四大筛选器(Filter)及验证实现
  4. C#中的where从句
  5. VS 2012单元测试和测试资源管理器
  6. 解决安装SQL Server2008失败的问题
  7. c语言向文件中写入
  8. Spring和Hibernate集成的HibernateTemplate的一些常用方法总结
  9. 【转】Dijkstra算法(单源最短路径)
  10. UVa 1252 - Twenty Questions(记忆化搜索,状态压缩dp)