Magicodes.IE 2.3重磅發布——.NET Core開源導入導出庫


在2.3這一版本的更新中,我們迎來了眾多的使用者、貢獻者,在這個里程碑中我們也添加並修復了一些功能。對於新特點的功能我將在下面進行詳細的描述,當然也歡迎更多的人可以加入進來,再或者也很期待大家來提issues或者PR,您的一個issue或者PR將是我們前進的動力。

  • 公式導出 #88

公式導出目前已經在Excel模板導出中支持,我們可以通過如上代碼片段的格式進行將公式應用到我們的Excel導出模板中.

{{Formula::AVERAGE?params=G4:G6}}
{{Formula::SUM?params=G4:G6&G4}}
  • 增加分欄、分sheet、追加rows導出 #74

在該版本中我們支持使用鏈式編程導出我們的Excel,從而起到追加分欄等作用。

在多個DTO導出中我們可以通過如下代碼片段將我們的Excel分欄導出

exporter.Append(list1).SeparateByColumn().Append(list2).ExportAppendData(filePath);

導出形式如下所示:

header 1 header 2   header1
row 1 col 1 row 1 col 2   row1
row 2 col 1 row 2 col 2   row2

我們還可以通過多個DTO進行多Sheet的導出,如下代碼片段所示:

exporter.Append(list1).SeparateBySheet().Append(list2).ExportAppendData(filePath);

當然不僅僅是這樣,我們還可以對行進行追加導出,同時我們可以選擇導出額外的Header信息或者不導出

exporter.Append(list1).SeparateByRow().Append(list2).ExportAppendData(filePath);
header 1 header 2   header1
row 1 col 1 row 1 col 2   row1
row 2 col 1 row 2 col 2   row2
       
row 2 col 1 row 2 col 2   row2

或者我們可以這樣加入Header信息

exporter.Append(list1).SeparateByRow().AppendHeaders().Append(list2).ExportAppendData(filePath);
header 1 header 2   header1
row 1 col 1 row 1 col 2   row1
row 2 col 1 row 2 col 2   row2
       
header 1 header 2   header1
row 2 col 1 row 2 col 2   row2
  • 添加對ExpandoObject類型的支持#135

特別感謝 sgalcheung 添加該特性的導出,具體使用方式如下所示:

class Program
    {
        static async Task Main(string[] args)
        {
            IExporter exporter = new ExcelExporter();
            // 生成測試數據
            var personList = GenFu.GenFu.ListOf<Person>();
​
            // 導出一個只包含"FirstName", "LastName"列的excel
            string fields = "FirstName,LastName"; // 可自定義導出想要的字段
            var expandoObjectList = new List<ExpandoObject>(personList.Count);
            var propertyInfoList = new List<PropertyInfo>();
            var fieldsAfterSplit = fields.Split(',');
            foreach (var field in fieldsAfterSplit)
            {
                var propertyName = field.Trim();
                var propertyInfo = typeof(Person).GetProperty(propertyName);
​
                if (propertyInfo == null)
                {
                    throw new Exception($"Property: {propertyName} 沒有找到:{typeof(Person)}");
                }
​
                propertyInfoList.Add(propertyInfo);
            }
​
            foreach (var person in personList)
            {
                var shapedObj = new ExpandoObject();
​
                foreach (var propertyInfo in propertyInfoList)
                {
                    var propertyValue = propertyInfo.GetValue(person);
                    ((IDictionary<string, object>)shapedObj).Add(propertyInfo.Name, propertyValue);
                }
​
                expandoObjectList.Add(shapedObj);
            }
​
            string filePath = Path.Combine(Directory.GetCurrentDirectory(), "dynamicExportExcel.xlsx");
            var result = await exporter.ExportAsByteArray<ExpandoObject>(expandoObjectList);
            File.WriteAllBytes(filePath, result);
        }
    }
​
​
    class Person
    {
        public string FirstName { get; set; }
        public string LastName { get; set; }
        public string Title { get; set; }
        public int Age { get; set; }
        public int NumberOfKids { get; set; }
    }

感謝大家對Magicodes.IE的支持。關於更多發布信息大家可以參閱:


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM