import 'reflect-metadata'; /** * CSV列名映射元数据键 */ export declare const CSV_COLUMN_METADATA = "csv:column"; /** * Excel列名映射元数据键 */ export declare const EXCEL_COLUMN_METADATA = "excel:column"; /** * 列标识类型 * 可以是列名(字符串)、列序号(数字)或Excel列名(A, B, C) */ export type ColumnIdentifier = string | number; /** * CSV列装饰器 * 用于指定CSV文件中列与DTO属性的映射关系 * 支持列名、列序号(从0开始)或Excel列名(A, B, C) * * @example * ```typescript * export class UserImportDto { * @CSVColumn('姓名') // 使用列名 * @CSVColumn(0) // 使用列序号(第一列) * @CSVColumn('A') // 使用Excel列名 * @IsString() * @Length(2, 50) * name: string; * * @CSVColumn('年龄') // 使用列名 * @CSVColumn(1) // 使用列序号(第二列) * @CSVColumn('B') // 使用Excel列名 * @IsNumber() * @Min(0) * @Max(150) * age: number; * } * ``` */ export declare function CSVColumn(columnIdentifier: ColumnIdentifier): PropertyDecorator; /** * Excel列装饰器 * 用于指定Excel文件中列与DTO属性的映射关系 * 支持列名、列序号(从0开始)或Excel列名(A, B, C) * * @example * ```typescript * export class ProductImportDto { * @ExcelColumn('产品名称') // 使用列名 * @ExcelColumn(0) // 使用列序号(第一列) * @ExcelColumn('A') // 使用Excel列名 * @IsString() * @Length(2, 200) * name: string; * * @ExcelColumn('价格') // 使用列名 * @ExcelColumn(1) // 使用列序号(第二列) * @ExcelColumn('B') // 使用Excel列名 * @IsNumber() * @Min(0) * price: number; * } * ``` */ export declare function ExcelColumn(columnIdentifier: ColumnIdentifier): PropertyDecorator; /** * 获取CSV列映射信息 * 返回列标识到属性名的映射Map * * @param dtoClass DTO类 * @returns Map<列标识, 属性名> */ export declare function getCsvColumnMapping(dtoClass: any): Map; /** * 获取Excel列映射信息 * 返回列标识到属性名的映射Map * * @param dtoClass DTO类 * @returns Map<列标识, 属性名> */ export declare function getExcelColumnMapping(dtoClass: any): Map; /** * Excel列名转数字(A=0, B=1, ..., AA=26, AB=27) */ export declare function excelColumnToNumber(columnLetter: string): number; /** * 处理行数据 * 将原始数据行转换为DTO实例,支持多语言错误信息 * 支持列名、列序号和Excel列名(A, B, C) * * @param rowData 原始行数据 * @param dtoClass DTO类 * @param columnMapping 列映射 * @param type 数据类型(csv/excel) * @returns 转换结果 */ export declare function processRowWithMapping(rowData: any, dtoClass: new () => T, columnMapping: Map, type: 'csv' | 'excel'): { instance: T; errors: ValidationError[]; }; /** * 数字转Excel列名(0=A, 1=B, ..., 26=AA, 27=AB) */ export declare function numberToExcelColumn(num: number): string; /** * 验证错误接口 */ interface ValidationError { property: string; value: any; constraints: { [key: string]: { message: string; values?: any[]; }; }; } /** * 格式化验证错误为多语言 * 支持中英文错误信息 * * @param errors class-validator错误数组 * @returns 格式化后的错误信息 */ export declare function formatValidationErrors(errors: ValidationError[]): string[]; /** * 创建CSV数据导入结果 * @param data 成功导入的数据 * @param errors 错误信息 * @param totalRows 总行数 * @param headers 表头信息 * @returns 导入结果对象 */ export declare function createImportResult(data: T[], errors: { row: number; errors: string[]; data: any; }[], totalRows: number, headers?: string[]): { success: boolean; data: T[]; errors: { row: number; errors: string[]; data: any; }[]; totalCount: number; successCount: number; errorCount: number; headers?: string[]; }; export {};