Импорт экспорт данных из документа
Импортировать данные из документа
Данные - это набор исходных фактов, и мы создаем таблицы электронных документов или отчеты для представления этих исходных фактов более осмысленным образом. Обычно мы добавляем данные в таблицы электронных документов сами, но иногда нам нужно повторно использовать существующие ресурсы данных, и здесь возникает необходимость импортировать данные в таблицы электронных документов из различных источников данных. В этой теме мы рассмотрим некоторые техники импорта данных на рабочие листы из различных источников данных.
Импорт данных с использованием Aspose.Cells
Когда вы используете Aspose.Cells для открытия Excel-файла, все данные в файле автоматически импортируются, но Aspose.Cells также поддерживает импорт данных из различных источников данных. Ниже приведены некоторые из этих источников данных:
- Array
- ArrayList
- DataTable
- DataColumn
- DataView
- DataGrid
- DataReader
- GridView
Aspose.Cells предоставляет класс Workbook, который представляет собой файл Excel. Класс Workbook содержит коллекцию Worksheets, которая позволяет получить доступ к каждому листу в файле Excel. Лист представлен классом Worksheet. Класс Worksheet предоставляет коллекцию Cells.
Коллекция Cells предоставляет очень полезные методы для импорта данных из различных источников данных.
Импорт из массива
Разработчики могут импортировать данные из массива в их листы, вызвав метод ImportArray коллекции Cells. Есть множество версий перегруженного метода 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
Разработчики могут импортировать данные из ArrayList в их листы, вызвав метод ImportArrayList коллекции Cells. Метод 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");
Импорт из пользовательских объектов
Разработчики могут импортировать данные из коллекции объектов в лист Excel с использованием 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
Разработчики могут импортировать данные из DataTable в свои листы Excel, вызывая метод ImportDataTable из коллекции Cells. Существует множество перегруженных версий метода ImportDataTable, но типичная перегрузка принимает следующие параметры: DataTable, представляет объект DataTable, содержимое которого необходимо импортировать.
- Показывать название поля, указывает, должны ли имена столбцов DataTable быть импортированы в лист Excel как первая строка или нет
- Начальная ячейка, представляет имя начальной ячейки (т. е. “A1”) для импорта содержимого DataTable
//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, их можно использовать любым образом в соответствии с требованиями пользователей.
Экспорт данных в DataTable (.NET) с помощью Aspose.Cells
Разработчики могут легко экспортировать данные рабочего листа в объект DataTable, вызвав метод ExportDataTable или ExportDataTableAsString класса Cells. Оба метода используются в различных сценариях, которые подробно обсуждаются ниже.
Столбцы, содержащие строго типизированные данные
Мы знаем, что таблица Excel хранит данные в виде последовательности строк и столбцов. Если все значения в столбцах листа имеют строго определенный тип (это означает, что все значения в столбце должны иметь один и тот же тип данных), то мы можем экспортировать содержимое листа, вызвав метод ExportDataTable класса Cells. Метод 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();
Столбцы, содержащие нестрого типизированные данные
Если все значения в столбцах листа не имеют строго определенного типа (это означает, что значения в столбце могут иметь разные типы данных), то мы можем экспортировать содержимое листа, вызвав метод ExportDataTableAsString класса Cells. Метод 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();