簡體   English   中英

在不同的 Excel 工作表 C# 中循環 Excel 行

[英]Loop on excel rows in different Excel worksheets C#

我有一個包含多個工作表的 excel 文件 myexcel.xlsx。 所有工作表的第一行都具有相同的列名。 一列稱為 ID,另一列稱為總計。 我正在查看每個工作表中的每一行,然后我想知道如何檢查列 ID 是否存在於同一工作表或其他工作表的任何其他行中。 如果在其他地方找不到該 ID,則總數將僅等於該行的 Total 列,但如果同一 ID 存在於同一/其他工作表的另一行中,則我想添加另一行的 Total 列然后忽略 for 循環中相同 ID 的所有這些行,以便它們不會重復。

            Excel.Application myapp = new Excel.Application();
            Excel.Workbook myworkbook = myapp(@"myexcel.xlsx");
            for (int i = 1; i <= myworkbook.Worksheets.Count; i++)
            {
                Excel._Worksheet myworksheet = myworkbook.Worksheets[i];
                Excel.Range myrange = myworksheet.UsedRange;
                int myrowCount = myrange.Rows.Count;
            }

我不知道使用 Excel 工作表的正確語法,所以我會給你一個基本的例子來說明我認為你在問什么。 您必須調整代碼以使其正常工作,但是如果您想聚合(獲取總和)具有相同“ID”的所有行中的“總計”,您應該能夠執行以下操作:

var totalsDictionary = new Dictionary<int, int>();

for (var ws = 0; ws < worksheets.Count; ws++)
{
    var worksheet = worksheets[ws];
    for (var row = 0; row < worksheet.Rows.Count; row++)
    {
        var id = worksheet.Rows[row]["ID"];
        var total = worksheet.Rows[row]["Total"];
        if (totalsDictionary.ContainsKey(id))
        {
            totalsDictionary[id] += total;
        }
        else
        {
            totalsDictionary.Add(id, total);
        }
    }
}

// totalsDictionary now contains the sum of Totals for each ID

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM