在SharePoint中无代码开发InfoPath应用: 一个测试Web Service的工具

在SharePoint中无代码开发InfoPath应用: 一个测试Web Service的

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

 

这个项目居于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[] { 4 };
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 = 100;
oximg1.Y = 100;
openXmlExportImages.Add(oximg1);
OpenXmlExportImages oximg2 = new OpenXmlExportImages();
oximg2.ImagePath = @"E:\Pictures\8F00FD3446EF4044867BB87ED8B80716.gif";
oximg2.X = 300;
oximg2.Y = 400;
openXmlExportImages.Add(oximg2);
OpenXmlExportImages oximg3 = new OpenXmlExportImages();
oximg3.ImagePath = @"E:\Pictures\2000.jpg";
oximg3.X = 400;
oximg3.Y = 400;
oximg3.Width = 400;
oximg3.Height = 400;
openXmlExportImages.Add(oximg3);
ox.OpenXmlExportImages.Add("数据", openXmlExportImages);
ox.ExcelExport(ds, filePath, fileTemplatePath);
DownLoadExcelFile(filePath);
}

Excel导出

复制代码
 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:\Pictures\8F00FD3446EF4044867BB87ED8B80716.gif";
19             oximg2.X = 300;
20             oximg2.Y = 400;
21             openXmlExportImages.Add(oximg2);            
22             OpenXmlExportImages oximg3 = new OpenXmlExportImages();
23             oximg3.ImagePath = @"E:\Pictures\2000.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数据

 

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

 

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

 

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

 

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

 

  OpenXmlImportImages

/// <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

 

  Excel导入

/// <summary>
/// 导入Excel数据
/// </summary>
private void ImportingExcelData()
{
OpenXmlHelper ox = new OpenXmlHelper();
string filePath = Server.MapPath("~/Template/data.xlsx");
ox.RowIndex = new int[] { 4 };
DataSet ds = ox.ExcelToDataSet(filePath);
data = ds.Tables[0];
OpenXmlImportImages = ox.OpenXmlImportImages["数据"];
}

Excel导入

 

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

这是这个系列的第一篇,介绍一个小工具,主要是用在Web Service测试的。

因为为了用一点高级的东西,就免不了和web service打交道。

在SharePoint中无代码开发InfoPath应用: 一个测试Web Service的工具

你可以使用按照KB819267来修改web.config实现。这个默认的确实有点弱,而且还需要一个SharePoint Server。

显然有个工具更加方便。微软的一个员工发布了一个小工具:WebServiceStudio,https://webservicestudio.codeplex.com/。名字很大气,却很小巧,很好用。

在SharePoint中无代码开发InfoPath应用: 一个测试Web Service的工具

上图是一个调用GetCurrentUserInfo的示例。下面一篇文章就会介绍这个Web Service方法。 Stay Tuned!

 
 
分类:  开发自定义

 

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

 

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

 

代码:http://url.cn/Tawgo9 微云网盘

 

 

 

 

 

 
标签:  OpenXml Excel

你可能感兴趣的:(Excel,OpenXml)