我正在自学使用 Visual C# 2010,但我不知道使用什么数据结构来存储 Excel 工作表中的 3 列数据。
A 列包含人的姓名(字符串),B 列包含人的年龄(整数),C 列包含人的电话号码(字符串)。如何将其存储到 C# 中的数据结构中?
在 C++ 中,我记得创建了一个可以容纳一堆不同数据类型的向量......我如何在 C# 中做同样的事情?我读过 C# 中不使用向量。我应该使用数组还是列表?谢谢。
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 等。
您可以创建自己的课程
public class Person
{
public string name {get; set;}
public int age {get; set;}
public string phone {get; set;}
}
并使用此类的 ArrayList 或 List。您还可以在此处了解如何读取 Excel 数据:如何使用 C# 读取 Excel 文件的数据?
您需要做的是阅读一些可用于此类操作的库命令。我包括了一些我在下面使用的样式,以及手动设置框内容等。有几种方法可以做你想做的事。向量仍然存在于 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;
*/