日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Magicodes.IE Csv导入导出

發(fā)布時(shí)間:2023/12/4 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Magicodes.IE Csv导入导出 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

說明

本章主要說明如何使用Magicodes.IE.Csv進(jìn)行Csv導(dǎo)入導(dǎo)出.

主要步驟

1.安裝包Magicodes.IE.Csv

Install-Package Magicodes.IE.Csv


2.使用Magicodes.IE.Csv導(dǎo)出Csv

通過如下代碼片段我們將導(dǎo)出的內(nèi)容通過相應(yīng)的特性做出相應(yīng)的處理.

ExporterHeaderAttribute

  • DisplayName:顯示名稱

  • Format:格式化

  • IsIgnore:是否忽略

public class ExportTestDataWithAttrs{[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; }[ExporterHeader(DisplayName = "數(shù)值", Format = "#,##0")]public decimal Number { get; set; }[ExporterHeader(DisplayName = "名稱", IsAutoFit = true)]public string Name { get; set; }/// <summary>/// 時(shí)間測試/// </summary>[ExporterHeader(DisplayName = "日期1", Format = "yyyy-MM-dd")]public DateTime Time1 { get; set; }/// <summary>/// 時(shí)間測試/// </summary>[ExporterHeader(DisplayName = "日期2", Format = "yyyy-MM-dd HH:mm:ss")]public DateTime? Time2 { get; set; }public DateTime Time3 { get; set; }public DateTime Time4 { get; set; }/// <summary>/// 長數(shù)值測試/// </summary>[ExporterHeader(DisplayName = "長數(shù)值", Format = "#,##0")]public long LongNo { get; set; }}

通過DTO導(dǎo)出

public async Task ExportHeaderAsByteArray_Test(){IExporter exporter = new CsvExporter();var filePath = GetTestFilePath($"{nameof(ExportHeaderAsByteArray_Test)}.csv");DeleteFile(filePath);var result = await exporter.ExportHeaderAsByteArray(GenFu.GenFu.New<ExportTestDataWithAttrs>());}

3.使用Magicodes.IE.Csv導(dǎo)入Csv

對于csv導(dǎo)入我們可以通過,ImporterHeader Name屬性去對應(yīng)我們的Dto屬性.并且可以通過ValueMapping對枚舉類型進(jìn)行相關(guān)的映射,并向我們返回相對應(yīng)的值

public async Task StudentInfoImporter_Test(){var filePath = Path.Combine(Directory.GetCurrentDirectory(), "TestFiles", "Import", "學(xué)生基礎(chǔ)數(shù)據(jù)導(dǎo)入.csv");var import = await Importer.Import<ImportStudentDto>(filePath);} /// <summary>/// 導(dǎo)入學(xué)生數(shù)據(jù)Dto/// </summary>public class ImportStudentDto{/// <summary>/// 序號/// </summary>[ImporterHeader(Name = "序號")]public long SerialNumber { get; set; }/// <summary>/// 學(xué)籍號/// </summary>[ImporterHeader(Name = "學(xué)籍號")]public string StudentCode { get; set; }/// <summary>/// 姓名/// </summary>[ImporterHeader(Name = "姓名")]public string Name { get; set; }/// <summary>/// 身份證號碼/// </summary>[ImporterHeader(Name = "身份證號")]public string IdCard { get; set; }/// <summary>/// 性別/// </summary>[ImporterHeader(Name = "性別")][ValueMapping("男", 0)][ValueMapping("女", 1)]public Genders Gender { get; set; }/// <summary>/// 家庭地址/// </summary>[ImporterHeader(Name = "家庭住址")]public string Address { get; set; }/// <summary>/// 家長姓名/// </summary>[ImporterHeader(Name = "家長姓名")]public string Guardian { get; set; }/// <summary>/// 家長聯(lián)系電話/// </summary>[ImporterHeader(Name = "家長聯(lián)系電話")]public string GuardianPhone { get; set; }/// <summary>/// 學(xué)號/// </summary>[ImporterHeader(Name = "學(xué)號")]public string StudentNub { get; set; }/// <summary>/// 宿舍號/// </summary>[ImporterHeader(Name = "宿舍號")]public string DormitoryNo { get; set; }/// <summary>/// QQ/// </summary>[ImporterHeader(Name = "QQ號")]public string QQ { get; set; }/// <summary>/// 民族/// </summary>[ImporterHeader(Name = "民族")]public string Nation { get; set; }/// <summary>/// 戶口性質(zhì)/// </summary>[ImporterHeader(Name = "戶口性質(zhì)")]public string HouseholdType { get; set; }/// <summary>/// 聯(lián)系電話/// </summary>[ImporterHeader(Name = "學(xué)生聯(lián)系電話")]public string Phone { get; set; }/// <summary>/// 狀態(tài)/// 測試可為空的枚舉類型/// </summary>[ImporterHeader(Name = "狀態(tài)")]public StudentStatus? Status { get; set; }/// <summary>/// 備注/// </summary>[ImporterHeader(Name = "備注")]public string Remark { get; set; }/// <summary>/// 是否住校(宿舍)/// </summary>[ImporterHeader(IsIgnore = true)]public bool? IsBoarding { get; set; }/// <summary>/// 所屬班級id/// </summary>[ImporterHeader(IsIgnore = true)]public Guid ClassId { get; set; }/// <summary>/// 學(xué)校Id/// </summary>[ImporterHeader(IsIgnore = true)]public Guid? SchoolId { get; set; }/// <summary>/// 校區(qū)Id/// </summary>[ImporterHeader(IsIgnore = true)]public Guid? CampusId { get; set; }/// <summary>/// 專業(yè)Id/// </summary>[ImporterHeader(IsIgnore = true)]public Guid? MajorsId { get; set; }/// <summary>/// 年級Id/// </summary>[ImporterHeader(IsIgnore = true)]public Guid? GradeId { get; set; }}


Reference

https://github.com/dotnetcore/Magicodes.IE

層出不窮的新技術(shù)對程序員來說既是挑戰(zhàn)也是機(jī)遇,固守自己的一畝三分地遲早落于他人,是時(shí)候跳出來看看行業(yè)內(nèi)的發(fā)展新趨勢,參與2020 DAMS中國數(shù)據(jù)智能管理峰會是個(gè)不錯(cuò)的選擇,其中前沿技術(shù)議題包括:

《當(dāng)5G遇上金融,看電信甜橙金融如何創(chuàng)新?》中國電信甜橙金融技術(shù)創(chuàng)新中心總經(jīng)理 張小虎

《智能制造的數(shù)字化基礎(chǔ)的設(shè)計(jì)與演進(jìn)》長城汽車集團(tuán)云計(jì)算總監(jiān) 張小斌

《平安銀行“傳統(tǒng)+互聯(lián)網(wǎng)”混合CMDB及運(yùn)營中臺實(shí)踐》平安銀行運(yùn)營開發(fā)負(fù)責(zé)人 徐大蔚

《中信銀行的DevOps實(shí)踐》中信銀行DevOps實(shí)施牽頭人 李紅濤

8月7日,一起在上海洞悉技術(shù)發(fā)展新趨勢,逆襲碼農(nóng)人生吧!

轉(zhuǎn)載是一種動力 分享是一種美德

如果喜歡作者的文章,請關(guān)注【麥扣聊技術(shù)】訂閱號以便第一時(shí)間獲得最新內(nèi)容。本文版權(quán)歸作者和湖南心萊信息科技有限公司共有,歡迎轉(zhuǎn)載,但未經(jīng)作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接,否則保留追究法律責(zé)任的權(quán)利。

文檔官網(wǎng):docs.xin-lai.com

QQ群:

編程交流群<85318032>?

產(chǎn)品交流群<897857351>

創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)

總結(jié)

以上是生活随笔為你收集整理的Magicodes.IE Csv导入导出的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。