При наличии данных, хранящихся в нескольких файлах электронных таблиц, используйте spreadsheetDatastore для управления данными и их импорта. После создания хранилища данных можно считывать все данные из коллекции одновременно или считывать по одному файлу.
Если папка C:\Data содержит коллекцию файлов электронных таблиц, а затем записывает местоположение данных в location. Данные, используемые в этом примере, содержат 10 файлы электронных таблиц, где каждый файл содержит 10 строк данных. Результаты будут отличаться в зависимости от файлов и данных.
location = 'C:\Data';
dir(location). .. File01.xls File02.xls File03.xls File04.xls File05.xls File06.xls File07.xls File08.xls File09.xls File10.xls
Создайте хранилище данных, используя расположение файлов.
ds = spreadsheetDatastore(location)
ds =
SpreadsheetDatastore with properties:
Files: {
'C:\Data\File01.xls';
'C:\Data\File02.xls';
'C:\Data\File03.xls'
... and 7 more
}
AlternateFileSystemRoots: {}
Sheets: ''
Range: ''
Sheet Format Properties:
NumHeaderLines: 0
ReadVariableNames: true
VariableNames: {'LastName', 'Gender', 'Age' ... and 7 more}
VariableTypes: {'char', 'char', 'double' ... and 7 more}
Properties that control the table returned by preview, read, readall:
SelectedVariableNames: {'LastName', 'Gender', 'Age' ... and 7 more}
SelectedVariableTypes: {'char', 'char', 'double' ... and 7 more}
ReadSize: 'file'
Считывание данных из хранилища данных
Используйте read или readall для импорта данных из хранилища данных. Если данные из коллекции помещаются в память, то их можно импортировать сразу с помощью readall функция.
allData = readall(ds); size(allData)
ans = 1×2
100 10
Кроме того, можно импортировать данные по одному файлу за один раз с помощью read функция. Для управления объемом импортированных данных перед вызовом read, отрегулируйте ReadSize свойства хранилища данных. Можно установить ReadSize кому 'file', 'sheet', или положительное целое число.
Если ReadSize является 'file', затем каждый вызов read возвращает данные по одному файлу за раз.
Если ReadSize является 'sheet', затем каждый вызов read возвращает данные по одному листу за раз.
Если ReadSize является положительным целым числом, то каждый вызов read возвращает число строк, указанное ReadSize, или меньше, если он достигает конца данных.
ds.ReadSize = 'file'; firstFile = read(ds) % reads first file
firstFile=10×10 table
LastName Gender Age Location Height Weight Smoker Systolic Diastolic SelfAssessedHealthStatus
__________ ________ ___ ___________________________ ______ ______ _______ ________ _________ ________________________
'Smith' 'Male' 38 'County General Hospital' 71 176 'true' 124 93 'Excellent'
'Johnson' 'Male' 43 'VA Hospital' 69 163 'false' 109 77 'Fair'
'Williams' 'Female' 38 'St. Mary's Medical Center' 64 131 'false' 125 83 'Good'
'Jones' 'Female' 40 'VA Hospital' 67 133 'false' 117 75 'Fair'
'Brown' 'Female' 49 'County General Hospital' 64 119 'false' 122 80 'Good'
'Davis' 'Female' 46 'St. Mary's Medical Center' 68 142 'false' 121 70 'Good'
'Miller' 'Female' 33 'VA Hospital' 64 142 'true' 130 88 'Good'
'Wilson' 'Male' 40 'VA Hospital' 68 180 'false' 115 82 'Good'
'Moore' 'Male' 28 'St. Mary's Medical Center' 68 183 'false' 115 78 'Excellent'
'Taylor' 'Female' 31 'County General Hospital' 66 132 'false' 118 86 'Excellent'
secondFile = read(ds) % reads second filesecondFile=10×10 table
LastName Gender Age Location Height Weight Smoker Systolic Diastolic SelfAssessedHealthStatus
__________ ________ ___ ___________________________ ______ ______ _______ ________ _________ ________________________
'Anderson' 'Female' 45 'County General Hospital' 68 128 'false' 114 77 'Excellent'
'Thomas' 'Female' 42 'St. Mary's Medical Center' 66 137 'false' 115 68 'Poor'
'Jackson' 'Male' 25 'VA Hospital' 71 174 'false' 127 74 'Poor'
'White' 'Male' 39 'VA Hospital' 72 202 'true' 130 95 'Excellent'
'Harris' 'Female' 36 'St. Mary's Medical Center' 65 129 'false' 114 79 'Good'
'Martin' 'Male' 48 'VA Hospital' 71 181 'true' 130 92 'Good'
'Thompson' 'Male' 32 'St. Mary's Medical Center' 69 191 'true' 124 95 'Excellent'
'Garcia' 'Female' 27 'VA Hospital' 69 131 'true' 123 79 'Fair'
'Martinez' 'Male' 37 'County General Hospital' 70 179 'false' 119 77 'Good'
'Robinson' 'Male' 50 'County General Hospital' 68 172 'false' 125 76 'Good'
readtable | spreadsheetDatastore