0

Visual C# 2010 を使用するように独学していますが、Excel ワークシートから 3 列のデータを格納するために使用するデータ構造がわかりません。

列 A には人物の名前 (文字列)、列 B には人物の年齢 (整数)、列 C には人物の電話番号 (文字列) が含まれます。これをC#のデータ構造に格納するにはどうすればよいですか?

C++ で、一連の異なるデータ型を保持できるベクトルを作成したことを覚えています...C# で同等のことを行うにはどうすればよいですか? ベクトルは C# では使用されないことを読みました。配列またはリストを使用する必要がありますか? ありがとう。

4

3 に答える 3

2

C++ の概念は、機能的には C#vectorのジェネリック クラスとほぼ同等です。List<T>

SLaks が言ったように、型を知っていて、3 つの列の各セットがテーブルの「行」であることを考えると、列 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 を使用しているため、使用する必要があります)、Tupleいくつかの汎用オーバーロードとそれらを作成するための静的ヘルパーを持つ class があります。

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

...

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

利点は、組み込みの柔軟なクラスです。欠点は、Tuple が非常に汎用的であるため、その列名も同様に汎用的であることです。アイテム1、アイテム2など

于 2012-08-27T19:39:51.047 に答える
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 に答える
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 に答える