ZhileTime.IE.Extensions.CSharpScript 1.1.5

There is a newer version of this package available.
See the version list below for details.
dotnet add package ZhileTime.IE.Extensions.CSharpScript --version 1.1.5
                    
NuGet\Install-Package ZhileTime.IE.Extensions.CSharpScript -Version 1.1.5
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="ZhileTime.IE.Extensions.CSharpScript" Version="1.1.5" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="ZhileTime.IE.Extensions.CSharpScript" Version="1.1.5" />
                    
Directory.Packages.props
<PackageReference Include="ZhileTime.IE.Extensions.CSharpScript" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add ZhileTime.IE.Extensions.CSharpScript --version 1.1.5
                    
#r "nuget: ZhileTime.IE.Extensions.CSharpScript, 1.1.5"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package ZhileTime.IE.Extensions.CSharpScript@1.1.5
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=ZhileTime.IE.Extensions.CSharpScript&version=1.1.5
                    
Install as a Cake Addin
#tool nuget:?package=ZhileTime.IE.Extensions.CSharpScript&version=1.1.5
                    
Install as a Cake Tool

ZhileTime.IE

最近原件报告

面向 .NET 10 的文件导入导出 SDK。Excel 与 CSV 支持数据导入、模板生成和校验;Excel、CSV、HTML、Word、PDF 支持导出;ASP.NET Core 适配层负责将导出结果交付为 HTTP 下载。

本页依据当前公开接口、服务注册和测试重写。业务系统负责权限、数据查询、导入结果落库与任务调度,SDK 负责文件解析、转换、渲染和输出。

NuGet · 源码 · 原件报告 · 云原生构建 · 变更记录

安装

当前源码版本:1.1.5。公开可用状态以 NuGet 和发布报告为准。

dotnet add package ZhileTime.IE.Excel --version 1.1.5
NuGet 包 目标框架
ZhileTime.IE.AspNetCore net10.0
ZhileTime.IE.Core net10.0
ZhileTime.IE.Csv net10.0
ZhileTime.IE.EPPlus net10.0
ZhileTime.IE.Excel net10.0
ZhileTime.IE.Excel.AspNetCore net10.0
ZhileTime.IE.Excel.NPOI net10.0
ZhileTime.IE.Extensions.CSharpScript net10.0
ZhileTime.IE.Extensions.RulesEngine net10.0
ZhileTime.IE.Html net10.0
ZhileTime.IE.Pdf net10.0
ZhileTime.IE.Runtime net10.0
ZhileTime.IE.Word net10.0

版本、包名和目标框架由 common.props、build/packages.json 与实际项目文件生成。中央包管理项目将版本放入 Directory.Packages.props,业务项目使用 PackageReference,无需检出本仓库或添加本地 ProjectReference。

选择模块

需求 直接安装的包 当前实现
Excel 导入、导出、动态映射 ZhileTime.IE.Excel 基于本仓随包维护的 EPPlus;提供工作簿、模板、追加导出和导入能力接口
CSV 数据交换 ZhileTime.IE.Csv CSV 导入、导出、模板及行错误结果
HTML 模板渲染 ZhileTime.IE.Html 模板文本、流内容与文件导出
Word 模板导出 ZhileTime.IE.Word 模板数据渲染为 Word 输出,不提供 Word 导入
PDF 模板导出 ZhileTime.IE.Pdf HTML 模板渲染与 wkhtmltopdf 原生转换;由有界队列调度
多格式 HTTP 导出 ZhileTime.IE.AspNetCore 显式注册启用的格式,统一响应写出、缓冲和释放
MVC Excel 下载结果 ZhileTime.IE.Excel.AspNetCore XlsxFileResult<T> 接收集合和 IExcelWorkbookExporter
.xlsx 兼容重保存 ZhileTime.IE.Excel.NPOI 已生成的 .xlsx 经 NPOI XSSFWorkbook 再保存;不是独立导入引擎,也不提供 .xls 支持
动态导入中的受信 C# 脚本 ZhileTime.IE.Extensions.CSharpScript 按需注册脚本编译器
动态导入中的规则表达式 ZhileTime.IE.Extensions.RulesEngine 按需注册规则编译器

Core 承载属性、导入结果和流内容契约;Runtime 承载导出文档与格式 Provider 契约;EPPlus 是底层工作簿实现。通常由所选格式包传递引入这些依赖。

从 DTO 导出并回读 Excel

下面是一个可放入 .NET 10 控制台项目的完整示例。安装 ZhileTime.IE.Excel 后运行,会写出并回读 employees.xlsx。

using System.ComponentModel.DataAnnotations;
using ZhileTime.IE.Core.Attributes;
using ZhileTime.IE.Excel;

var rows = new List<EmployeeRow>
{
    new() { Name = "张三", Email = "zhangsan@example.com" }
};
var exporter = new ExcelExporter();
await using (var output = File.Create("employees.xlsx"))
{
    await exporter.ExportToStreamAsync(rows, output);
}

var importer = new ExcelImporter();
var result = await importer.ImportAsync<EmployeeRow>("employees.xlsx");
if (result.HasError)
{
    Console.WriteLine($"导入未通过:模板错误 {result.TemplateErrors.Count},行错误 {result.RowErrors.Count}");
    return;
}
foreach (var row in result.Data)
{
    Console.WriteLine($"{row.Name}: {row.Email}");
}

public sealed class EmployeeRow
{
    [Required]
    [ExportHeader("姓名")]
    [ImportHeader(Name = "姓名")]
    public string Name { get; set; } = "";

    [EmailAddress]
    [ExportHeader("邮箱")]
    [ImportHeader(Name = "邮箱")]
    public string Email { get; set; } = "";
}

ImportResult<T> 同时包含 Data、TemplateErrors、RowErrors、Exception 和 HasError。成功解析出部分行不等于整批导入成功;先评审错误结果,再由业务系统决定是否持久化。

需要用户先填写标准模板时,调用 GenerateTemplateFileAsync<EmployeeRow>("template.xlsx")。需要返回标注文件时,使用 ImportAsync<T>(输入流, 标注输出流, ...),或指定标注输出文件路径。模板级结构检查可单独使用 IExcelTemplateValidator。

流与资源所有权

优先根据消费方式选择 API:

  • 已有目标流:ExportToStreamAsync 直接写入,由调用方管理目标流。
  • 希望延后读取:ExportStreamAsync 返回 IExportStreamContent,调用方必须释放内容对象和打开的读取流。
  • 小文件需要字节数组:ExportAsBytesAsync 等便利扩展会将结果载入内存,不适合作为所有大文件的默认出口。
using var content = await exporter.ExportStreamAsync(rows);
using var input = content.OpenReadStream();
await using var output = File.Create("employees-copy.xlsx");
await input.CopyToAsync(output);

接口接受 CancellationToken;Web 请求应沿调用链传递 HttpContext.RequestAborted。返回流接口不代表工作簿计算过程是恒定内存,应按实际行数、图片和模板规模验证资源预算。

在依赖注入中使用

using Microsoft.Extensions.DependencyInjection;
using ZhileTime.IE.Excel;

services.AddExcelExporter();
services.AddExcelImporter();

导出器、导入器为作用域服务。除 IExcelExporter / IExcelImporter 聚合入口外,可以只注入需要的能力,例如 IExcelWorkbookExporter、IExcelTemplateExporter、IExcelDataImporter、IExcelTemplateGenerator;同一作用域的别名复用对应实现实例。

CSV、HTML、Word、PDF 分别提供 AddCsvExporter / AddCsvImporter、AddHtmlExporter、AddWordExporter、AddPdfExporter。PDF 转换调度器由容器管理,不应在每次请求里另建队列。

Excel 进阶入口

场景 当前入口与约束
列名、顺序、格式与数据校验 DTO 使用 ExportHeader、ImportHeader 和 DataAnnotations;导入校验不替代业务规则
调用级导出覆盖 ExcelExportOptions 设置表头过滤、单 Sheet 行数、动态字段和图片选项;不修改共享属性实例
多 Sheet 与追加 IExcelMultiSheetImporter;Append() 创建追加上下文,再选择按行、列或 Sheet 分隔
模板导出 IExcelTemplateExporter 接收模板与数据;模板处理逻辑见当前 Exporting/Templates 实现
图片 支持图片导入与导出;可限制源尺寸、像素、超时、重试和占位图
动态导入 DynamicExcelImporter 读取 ImportMapDefinition,编译为 DynamicImportExecutionPlan 后执行 Resolve / ResolveAsync

动态导入通过 AddDynamicExcelImporter 注册。脚本与规则能力分别显式调用 AddCSharpScriptImportTransformCompiler、AddRuleEngineImportTransformCompiler;只安装包不会自动信任或执行上传者提供的代码。定义、类型解析和可调用服务必须由应用控制。

ASP.NET Core 下载

安装 ZhileTime.IE.AspNetCore,一次注册全局选项,再组合需要的格式:

using ZhileTime.IE.AspNetCore;

builder.Services.AddIEHttpExport(options =>
{
    options.MemoryThresholdBytes = 4 * 1024 * 1024;
    options.ResponseBufferMemoryThresholdBytes = 1024 * 1024;
})
.AddExcelHttpExport()
.AddCsvHttpExport();

不要在同一服务集合重复调用 AddIEHttpExport。以上只启用 Excel/CSV;HTML、Word、PDF 通过对应 Add*HttpExport 显式加入。

若控制器已经有查询结果,可安装 ZhileTime.IE.Excel.AspNetCore,注入 IExcelWorkbookExporter,直接返回 new XlsxFileResult<EmployeeRow>(rows, exporter, "employees.xlsx")。响应写出层处理内容类型、文件名、请求取消和导出内容释放。

PDF 与部署边界

PDF 依赖 wkhtmltopdf 原生库和可用字体。Linux CI 的确切依赖维护在 Dockerfile.ci,部署应用应按目标操作系统与架构准备运行库,不能把 Linux x64 验证推断为所有平台均可用。

PdfConversionDispatcherOptions 默认一个工作线程、自动推导队列容量(默认四个)、入队等待 30 秒;可通过 AddPdfExporter 或 HttpExportOptions.PdfDispatcher 配置。增加工作线程需要结合实际原生转换负载评估。

上传文件大小、远程图片来源、模板来源、脚本权限、输出目录和临时磁盘容量属于应用边界。不要将未验证的导入数据直接落库,也不要把外部输入直接作为脚本或任意文件路径执行。

构建状态与报告

上方徽标动态显示最近一次原件报告状态,可能来自主干或 MR;请进入云原生构建页按分支和源码提交核对。构建通过不代表包已发布;正式发布以整批包内容核验通过及对应 Release 为准。

内容 查看入口 自动化行为
构建与测试 原件报告 → 选择构建 → 测试报告 每次执行生成 JUnit,展示通过、失败和跳过项
通用报告 原件报告 → 选择构建 → 通用报告 汇总版本、源码提交、测试、步骤耗时、工具链和缓存信息
原始证据 同一构建的构建产物 保存 TRX、日志、JSON/Markdown 报告及带 SHA256 的包原件
正式发布 发布计划 · Releases 核验 NuGet 公开内容后创建版本页及说明,并回读确认
版本变更 CHANGELOG 候选流程从提交历史生成当前版本草稿,经 MR 评审后复用于 NuGet 和 Release 说明

详细报告需要 CODING 项目访问权限。CI 同时采集行与分支覆盖率,按模块和运行时生成独立 HTML 明细、JSON 和 SVG 徽标。进入同一构建的“通用报告 → 代码覆盖率”查看;徽标绑定该次构建,不把历史值冒充当前主干状态。详见覆盖率说明。云原生执行 MR、主干和定时构建,既有 CI 接收同一原件并展示报告;独立 CD 提升已验证包。详见云原生交付与恢复。

开发与发布

使用 global.json 指定的 SDK、PowerShell 7、Python 3,以及工具镜像中固定的 Gitleaks。

# 修改版本或包清单后刷新本页安装区域
python build/ci_report.py docs-update
# 与 CODING 相同的构建、测试、包内容和报告入口
pwsh -NoProfile -File build/ci.ps1

CI 执行脚本回归、元数据检查、密钥扫描、依赖审计、IE/Web/EPPlus 测试及 13 个包的打包,输出 JUnit、HTML、步骤日志、包清单与 SHA256 原件归档。测试数量和跳过项以每次真实报告为准。

发布采用候选 MR → 主干 CI 原件 → 注解标签 → 审批推包 → 公开内容核验 → CODING 版本页的链路。候选按提交历史计算语义版本,更新 common.props、CHANGELOG 和 README 包表,并自动创建 MR,由维护者评审合并;CD 只恢复 CI 原件,不重新打包。新流程的平台启用和验收状态见发布手册,已发布版本不可覆盖。

自动版本按 fix/perf、feat、破坏性变更分别提升 patch、minor、major;纯文档或测试变更不触发发版。无法分类的产品变更进入 NeedsReview,需要维护者明确版本与理由。已发布的标签、包和 Release 说明出现冲突时停止,不静默覆盖。

维护者可参考自动版本与发布维护,了解版本规划、API 兼容性基线、延迟收尾及定期复验。

许可证

仓库许可证见 LICENSE。本项目维护 ZhileTime 包发行线并保留上游版权声明;底层组件与传递依赖仍需遵守各自许可证。

Product Compatible and additional computed target framework versions.
.NET net10.0 is compatible.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
1.1.6 105 9/25/2026
1.1.5 107 9/25/2026
1.1.4 121 9/24/2026
1.1.3 90 9/24/2026
1.1.2 93 9/24/2026
1.1.1 89 9/24/2026
1.1.0 128 5/2/2026

### 版本与迁移评审

经用户批准发布工程维护版本:完善云原生构建、平台配置对账、覆盖率基线、原件恢复与诊断归档,产品 API 无破坏性变更。