ie如何导入html文件类型,Magicodes.IE: 导入导出通用库,支持Dto导入导出以及动态导出,支持Excel、Word、Pdf和Html。...

Magicodes.IE

导入导出通用库,支持Dto导入导出以及动态导出,支持Excel、Word、Pdf和Html。

疯狂的徽章

GitHub

Magicodes.IE?style=social

Magicodes.IE?style=social

Magicodes.IE?style=social

Magicodes.IE?style=social

Magicodes.IE?style=social

Magicodes.IE?style=social

Magicodes.IE?style=social

Magicodes.IE?style=social

Magicodes.IE?style=social

Magicodes.IE?style=social

Azure DevOps

Build Status:dotnetcore.Magicodes.IE?branchName=master

Azure DevOps coverage (master):

master

Azure DevOps tests (master):

master

Nuget

名称

Nuget

Magicodes.IE.Core

Magicodes.IE.Core

Magicodes.IE.Excel

Magicodes.IE.Excel

Magicodes.IE.Pdf

Magicodes.IE.Pdf

Magicodes.IE.Word

Magicodes.IE.Word

Magicodes.IE.Html

Magicodes.IE.Html

注意

Excel导入不支持“.xls”文件,即不支持Excel97-2003。

如需在Docker中使用,请参阅文档中的《Docker中使用》一节。

相关功能均已编写单元测试,在使用的过程中可以参考单元测试。

此库会长期支持,但是由于精力有限,希望大家能够多多参与。

教程

更新历史见下文。

特点

8a001f1392a17e93a2259ed986cd8652.png

需配合相关导入导出的DTO模型使用,支持通过DTO以及相关特性控制导入导出。配置特性即可控制相关逻辑和显示结果,无需修改逻辑代码;

d4460614946e1a172096e86a4441476d.png

支持各种筛选器,以便支持多语言、动态控制列展示等场景,具体使用见单元测试:

导入列头筛选器(可动态指定导入列、导入的值映射关系)

导出列头筛选器(可动态控制导出列,支持动态导出(DataTable))

导入结果筛选器(可修改标注文件)

导出支持文本自定义过滤或处理;

导入支持中间空行自动跳过;

导入支持自动根据 DTO 生成导入模板,针对必填项将自动标注;

8b7b26c226b965640894eb8122b3cc1b.png

导入支持数据下拉选择,目前仅支持枚举类型;

导入数据支持前后空格以及中间空格处理,允许指定列进行设置;

导入支持模板自动检查,数据自动校验,异常统一处理,并提供统一的错误封装,包含异常、模板错误和行数据错误;

703b6b9af07d5f42c44cd51a53a407dd.png

支持导入表头位置设置,默认为1;

支持导入列乱序,无需按顺序一一对应;

支持导入指定列索引,默认自动识别;

导出Excel支持拆分Sheet,仅需设置特性【ExporterAttribute】的【MaxRowNumberOnASheet】的值,为0则不拆分。具体见单元测试;

支持将导入Excel进行错误标注;

d1be5f5110144be0fde1a8eff90aa075.png

e51c0de73180ed6b6f8558e5df02b2be.png

导入支持截止列设置,如未设置则默认遇到空格截止;

支持导出HTML、Word、Pdf,支持自定义导出模板;

导出HTML

84945af5d316c39451bd86cc8d5e6196.png

导出Word

7f22b57b45cb30c26c00f4e1902d8ca3.png

导出Pdf,支持设置,具体见更新日志

d283b6ea0b10038b220862ffe6afd2e0.png

导出收据

90edd360f6d0c4f6831fc7088643a8d0.png

导入支持重复验证;

52ee4f2754ee599e30ebe13bca1d678a.png

支持单个数据模板导出,常用于导出收据、凭据等业务

支持动态列导出(基于DataTable),并且超过100W将自动拆分Sheet。(感谢张善友老师(https://github.com/xin-lai/Magicodes.IE/pull/8 ))

支持值映射,支持通过“ValueMappingAttribute”特性设置值映射关系。用于生成导入模板的数据验证约束以及进行数据转换。

///

/// 性别

///

[ImporterHeader(Name = "性别")]

[Required(ErrorMessage = "性别不能为空")]

[ValueMapping(text: "男", 0)]

[ValueMapping(text: "女", 1)]

public Genders Gender { get; set; }

支持枚举和Bool类型的导入数据验证项的生成,以及相关数据转换

枚举默认情况下会自动获取枚举的描述、显示名、名称和值生成数据项

///

/// 学生状态 正常、流失、休学、勤工俭学、顶岗实习、毕业、参军

///

public enum StudentStatus

{

///

/// 正常

///

[Display(Name = "正常")]

Normal = 0,

///

/// 流失

///

[Description("流水")]

PupilsAway = 1,

///

/// 休学

///

[Display(Name = "休学")]

Suspension = 2,

///

/// 勤工俭学

///

[Display(Name = "勤工俭学")]

WorkStudy = 3,

///

/// 顶岗实习

///

[Display(Name = "顶岗实习")]

PostPractice = 4,

///

/// 毕业

///

[Display(Name = "毕业")]

Graduation = 5,

///

/// 参军

///

[Display(Name = "参军")]

JoinTheArmy = 6,

}

d1aa5189e57419c22f26fd9c707ae72a.png

bool类型默认会生成“是”和“否”的数据项

如果已设置自定义值映射,则不会生成默认选项

支持excel多Sheet导入;

f06a5b32a9ce02756023c6307348c439.png

支持Excel模板导出

bf29415d87f4c00a4b00e756a4385e63.png

VNext

以下内容均已有思路,但是缺乏精力,因此虚席待PR,有兴趣的朋友可以参与进来,多多交流。

将代码单元测试覆盖率提高到90%(目前为86%)

Pdf导出支持.NET Framework 461

完成自动构建流程,并通过自动构建发包

表头样式设置

自定义模板导出

Excel (#10)

加强值映射序列,比如支持方法、Dto接口的方式来获取

生成导入模板时必填项支持自定义样式配置

CSV支持

导入结果支持生成HTML输出

Excel导出支持图片

解决Excel导出无法进行数据筛选的问题(#17)

Excel单元格自动合并(#9)

导入导出支持指定位置[CellAddress(Row = 2, Column = 2)](#19)

生成的导入模板支持数据验证

优化包依赖,拆解项目

导入结果筛选器

导入列头筛选器

联系我们

订阅号

关注“麦扣聊技术”订阅号可以获得最新文章、教程、文档:

QQ群

编程交流群<85318032>

产品交流群<897857351>

文档官网&官方博客

其他开源库

更新历史

2019.02.14

【Nuget】版本更新到2.1.0

【导出】PDF导出支持.NET 4.6.1,具体见单元测试

2019.02.13

【Nuget】版本更新到2.0.2

【导出】修复导出HTML、Pdf、Word时,模板在某些情况下编译报错的问题。

【导入】重写空行检查。

2019.02.11

【Nuget】版本更新到2.0.0

【导出】Excel模板导出修复多个Table渲染以及合并单元格渲染的问题,具体见单元测试“ExportByTemplate_Test1”。问题见(https://github.com/dotnetcore/Magicodes.IE/issues/34)。

【导出】完善模板导出的单元测试,针对导出结果添加渲染检查,确保所有单元格均已渲染。

2019.02.05

【Nuget】版本更新到2.0.0-beta4

【导入】支持列筛选器(需实现接口【IImportHeaderFilter】),可用于兼容多语言导入等场景,具体见单元测试【ImportHeaderFilter_Test】

【导入】支持传入标注文件路径,不传参则默认同目录"_"后缀保存

【导入】完善单元测试【ImportResultFilter_Test】

【其他】修改【ValueMappingAttribute】的命名空间为Magicodes.ExporterAndImporter.Core

2019.02.04

【Nuget】版本更新到2.0.0-beta2

【导入】支持导入结果筛选器——IImportResultFilter,可用于多语言场景的错误标注,具体使用见单元测试【ImportResultFilter_Test】

【其他】修改IExporterHeaderFilter的命名空间为Magicodes.ExporterAndImporter.Core.Filters

2019.01.18

【Nuget】版本更新到2.0.0-beta1

【导出】完全重构整个导出Excel模块并且重写大部分接口

【导出】支持列头筛选器——IExporterHeaderFilter,具体使用见单元测试

【导出】修复转换DataTable时支持为空类型

【导出】导出Excel支持拆分Sheet,仅需设置特性【ExporterAttribute】的【MaxRowNumberOnASheet】的值,为0则不拆分。具体见单元测试

【导出】修复导出结果无法筛选的问题。目前导出即为数据表

【导出】添加扩展方法ToExcelExportFileInfo

【导出】IExporter再添加两个动态DataTable导出方法,无需定义Dto即可动态导出数据,并且支持表头筛选器、Sheet拆分

///

/// 导出Excel

///

/// 文件名称

/// 数据

/// 表头筛选器

/// 一个Sheet最大允许的行数,设置了之后将输出多个Sheet

/// 文件

Task Export(string fileName, DataTable dataItems, IExporterHeaderFilter exporterHeaderFilter = null, int maxRowNumberOnASheet = 1000000);

///

/// 导出Excel

///

/// 数据

/// 表头筛选器

/// 一个Sheet最大允许的行数,设置了之后将输出多个Sheet

/// 文件二进制数组

Task ExportAsByteArray(DataTable dataItems, IExporterHeaderFilter exporterHeaderFilter = null, int maxRowNumberOnASheet = 1000000);

2019.01.16

【Nuget】版本更新到1.4.25

【导出】修复没有定义导出特性会报错的情形,具体见单元测试“ExportTestDataWithoutExcelExporter_Test”。问题见(https://github.com/dotnetcore/Magicodes.IE/issues/21)。

2019.01.16

【Nuget】版本更新到1.4.24

【导出】修复日期格式默认导出数字的Bug,默认输出“yyyy-MM-dd”,可以通过设置“[ExporterHeader(DisplayName = "日期2", Format = "yyyy-MM-dd HH:mm:ss")]”来修改。问题见(https://github.com/dotnetcore/Magicodes.IE/issues/22)。

2019.01.14

【Nuget】版本更新到1.4.21

【导出】Excel模板导出修复数据项为Null报错的Bug。

2019.01.09

【Nuget】版本更新到1.4.20

【导出】Excel模板导出性能优化。5000条表格数据1秒内完成,具体见单元测试ExportByTemplate_Large_Test。

2019.01.08

【Nuget】版本更新到1.4.18

【导入】支持导入最大数量限制

ImporterAttribute支持MaxCount设置,默认为50000

完成相关单元测试

2019.01.07

【Nuget】版本更新到1.4.17

【重构】重构IExportFileByTemplate中的ExportByTemplate,将参数htmlTemplate改为template。以便支持Excel模板导出。

【导出】支持Excel模板导出并填写相关单元测试,如何使用见教程《Excel模板导出之导出教材订购表》

支持单元格单个绑定

支持列表

2019.12.17

【Nuget】版本更新到1.4.16

2019.12.10

2019.12.06

【Nuget】版本更新到1.4.14

【重构】大量重构

移除部分未使用的代码

将TemplateFileInfo重命名为ExportFileInfo

将IExporterByTemplate接口拆分为4个接口:IExportListFileByTemplate, IExportListStringByTemplate, IExportStringByTemplate, IExportFileByTemplate,并修改相关实现

重构ImportHelper部分代码

【导入】修复导入Excel时表头设置的问题,已对此编写单元测试,见【产品信息导入】

【完善】编写ExportAsByteArray对于DataTable的单元测试,ExportWordFileByTemplate_Test

2019.11.25

【Nuget】版本更新到1.4.13

【导出】Pdf导出支持特性配置,详见单元测试【导出竖向排版收据】。目前主要支持以下设置:

Orientation:排版方向(横排、竖排)

PaperKind:纸张类型,默认A4

IsEnablePagesCount:是否启用分页数

Encoding:编码设置,默认UTF8

IsWriteHtml:是否输出HTML模板,如果启用,则会输出.html后缀的对应的HTML文件,方便调错

HeaderSettings:头部设置,通常可以设置头部的分页内容和信息

FooterSettings:底部设置

2019.11.24

【Nuget】版本更新到1.4.12

2019.11.20

【Nuget】版本更新到1.4.11

2019.11.16

【Nuget】版本更新到1.4.10

【导出】修复Pdf导出在多线程下的问题

2019.11.13

【Nuget】版本更新到1.4.5

【导出】修复导出Pdf在某些情况下可能会导致内存报错的问题

【导出】添加批量导出收据单元测试示例,并添加大量数据样本进行测试

2019.11.5

【Nuget】版本更新到1.4.4

【导入】修复枚举类型的问题,并编写单元测试

【导入】增加值映射,支持通过“ValueMappingAttribute”特性设置值映射关系。用于生成导入模板的数据验证约束以及进行数据转换。

【导入】优化枚举和Bool类型的导入数据验证项的生成,以便于模板生成和数据转换

枚举默认情况下会自动获取枚举的描述、显示名、名称和值生成数据项

bool类型默认会生成“是”和“否”的数据项

如果已设置自定义值映射,则不会生成默认选项

【导入】支持枚举可为空类型

2019.10.30

【Nuget】版本更新到1.4.0

2019.10.22

【Nuget】版本更新到1.3.7

【导入】修复忽略列的验证问题

【导入】修正验证错误信息,一行仅允许存在一条数据

【导入】修复忽略列在某些情况下可能引发的异常

【导入】添加存在忽略列的导入情形下的单元测试

2019.10.21

【Nuget】版本更新到1.3.4

【导入】支持设置忽略列,以便于在Dto定义数据列做处理或映射

2019.10.18

【优化】优化.NET标准库2.1下集合转DataTable的性能

【重构】多处IList修改为ICollection

【完善】补充部分单元测试

2019.10.12

【重构】重构HTML、PDF导出等逻辑,并修改IExporterByTemplate为:

Task ExportListByTemplate(IList dataItems, string htmlTemplate = null) where T : class;

Task ExportByTemplate(T data, string htmlTemplate = null) where T : class;

【示例】添加收据导出的单元测试示例

2019.9.28

【导出】修改默认的导出HTML、Word、Pdf模板

【导入】添加截断行的单元测试,以测试中间空格和结尾空格

【导入】将【数据错误检测】和【导入】单元测试的Dto分开,确保全部单元测试通过

【文档】更新文档

2019.9.26

【导出】支持导出Word、Pdf、HTML,支持自定义导出模板

【导出】添加相关导出的单元测试

【导入】支持重复验证,需设置ImporterHeader特性的IsAllowRepeat为false

2019.9.19

【导入】支持截止列设置,如未设置则默认遇到空格截止

【导入】导入支持通过特性设置Sheet名称

2019.9.18

【导入】重构导入模块

【导入】统一导入错误消息

Exception :导入异常信息

RowErrors : 数据错误信息

TemplateErrors :模板错误信息,支持错误分级

HasError : 是否存在错误(仅当出现异常并且错误等级为Error时返回true)

【导入】基础类型必填自动识别,比如int、double等不可为空类型自动识别,无需额外设置Required

【导入】修改Excel模板的Sheet名称

【导入】支持导入表头位置设置,默认为1

【导入】支持列乱序(导入模板的列序号不再需要固定)

【导入】支持列索引设置

【导入】支持将导入的Excel进行错误标注,支持多个错误

【导入】加强对基础类型和可为空类型的支持

【EPPlus】由于EPPlus.Core已经不维护,将EPPlus的包从EPPlus.Core改为EPPlus,

2019.9.11

【导入】导入支持自动去除前后空格,默认启用,可以针对列进行关闭,具体见AutoTrim设置

【导入】导入Dto的字段允许不设置ImporterHeader,支持通过DisplayAttribute特性获取列名

【导入】导入的Excel移除对Sheet名称的约束,默认获取第一个Sheet

【导入】导入增加对中间空格的处理支持,需设置FixAllSpace

【导入】导入完善对日期类型的支持

【导入】完善导入的单元测试

要在Java中从InfluxDB查询数据并导出Excel文件,您可以使用以下步骤: 1. 导入InfluxDB Java客户端和Apache POI(用于创建和写入Excel文件)。 ```java import org.influxdb.InfluxDB; import org.influxdb.InfluxDBFactory; import org.influxdb.dto.Query; import org.influxdb.dto.QueryResult; import org.apache.poi.ss.usermodel.*; import org.apache.poi.xssf.usermodel.XSSFWorkbook; ``` 2. 创建InfluxDB客户端并连接到InfluxDB数据。 ```java InfluxDB influxDB = InfluxDBFactory.connect("http://localhost:8086", "username", "password"); influxDB.setDatabase("mydb"); ``` 3. 创建InfluxDB查询并执行查询。 ```java Query query = new Query("SELECT * FROM mymeasurement WHERE time > now() - 1d", "mydb"); QueryResult result = influxDB.query(query); ``` 4. 创建Excel工作簿和工作表,并将查询结果写入Excel文件。 ```java Workbook workbook = new XSSFWorkbook(); Sheet sheet = workbook.createSheet("Data"); int rowNum = 0; for (QueryResult.Result queryResult : result.getResults()) { for (QueryResult.Series series : queryResult.getSeries()) { Row headerRow = sheet.createRow(rowNum++); int cellNum = 0; for (String column : series.getColumns()) { Cell cell = headerRow.createCell(cellNum++); cell.setCellValue(column); } for (List<Object> values : series.getValues()) { Row row = sheet.createRow(rowNum++); int cellNum2 = 0; for (Object value : values) { Cell cell = row.createCell(cellNum2++); cell.setCellValue(value.toString()); } } } } // Write the output to a file FileOutputStream fileOut = new FileOutputStream("output.xlsx"); workbook.write(fileOut); fileOut.close(); ``` 完整代码示例: ```java import org.influxdb.InfluxDB; import org.influxdb.InfluxDBFactory; import org.influxdb.dto.Query; import org.influxdb.dto.QueryResult; import org.apache.poi.ss.usermodel.*; import org.apache.poi.xssf.usermodel.XSSFWorkbook; import java.io.FileOutputStream; import java.io.IOException; import java.util.List; public class InfluxDBToExcel { public static void main(String[] args) throws IOException { // Connect to InfluxDB InfluxDB influxDB = InfluxDBFactory.connect("http://localhost:8086", "username", "password"); influxDB.setDatabase("mydb"); // Query data from InfluxDB Query query = new Query("SELECT * FROM mymeasurement WHERE time > now() - 1d", "mydb"); QueryResult result = influxDB.query(query); // Write data to Excel file Workbook workbook = new XSSFWorkbook(); Sheet sheet = workbook.createSheet("Data"); int rowNum = 0; for (QueryResult.Result queryResult : result.getResults()) { for (QueryResult.Series series : queryResult.getSeries()) { Row headerRow = sheet.createRow(rowNum++); int cellNum = 0; for (String column : series.getColumns()) { Cell cell = headerRow.createCell(cellNum++); cell.setCellValue(column); } for (List<Object> values : series.getValues()) { Row row = sheet.createRow(rowNum++); int cellNum2 = 0; for (Object value : values) { Cell cell = row.createCell(cellNum2++); cell.setCellValue(value.toString()); } } } } // Write the output to a file FileOutputStream fileOut = new FileOutputStream("output.xlsx"); workbook.write(fileOut); fileOut.close(); influxDB.close(); } } ``` 请注意,此示例仅适用于使用InfluxDB 2.0及更高版本。如果您使用的是旧版本,请使用旧版InfluxDB Java客户端并相应地更改查询语法和结果处理代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值