0

我正在自学使用 Visual C# 2010,但我不知道使用什么数据结构来存储 Excel 工作表中的 3 列数据。

A 列包含人的姓名(字符串),B 列包含人的年龄(整数),C 列包含人的电话号码(字符串)。如何将其存储到 C# 中的数据结构中?

在 C++ 中,我记得创建了一个可以容纳一堆不同数据类型的向量......我如何在 C# 中做同样的事情?我读过 C# 中不使用向量。我应该使用数组还是列表?谢谢。

4

3 回答 3

2

C++ 的概念vector在功能上大致等同于List<T>C# 中的泛型类。

正如 SLaks 所说,最好的解决方案是,如果您知道类型并且每组三列都是表中的一个“行”,那么最好的解决方案是创建一个包含 A、B 和 C 列的简单类,然后创建一个列表那些:

public class ExcelData
{
   public string PersonName {get;set;}
   public int Age {get;set;}
   public string PhoneNumber {get;set;}
}

public List<ExcelData> fromExcel = new List<ExcelData>();

fromExcel.Add(new ExcelData
                  {
                     PersonName = "Joe Smith", 
                     Age = 34, 
                     PhoneNumber = "(123) 456-7890"
                  });

如果您使用的是 .NET 4(因为您使用的是 VS 2010,所以您应该使用),有一个 class Tuple,它有几个通用重载和一个静态帮助器来创建它们:

public List<Tuple<string, int, string>> fromExcel = new List<Tuple<string, int, string>>();

...

fromExcel.Add(Tuple.Create("Joe Smith", 34, "(123) 456-7890"));

好处是内置的、灵活的类;缺点是元组非常通用,因此它的列名也同样通用;项目 1、项目 2 等。

于 2012-08-27T19:39:51.047 回答
0

您可以创建自己的课程

public class Person
{
    public string name {get; set;}
    public int age {get; set;}
    public string phone {get; set;}
}

并使用此类的 ArrayList 或 List。您还可以在此处了解如何读取 Excel 数据:如何使用 C# 读取 Excel 文件的数据?

于 2012-08-27T19:33:06.193 回答
0

您需要做的是阅读一些可用于此类操作的库命令。我包括了一些我在下面使用的样式,以及手动设置框内容等。有几种方法可以做你想做的事。向量仍然存在于 C# 中。我建议将信息存储在向量或数组中,然后遍历该向量或数组以填充您的 Excel 工作表。(复合格式很可能是最简单的)

希望这会有所帮助!干杯!

//using Microsoft.Office.Interop.Excel;

/*
                //WRITE DATA FROM TABLES TO AN EXCEL SHEET
                Application excelapp = new Application();


                excelapp.Visible = true;
                //Range range = excelapp.Application.get_Range("A1", "C1"); 

                _Workbook workbook = (_Workbook)(excelapp.Workbooks.Add(Type.Missing));
                _Worksheet worksheet = (_Worksheet)workbook.ActiveSheet;


                worksheet.Cells[1, 1].Style.Font.Bold = true;

                worksheet.Cells[1, 1] = "Brochure Fares";
                worksheet.Cells[1, 2] = "Cruise Only Fares";
                worksheet.Cells[1, 3] = "Port, Security & Handling";

                //worksheet.Cells.Style.Font.Bold = false;

                //worksheet.Cells[1,1].Style.Selection = "Check Cell";
                //worksheet.Range("B1").Selection = "Check Cell"; 
                worksheet.Cells[1, 1].ColumnWidth = 20;
                worksheet.Cells[1, 2].ColumnWidth = 20;
                worksheet.Cells[1, 3].ColumnWidth = 25;

                //worksheet.get_Range("A1", "D1").VerticalAlignment.Center = true; 
                //worksheet.get_Range("A1", "C1").VerticalAlignment = ; 
                //worksheet.Cells[1,1].VerticalAlignment.Center = true;


                //worksheet.Cells[1, 1].mergeandcenter = true;
                //worksheet.Cells[1, 1].wraptext = true; 






                excelapp.UserControl = true;


                workbook.SaveAs(@"TestSheet");
                workbook.Close();
                excelapp.Visible = false; 
                */
于 2012-08-27T19:42:11.860 回答