第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

使用 Epplus 生成帶有嵌套列表的 xlsx

使用 Epplus 生成帶有嵌套列表的 xlsx

C#
鴻蒙傳說 2022-12-24 13:58:05
我正在使用 EPPlus 生成 xlsx 文檔。我下面的模型包括一個List<string>,這就是事情對我來說變得復雜的地方:                var tableBody = worksheet.Cells["B2:B2"].LoadFromCollection(                    from f in saaOperators.OrderBy(x => x.Identifier).Where(t => t.Identifier.StartsWith(worksheet.Name) ||                    (t.Identifier.StartsWith("W") && worksheet.Name.Equals("BIR")))                    from u in f.Units                    select new { f.Identifier, f.Name, f.Profile, u }, true);如果我這樣做select new {f.Identifier, f.Name, f.Profile, f.Units },它只返回Units列表中的第一項。如果我正在select new { f.Identifier, f.Name, f.Profile, u }為其中的每個項目做,Units它會創(chuàng)建帶有重復項的新行Identifier,Name并且Profile。這是我的模型類:public class SaaOperator{    public string Identifier { get; set; }    public string Name { get; set; }    public string Profile { get; set; }    public List<string> Units { get; set; } = new List<string>();}識別具有相同值的單元格并合并它們的正確方法Identifier是Name什么Profile?例如,在下面的屏幕截圖中,我需要合并B3:B4, B5:B6, C3:C4, C5:C6, D3:D4,D5:D6.我知道我可以使用worksheet.Cells["B3:B4"].Merge = true;,但我需要一種方法來以編程方式識別具有相同值的開始和結(jié)束單元格。
查看完整描述

2 回答

?
牧羊人nacy

TA貢獻1862條經(jīng)驗 獲得超7個贊

根據(jù)評論,我會避免使用這種LoadFromCollection方法并采用傳統(tǒng)方法,for因為您所做的太具體了。而且我也會避免嘗試合并單元格,因為這會使事情不必要地復雜化。這應該這樣做:


var data = saaOperators

    .Where(t => t.Identifier.StartsWith(worksheet.Name) || (t.Identifier.StartsWith("W") && worksheet.Name.Equals("BIR")))

    .OrderBy(x => x.Identifier)

    .ToList();


var r = 2;


worksheet.Cells[r, 1].Value = "Identifier";

worksheet.Cells[r, 2].Value = "Name";

worksheet.Cells[r, 3].Value = "Profile";

worksheet.Cells[r, 4].Value = "Unit";

r++;


for (var i = 0; i < data.Count; i++)

{

    var op = data[i];

    worksheet.Cells[r + i, 1].Value = op.Identifier;

    worksheet.Cells[r + i, 2].Value = op.Name;

    worksheet.Cells[r + i, 3].Value = op.Profile;


    if (!op.Units.Any())

        continue;


    for (var j = 0; j < op.Units.Count; j++)

        worksheet.Cells[r + i + j, 4].Value = op.Units[j];


    r += op.Units.Count - 1;

}


查看完整回答
反對 回復 2022-12-24
?
臨摹微笑

TA貢獻1982條經(jīng)驗 獲得超2個贊

這是一種方法:


給定一個List<SaaOperator>或其他IEnumerable<SaaOperator>:


foreach (var saaOperator in saaOperators)

{

    string[] valuesToDisplay;

    for (var x = 0; x < saaOperator.Units.Count; x++)

    {

        if (x == 0) // show all the properties

            valuesToDisplay = new[]

                {saaOperator.Identifier, 

                 saaOperator.Name, 

                 saaOperator.Profile, 

                 saaOperator.Units[x]};

        else // after the first unit, don't repeat the other properties

            valuesToDisplay = new[]

                {"", "", "", saaOperator.Units[x]};

    }

}

換一種說法,

  • 遍歷列表中的所有項目

  • 對于每個項目,遍歷Units列表中的所有值。

  • 如果它是第一項,則顯示所有屬性。如果不是第一項,則只顯示單位。


查看完整回答
反對 回復 2022-12-24
  • 2 回答
  • 0 關注
  • 154 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號