猎人职业大厅升级,达州新闻网,资费通官网
为了更好的根据实际功能来迭代,从2.2的里程碑规划开始,我们将结合社区的建议和意见来进行迭代,您可以点此链接来提交您的意见和建议:
https://github.com/dotnetcore/magicodes.ie/issues/46
本章教程主要说明如何使用magicodes.ie.excel进行图片的导入导出。
/// <summary> /// 图片导入类型 /// </summary> public enum importimageto { /// <summary> /// 导入到临时目录 /// </summary> tempfolder, /// <summary> /// 导入为base64格式 /// </summary> base64 }
install-package magicodes.ie.excel
如下述示例代码所示,我们需要在图片属性上添加exportimagefieldattribute特性,使用特性的“width”属性指定图片宽度,“height”属性指定图片高度,“alt”属性指定替换文本,也就是当图片不存在时则会显示此文本:
[excelexporter(name = "测试")] public class exporttestdatawithpicture { [exporterheader(displayname = "加粗文本", isbold = true)] public string text { get; set; } [exporterheader(displayname = "普通文本")] public string text2 { get; set; } [exporterheader(displayname = "忽略", isignore = true)] public string text3 { get; set; } [exportimagefield(width = 20, height = 120)] [exporterheader(displayname = "图1")] public string img1 { get; set; } [exporterheader(displayname = "数值", format = "#,##0")] public decimal number { get; set; } [exporterheader(displayname = "名称", isautofit = true)] public string name { get; set; } /// <summary> /// 时间测试 /// </summary> [exporterheader(displayname = "日期1", format = "yyyy-mm-dd")] public datetime time1 { get; set; } [exportimagefield(width = 50, height = 120, alt = "404")] [exporterheader(displayname = "图", isautofit = false)] public string img { get; set; } }
值得注意的是:
接下来,我们就可以使用api来执行导出了。其实除了dto的不同,导出api还是一个,如下述代码所示:
public async task exportpicture_test() { iexporter exporter = new excelexporter(); var url = path.combine("testfiles", "exportertest.png"); for (var i = 0; i < data.count; i++) { var item = data[i]; item.img1 = url; if (i == 4) item.img = null; else item.img = "https://docs.microsoft.com/en-us/media/microsoft-logo-dark.png"; } var result = await exporter.export(filepath, data); }
如上述代码所示,目前图片导出可以设置为远程图片地址,以及本地图片地址,并且也可以设置为null(null将会被替代文本所代替)。效果如下图:
magicodes.ie.excel支持从excel导入图片,仅需使用特性“importimagefield”。其支持两种导入方式:
仅需设置importimageto属性。
importimageto枚举
base64 导入为base64格式
tempfolder 导入到临时目录
值得注意的是,同上文一样,图片属性字段类型也仅支持string类型。
在开始之前,我们需准备好导入的excel,本示例中的模板如下图所示:
dto模型如下所示:
public class importpicturedto { [importerheader(name = "加粗文本")] public string text { get; set; } [importerheader(name = "普通文本")] public string text2 { get; set; } /// <summary> /// 将图片写入到临时目录 /// </summary> [importimagefield(importimageto = importimageto.tempfolder)] [importerheader(name = "图1")] public string img1 { get; set; } [importerheader(name = "数值")] public string number { get; set; } [importerheader(name = "名称")] public string name { get; set; } [importerheader(name = "日期")] public datetime time { get; set; } /// <summary> /// 将图片写入到临时目录 /// </summary> [importimagefield(importimageto = importimageto.tempfolder)] [importerheader(name = "图")] public string img { get; set; } }
导入还是那个导入,只是dto设置变了:
public async task importpicture_test() { var filepath = path.combine(directory.getcurrentdirectory(), "testfiles", "import", "图片导入模板.xlsx"); var import = await importer.import<importpicturedto>(filepath); if (import.exception != null) _testoutputhelper.writeline(import.exception.tostring()); if (import.rowerrors.count > 0) _testoutputhelper.writeline(jsonconvert.serializeobject(import.rowerrors)); }
如下图所示,excel中的图片就会导入到临时目录。值得注意的是:
将图片导入为base64仅需设置“importimageto”属性值为“importimageto.base64”即可:
public class importpicturebase64dto { [importerheader(name = "加粗文本")] public string text { get; set; } [importerheader(name = "普通文本")] public string text2 { get; set; } /// <summary> /// 将图片导入为base64(默认为base64) /// </summary> [importimagefield(importimageto = importimageto.base64)] [importerheader(name = "图1")] public string img1 { get; set; } [importerheader(name = "数值")] public string number { get; set; } [importerheader(name = "名称")] public string name { get; set; } [importerheader(name = "日期")] public datetime time { get; set; } /// <summary> /// 将图片导入到临时目录 /// </summary> [importimagefield(importimageto = importimageto.tempfolder)] [importerheader(name = "图")] public string img { get; set; } }
导入代码同上:
public async task importpicturebase64_test() { var filepath = path.combine(directory.getcurrentdirectory(), "testfiles", "import", "图片导入模板.xlsx"); var import = await importer.import<importpicturebase64dto>(filepath); }
如下图所示,我们就很方便的得到了图片的base64编码的结果:
https://github.com/dotnetcore/magicodes.ie
如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复
Blazor server side 自家的一些开源的, 实用型项目的进度之 CEF客户端
.NET IoC模式依赖反转(DIP)、控制反转(Ioc)、依赖注入(DI)
vue+.netcore可支持业务代码扩展的开发框架 VOL.Vue 2.0版本发布
网友评论