【问题标题】:How to get distinct values and their count from the first column of excel using C#?如何使用 C# 从 excel 的第一列中获取不同的值及其计数?
【发布时间】:2020-02-02 08:44:01
【问题描述】:

我的 excel 表“abc.xls”在 A 到 D 列中包含如下 4 列,其中 A1:D1 包含标题信息,即样本编号、时间、名称、人员:-

Sample number   Time                Name           Man
100             28-10-2014 20:24    absjsdj        abc
1000            28-10-2014 20:13    def            jss
800             29-10-2014 20:13    skdjksj        def
100             30-10-2014 20:13    skdjksj        def
1000            31-10-2014 20:13    skdjksj        def
700             01-11-2014 20:13    skdjksj        def
600             02-11-2014 20:13    skdjksj        def

使用c#代码,我用下面的代码打开了这个excel文件;现在我需要帮助来实现该功能:

using Excel = = Microsoft.Office.Interop.Excel;
Excel.Application excelApp = new Excel.Application();
                    excelApp.DisplayAlerts = false;

                    Excel.Workbook xlWorkBook;
                    Excel.Worksheet xlWorkSheet;
                    xlWorkBook = excelApp.Workbooks.Open("abc.xls");
                    xlWorkSheet = (Excel.Worksheet)xlWorkBook.ActiveSheet;

并从 A 列获取不同的数字,即从这个 excel 数据中,我们应该得到 100、1000、800、700、600 以及每个样本数出现的次数,例如 100 出现 2 次、1000 出现 2 次、800发生1次,发生1次700次,发生1次600次。

一旦提取了该信息,我想以下列方式使用任何只读控件列表框、标签、文本框在 Windows 窗体上显示输出:-

100  : 2
1000 : 2
800  : 1
700  : 1
600  : 1

【问题讨论】:

  • 你可以使用LinqToExcel nuget Package ...
  • 想看看你尝试了什么。
  • 我不知道如何实现这一点..所以需要有关相同的帮助..
  • 您想回答什么具体问题?到目前为止,您尝试过什么?
  • 我已经使用上面的代码打开了 excel 文件。现在我需要编写 c# 代码来实现对上面解释的那个 excel 的搜索。

标签: c# winforms


【解决方案1】:

您可以使用类似于下面 sn-p 的代码循环遍历 excel。 你可以例如将值存储在字典Dictionary<int,List<string>> 中以存储从每一列收集的字符串值。 然后,使用 DateTime.Parse、Int.Parse 等将其转换为 date、int、float 或其他您需要的数据类型。

using Excel = Microsoft.Office.Interop.Excel;

class Program
{
    static void Main(string[] args)
    {
        ReadExcel.PrintAllCells(@"D:\some_place\some_excel.xlsx");
    }

}
public class ReadExcel
{
    public static void PrintAllCells(string location)
    {
        Excel.Application xlApp = new Excel.Application();
        Excel.Workbook xlWorkbook = xlApp.Workbooks.Open(location);


        foreach (var xlWorksheet in xlWorkbook.Worksheets)
        {
            Excel.Range xlRange = xlWorksheet.UsedRange;
            int rowCount = xlRange.Rows.Count;
            int colCount = xlRange.Columns.Count;

            // LOOPING THROUGH EXCEL CELLS STARTS WITH 1 
            // NOT WITH 0

            for (int column = 1; column < colCount; column++)
            {
                for (int row = 1; row < rowCount; row++)
                {

                    var CellData = xlRange.Cells[row, column].Value;
                    Console.WriteLine(CellData);

                }

            }

        }

    }

}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-25
    • 2021-06-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多