ドキュメントからのインポートおよびエクスポートデータ
ドキュメントからのデータのインポート
データは、生の事実の集まりであり、これらの生の事実をより意味のある形で提示するためにスプレッドシートドキュメントやレポートを作成します。通常、スプレッドシートにデータを追加しますが、既存のデータリソースを再利用する必要がある場合があります。その際に異なるデータソースからワークシートにデータをインポートする必要があります。このトピックでは、異なるデータソースからワークシートにデータをインポートするためのいくつかの技術について説明します。
Aspose.Cellsを使用したデータのインポート
Aspose.Cellsを使用してExcelファイルを開くと、ファイルのすべてのデータが自動的にインポートされますが、Aspose.Cellsは異なるデータソースからのデータのインポートもサポートしています。いくつかのデータソースのうちいくつかを以下に示します。
- Array
- ArrayList
- DataTable
- DataColumn
- DataView
- DataGrid
- DataReader
- GridView
Aspose.Cellsは、Excelファイルを表すWorkbookクラスを提供しています。Workbookクラスには、Excelファイルの各ワークシートにアクセスすることができるWorksheetsコレクションが含まれています。ワークシートはWorksheetクラスで表されます。WorksheetクラスはCellsコレクションを提供しています。
Cellsコレクションは、異なるデータソースからのデータのインポートに非常に有用なメソッドを提供しています。
配列からのインポート
開発者は、Cells コレクションの ImportArray メソッドを呼び出すことで、配列からデータをワークシートにインポートできます。ImportArray メソッドには多くのオーバーロードされたバージョンがありますが、典型的なオーバーロードは次のパラメーターを取ります:
- 配列、インポートする内容の配列オブジェクトを表します
- 行番号、データをインポートする最初のセルの行番号を表します
- 列番号、データをインポートする最初のセルの列番号を表します
- 垂直かどうかを指定するブール値、データを縦方向または横方向にインポートするかどうかを指定します
//Instantiating a Workbook object
Workbook workbook = new Workbook();
//Adding a new worksheet to the Workbook object
int i = workbook.Worksheets.Add();
//Obtaining the reference of the newly added worksheet by passing its sheet index
Worksheet worksheet = workbook.Worksheets[i];
//Creating an array containing names as string values
string[] names = new string[] { "laurence chen", "roman korchagin", "kyle huang" };
//Importing the array of names to 1st row and first column vertically
worksheet.Cells.ImportArray(names, 0, 0, true);
//Saving the Excel file
workbook.Save(MyDir+"DataImport from Array.xls");
ArrayListからのインポート
開発者は、Cells コレクションの ImportArrayList メソッドを呼び出すことで、ArrayList からデータをワークシートにインポートできます。ImportArray メソッドには次のパラメーターがあります:ArrayList、インポートする内容の ArrayList オブジェクトを表します
- 行番号、データをインポートする最初のセルの行番号を表します
- 列番号、データをインポートする最初のセルの列番号を表します
- 垂直かどうかを指定するブール値、データを縦方向または横方向にインポートするかどうかを指定します
//Instantiating a Workbook object
Workbook workbook = new Workbook();
//Adding a new worksheet to the Workbook object
int i = workbook.Worksheets.Add();
//Obtaining the reference of the newly added worksheet by passing its sheet index
Worksheet worksheet = workbook.Worksheets[i];
//Instantiating an ArrayList object
ArrayList list = new ArrayList();
//Add few names to the list as string values
list.Add("laurence chen");
list.Add("roman korchagin");
list.Add("kyle huang");
list.Add("tommy wang");
//Importing the contents of ArrayList to 1st row and first column vertically
worksheet.Cells.ImportArrayList(list, 0, 0, true);
//Saving the Excel file
workbook.Save(MyDir + "DataImport from Array List.xls");
カスタムオブジェクトからのインポート
開発者は、ImportCustomObjects を使用して、オブジェクトのコレクションからワークシートにデータをインポートできます。このメソッドに自分の希望のオブジェクトリストを表示するための列/プロパティのリストを指定できます。
//Instantiate a new Workbook
Workbook book = new Workbook();
//Clear all the worksheets
book.Worksheets.Clear();
//Add a new Sheet "Data";
Worksheet sheet = book.Worksheets.Add("Data");
//Define List
List<WeeklyItem> list = new List<WeeklyItem>();
//Add data to the list of objects
list.Add(new WeeklyItem() { AtYarnStage = 1, InWIPStage = 2, Payment = 3, Shipment = 4, Shipment2 = 5 });
list.Add(new WeeklyItem() { AtYarnStage = 5, InWIPStage = 9, Payment = 7, Shipment = 2, Shipment2 = 5 });
list.Add(new WeeklyItem() { AtYarnStage = 7, InWIPStage = 3, Payment = 3, Shipment = 8, Shipment2 = 3 });
//We pick a few columns not all to import to the worksheet
sheet.Cells.ImportCustomObjects((System.Collections.ICollection)list,
new string[] { "Date", "InWIPStage", "Shipment", "Payment" },
true,
0,
0,
list.Count,
true,
"dd/mm/yyyy",
false);
//Auto-fit all the columns
book.Worksheets[0].AutoFitColumns();
//Save the Excel file
book.Save(MyDir+"ImportedCustomObjects.xls");
DataTableからのインポート
開発者は、Cells コレクションの ImportDataTable メソッドを呼び出すことで、DataTable からデータをワークシートにインポートできます。ImportDataTable メソッドには多くのオーバーロードされたバージョンがありますが、典型的なオーバーロードは次のパラメーターを取ります:DataTable、インポートする内容の DataTable オブジェクトを表します
- フィールド名が表示される、DataTable の列の名前をワークシートに最初の行としてインポートするかどうかを指定します
- 開始セル、DataTable のコンテンツをインポートする開始セル(たとえば「A1」)の名前を表します
//Instantiating a Workbook object
Workbook workbook = new Workbook();
//Adding a new worksheet to the Workbook object
int i = workbook.Worksheets.Add();
//Obtaining the reference of the newly added worksheet by passing its sheet index
Worksheet worksheet = workbook.Worksheets[i];
//Instantiating a "Products" DataTable object
DataTable dataTable = new DataTable("Products");
//Adding columns to the DataTable object
dataTable.Columns.Add("Product ID", typeof(Int32));
dataTable.Columns.Add("Product Name", typeof(string));
dataTable.Columns.Add("Units In Stock", typeof(Int32));
//Creating an empty row in the DataTable object
DataRow dr = dataTable.NewRow();
//Adding data to the row
dr[0] = 1;
dr[1] = "Aniseed Syrup";
dr[2] = 15;
//Adding filled row to the DataTable object
dataTable.Rows.Add(dr);
//Creating another empty row in the DataTable object
dr = dataTable.NewRow();
//Adding data to the row
dr[0] = 2;
dr[1] = "Boston Crab Meat";
dr[2] = 123;
//Adding filled row to the DataTable object
dataTable.Rows.Add(dr);
//Importing the contents of DataTable to the worksheet starting from "A1" cell,
//where true specifies that the column names of the DataTable would be added to
//the worksheet as a header row
worksheet.Cells.ImportDataTable(dataTable, true, "A1");
workbook.Save(MyDir+"Import From Data Table.xls");
サンプルコードをダウンロード
ドキュメントからのデータのエクスポート
Aspose.Cellsは、ユーザーが外部データソースからワークシートにデータをインポートするだけでなく、ワークシートデータをDataTableにエクスポートすることも可能です。DataTableはADO.NETの一部であり、データを保持するために使用されます。データがDataTableに格納されると、ユーザーの要件に応じて任意の方法で使用することができます。
Aspose.Cellsを使用したDataTableへのデータのエクスポート
開発者は、CellsクラスのExportDataTableまたはExportDataTableAsStringメソッドを呼び出すことで、ワークシートデータを簡単にDataTableオブジェクトにエクスポートできます。両方のメソッドは、以下で詳しく説明されている異なるシナリオで使用されます。
型指定データを含む列
スプレッドシートはデータを行と列の連続として保存することを知っています。ワークシートの列のすべての値が強く型付けされている場合(つまり、ワークシートの列のすべての値が同じデータ型でなければならない)、Cells クラスの ExportDataTable メソッドを呼び出すことでワークシートの内容をエクスポートできます。ExportDataTable メソッドは、DataTable オブジェクトとしてワークシートのデータをエクスポートするために次のパラメーターを取ります: 行番号、データのエクスポートを開始する最初のセルの行番号を表します
- 列番号、データのエクスポートを開始する最初のセルの列番号を表します
- 行数、エクスポートする行の数を表します
- 列数、エクスポートする列の数を表します
- エクスポートする列名、ワークシートの最初の行のデータを DataTable の列名としてエクスポートするかどうかを表すブール値プロパティ
//Creating a file stream containing the Excel file to be opened
FileStream fstream = new FileStream(FOD_OpenFile.FileName, FileMode.Open);
//Instantiating a Workbook object
//Opening the Excel file through the file stream
Workbook workbook = new Workbook(fstream);
//Accessing the first worksheet in the Excel file
Worksheet worksheet = workbook.Worksheets[0];
//Exporting the contents of 2 rows and 2 columns starting from 1st cell to DataTable
DataTable dataTable = worksheet.Cells.ExportDataTable(0, 0,2, 2, true);
//Binding the DataTable with DataGrid
dataGridView1.DataSource = dataTable;
//Closing the file stream to free all resources
fstream.Close();
非型指定データを含む列
ワークシートの列のすべての値が強く型付けされていない場合(つまり、列の値が異なるデータ型を持つ可能性がある場合)は、CellsクラスのExportDataTableAsStringメソッドを呼び出してワークシートのコンテンツをエクスポートすることができます。ExportDataTableAsStringメソッドは、ExportDataTableメソッドと同じパラメータセットを取り、ワークシートデータをDataTableオブジェクトとしてエクスポートします。
//Creating a file stream containing the Excel file to be opened
FileStream fstream = new FileStream(FOD_OpenFile.FileName, FileMode.Open);
//Instantiating a Workbook object
//Opening the Excel file through the file stream
Workbook workbook = new Workbook(fstream);
//Accessing the first worksheet in the Excel file
Worksheet worksheet = workbook.Worksheets[0];
//Exporting the contents of 2 rows and 2 columns starting from 1st cell to DataTable
DataTable dataTable = worksheet.Cells.ExportDataTableAsString(0, 0, 2, 2, true);
//Binding the DataTable with DataGrid
dataGridView2.DataSource = dataTable;
//Closing the file stream to free all resources
fstream.Close();