Skip to content

Commit

Permalink
完善文档【使用Magicodes.IE.Excel完成Excel图片的导入和导出】
Browse files Browse the repository at this point in the history
  • Loading branch information
codelove1314 committed Mar 15, 2020
1 parent eff974f commit de20652
Show file tree
Hide file tree
Showing 2 changed files with 54 additions and 13 deletions.
67 changes: 54 additions & 13 deletions docs/8.Excel图片导入导出.md
Original file line number Diff line number Diff line change
@@ -1,15 +1,15 @@
# Magicodes.IE Excel图片导入导出
# 使用Magicodes.IE.Excel完成Excel图片的导入和导出

## 说明

本章主要说明使用 Magicodes.IE Excel图片导入导出的使用
本章教程主要说明如何使用Magicodes.IE.Excel进行图片的导入导出。

## 要点

- 配置DTO进行Excel图片导出
- 配置DTO进行Excel图片导入

## 导入导出特性
## 图片导入导出特性说明

### ExportImageFieldAttribute

Expand All @@ -20,8 +20,24 @@
### ImportImageFieldAttribute

+ **ImageDirectory**: 图片存储路径(默认存储到临时目录)
+ **ImportImageTo**:图片导出方式(默认Base64)
+ **ImportImageTo**:图片导出方式(默认Base64),支持的方式如下所示:
```csharp
/// <summary>
/// 图片导入类型
/// </summary>
public enum ImportImageTo
{
/// <summary>
/// 导入到临时目录
/// </summary>
TempFolder,

/// <summary>
/// 导入为base64格式
/// </summary>
Base64
}
```

## 主要步骤

Expand All @@ -32,9 +48,9 @@
Install-Package Magicodes.IE.Excel
```

### 2.导出Excel
### 2.使用Magicodes.IE.Excel导出图片到Excel

Excel导出,图片导出需求时我们需要在属性中添加**ExportImageFieldAttribute**
如下述示例代码所示,我们需要在图片属性上添加**ExportImageFieldAttribute**特性,使用特性的“Width”属性指定图片宽度,“Height”属性指定图片高度,“Alt”属性指定替换文本,也就是当图片不存在时则会显示此文本:

```csharp
[ExcelExporter(Name = "测试")]
Expand Down Expand Up @@ -65,8 +81,12 @@ Excel导出,图片导出需求时我们需要在属性中添加**ExportImageFiel
public string Img { get; set; }
}
```
值得注意的是:

+ ExportImageFieldAttribute特性是必须的
+ 图片属性类型必须为string类型,支持本地图片和远程图片地址

目前导出可以设置为远程图片,以及本地图片形式,并且也支持空导出
接下来,我们就可以使用API来执行导出了。其实除了Dto的不同,导出API还是一个,如下述代码所示:

```csharp
public async Task ExportPicture_Test()
Expand All @@ -85,19 +105,36 @@ Excel导出,图片导出需求时我们需要在属性中添加**ExportImageFiel
var result = await exporter.Export(filePath, data);
}
```

如上述代码所示,目前图片导出可以设置为远程图片地址,以及本地图片地址,并且也可以设置为null(null将会被替代文本所代替)。效果如下图:

![导出图片](../res/8-1.png)

### 3.导入Excel
### 3.使用Magicodes.IE.Excel导入图片

#### 导入到临时目录
Magicodes.IE.Excel支持从Excel导入图片,仅需使用特性“ImportImageField”。其支持两种导入方式:

+ 导入到临时目录
+ 导入为Base64

仅需设置ImportImageTo属性。

**ImportImageTo枚举**
- **Base64** 导入为base64格式

- **TempFolder** 导入到临时目录

值得注意的是,同上文一样,图片属性字段类型也仅支持string类型。

#### 准备待导入的包含图片的Excel

在开始之前,我们需准备好导入的Excel,本示例中的模板如下图所示:
![将图片导入为base64](../res/8-4.png)

您可以在单元测试的“TestFiles”目录中找到此文件。接下来我们就使用此文件来演示Excel的图片导入。

#### 导入到临时目录

Dto模型如下所示:
```csharp

public class ImportPictureDto
Expand Down Expand Up @@ -129,6 +166,7 @@ Excel导出,图片导出需求时我们需要在属性中添加**ExportImageFiel
}

```
导入还是那个导入,只是Dto设置变了:

```csharp
public async Task ImportPicture_Test()
Expand All @@ -141,13 +179,16 @@ Excel导出,图片导出需求时我们需要在属性中添加**ExportImageFiel
}

```

如下图所示,Excel中的图片就会导入到临时目录。值得注意的是:
+ **图片导入到临时目录之后,如果导入结果符合业务需要,请立即将图片移动到正式存储位置,比如网站目录、云存储等;**
+ 图片导入也支持指定位置,不过不推荐。

![导入到临时目录](../res/8-2.png)


#### 将图片导入为base64

将图片导入为base64仅需设置“ImportImageTo”属性值为“ImportImageTo.Base64”即可:
```csharp

public class ImportPictureBase64Dto
Expand Down Expand Up @@ -180,7 +221,7 @@ Excel导出,图片导出需求时我们需要在属性中添加**ExportImageFiel
}

```

导入代码同上:
```csharp

public async Task ImportPictureBase64_Test()
Expand All @@ -190,7 +231,7 @@ public async Task ImportPictureBase64_Test()
}

```

如下图所示,我们就很方便的得到了图片的base64编码的结果:
![将图片导入为base64](../res/8-3.png)

## Reference
Expand Down
Binary file added res/8-4.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.

0 comments on commit de20652

Please sign in to comment.