exponenta event banner

writecell

Запись массива ячеек в файл

Описание

пример

writecell(C) запись массива ячеек C в текстовый файл с разделителями-запятыми. Имя файла - это имя рабочей области массива ячеек, добавляемое с расширением .txt. Если writecell не удается создать имя файла из имени массива входных ячеек, после чего выполняется запись в файл cell.txt.

Каждый столбец каждой переменной в C становится столбцом в выходном файле. writecell функция перезаписывает любой существующий файл.

пример

writecell(C,filename) записывает в файл с именем и расширением, указанными filename.

writecell определяет формат файла на основе указанного расширения. Внутренний номер должен быть одним из следующих:

  • .txt, .dat, или .csv для текстовых файлов с разделителями

  • .xls, .xlsm, или .xlsx для файлов электронных таблиц Excel ®

  • .xlsb для файлов электронных таблиц Excel, поддерживаемых в системах с Excel для Windows ®

пример

writecell(___,Name,Value) записывает массив ячеек в файл с дополнительными параметрами, заданными одним или несколькими Name,Value и может включать любой из входных аргументов в предыдущих синтаксисах.

Примеры

свернуть все

Создайте массив ячеек, запишите его в разделенный запятыми текстовый файл, а затем запишите массив ячеек в другой текстовый файл с другим символом-разделителем.

Создайте простой массив ячеек в рабочей области.

C =  {1,2,3;
     'text',datetime('today'),hours(1)}
C = 2×3 cell array
    {[   1]}    {[          2]}    {[   3]}
    {'text'}    {[09-Jan-2019]}    {[1 hr]}

Запишите массив ячеек в текстовый файл с разделителями-запятыми и просмотрите содержимое файла. writecell функция выводит текстовый файл с именем C.txt.

writecell(C)
type 'C.txt'
1,2,3
text,09-Jan-2019,1 hr

Чтобы записать один и тот же массив ячеек в текстовый файл с другим символом-разделителем, используйте 'Delimiter' пара имя-значение.

writecell(C,'C_tab.txt','Delimiter','tab')
type 'C_tab.txt'
1	2	3
text	09-Jan-2019	1 hr

Создайте массив ячеек, запишите его в файл электронной таблицы, а затем прочитайте и отобразите содержимое файла.

Создание массива ячеек в рабочей области.

C =  {1,2,3;
     'text',datetime('today'),hours(1)}
C = 2×3 cell array
    {[   1]}    {[          2]}    {[   3]}
    {'text'}    {[09-Jan-2019]}    {[1 hr]}

Запишите массив ячеек в файл электронной таблицы.

writecell(C,'C.xls')

Считывание и отображение матрицы из C.xls.

readcell('C.xls')
ans = 2×3 cell array
    {[   1]}    {[          2]}    {[   3]}
    {'text'}    {[09-Jan-2019]}    {'1 hr'}

Создайте массив ячеек и запишите его в указанный лист и диапазон в файле электронной таблицы.

Создание массива ячеек в рабочей области.

C =  {1,2,3;
     'text',datetime('today'),hours(1)}
C = 2×3 cell array
    {[   1]}    {[          2]}    {[   3]}
    {'text'}    {[09-Jan-2019]}    {[1 hr]}

Запись массива ячеек в файл C.xls, на втором листе в файле, начиная с третьей строки.

writecell(C,'C.xls','Sheet',2,'Range','A3:C5')

Чтение и отображение массива ячеек.

readcell('C.xls','Sheet',2,'Range','A3:C5')
ans = 2×3 cell array
    {[   1]}    {[          2]}    {[   3]}
    {'text'}    {[09-Jan-2019]}    {'1 hr'}

Добавьте массив ячеек в нижнюю часть файла электронной таблицы, содержащего существующие данные.

Создайте два массива ячеек в рабочей области.

C =  {1,2,3;
     'text',datetime('today'),hours(1)}
C=2×3 cell array
    {[   1]}    {[          2]}    {[   3]}
    {'text'}    {[23-Mar-2021]}    {[1 hr]}

rgb = {'red','green','blue'}
rgb = 1x3 cell
    {'red'}    {'green'}    {'blue'}

Запись массива ячеек C в файл электронной таблицы C.xls.

writecell(C,'C.xls')

Добавление массива ячеек rgb ниже существующих данных в файле электронной таблицы.

writecell(rgb,'C.xls','WriteMode','append')

Чтение и отображение массива ячеек.

readcell('C.xls')
ans=3×3 cell array
    {[   1]}    {[          2]}    {[   3]}
    {'text'}    {[23-Mar-2021]}    {'1 hr'}
    {'red' }    {'green'      }    {'blue'}

Добавление массивов ячеек в нижнюю часть текстового файла, содержащего существующие данные.

Создайте три массива ячеек в рабочей области.

states = {"Massachusetts","New York","Maryland","Virginia"}
states=1×4 cell array
    {["Massachusetts"]}    {["New York"]}    {["Maryland"]}    {["Virginia"]}

stateBird = {"Black-capped chickadee","Eastern bluebird",...
    "Baltimore oriole","Cardinal"}
stateBird=1×4 cell array
  Columns 1 through 3

    {["Black-capped..."]}    {["Eastern blue..."]}    {["Baltimore or..."]}

  Column 4

    {["Cardinal"]}

stateFlower = {"Trailing arbutus","Rose",...
    "Black-eyed Susan","Flowering dogwood"}
stateFlower=1×4 cell array
  Columns 1 through 3

    {["Trailing arb..."]}    {["Rose"]}    {["Black-eyed S..."]}

  Column 4

    {["Flowering do..."]}

Запись массива ячеек states в файл states.txt. Затем запишите массивы stateBird и stateFlower под существующими записями в текстовом файле.

writecell(states,'states.txt')
writecell(stateBird,'states.txt','WriteMode','append')
writecell(stateFlower,'states.txt','WriteMode','append')

Чтение и отображение массива ячеек.

readcell('states.txt')
ans = 3x4 cell
  Columns 1 through 3

    {'Massachusetts'    }    {'New York'        }    {'Maryland'        }
    {'Black-capped c...'}    {'Eastern bluebird'}    {'Baltimore oriole'}
    {'Trailing arbutus' }    {'Rose'            }    {'Black-eyed Susan'}

  Column 4

    {'Virginia'         }
    {'Cardinal'         }
    {'Flowering dogwood'}

Входные аргументы

свернуть все

Входные данные, указанные как массив ячеек.

Имя файла, указанное как вектор символа или скаляр строки.

В зависимости от места, в которое вы пишете, filename может принимать одну из этих форм.

Местоположение

Форма

Текущая папка

Для записи в текущую папку укажите имя файла в filename.

Пример: 'myTextFile.csv'

Другие папки

Чтобы записать в папку, отличную от текущей, укажите полный или относительный путь в filename.

Пример: 'C:\myFolder\myTextFile.csv'

Пример: 'myFolder\myExcelFile.xlsx'

Удаленное расположение

Для записи в удаленное расположение filename должен содержать полный путь к файлу, указанному как унифицированный указатель ресурса (URL) формы:

scheme_name://path_to_file/my_file.ext

На основе удаленного местоположения, scheme_name может быть одним из значений в этой таблице.

Удаленное расположениеscheme_name
Амазонский S3™s3
Хранилище больших двоичных объектов Windows Azure ®wasb, wasbs
HDFS™hdfs

Дополнительные сведения см. в разделе Работа с удаленными данными.

Пример: 's3://bucketname/path_to_file/my_file.xlsx'

  • Если filename включает расширение файла, затем функция записи определяет формат файла из расширения. В противном случае функция записи создает текстовый файл, разделенный запятыми, и добавляет расширение .txt. Кроме того, можно указать filename без расширения файла, а затем включите 'FileType' аргументы пары «имя-значение» для указания типа файла.

  • Если filename не существует, то функция записи создает файл.

  • Если filename - имя существующего текстового файла, после чего функция записи перезаписывает файл.

  • Если filename - это имя существующего файла электронной таблицы, после чего функция записи записывает данные в указанное расположение, но не перезаписывает никакие значения за пределами диапазона входных данных.

Типы данных: char | string

Аргументы пары «имя-значение»

Укажите дополнительные пары, разделенные запятыми Name,Value аргументы. Name является именем аргумента и Value - соответствующее значение. Name должен отображаться внутри кавычек. Можно указать несколько аргументов пары имен и значений в любом порядке как Name1,Value1,...,NameN,ValueN.

Пример: 'FileType',text указывает, что имена переменных не должны включаться в первую строку выходного файла.
Текстовые файлы и файлы электронных таблиц

свернуть все

Тип файла, указанный как разделенная запятыми пара, состоящая из 'FileType' и символьный вектор или строку, содержащую 'text' или 'spreadsheet'.

'FileType' пара имя-значение должна использоваться с filename входной аргумент. Нет необходимости указывать 'FileType' аргумент пары имя-значение, если filename входной аргумент включает стандартное расширение файла. Функция записи распознает следующие стандартные расширения файлов:

  • .txt, .dat, или .csv для текстовых файлов с разделителями

  • .xls, .xlsm, или .xlsx для файлов электронных таблиц Excel

  • .xlsb для файлов электронных таблиц Excel, поддерживаемых в системах с Excel для Windows

Пример: 'FileType','spreadsheet'

Типы данных: char | string

Языковой стандарт для даты записи, указанный как пара, разделенная запятыми, состоящая из 'DateLocale' и вектор символов или строковый скаляр. При написании datetime значения для файла, используйте DateLocale для указания языкового стандарта, в котором writecell следует писать имена и сокращения месяцев и дней недели. Символьный вектор или строка принимает вид xx_YY, где xx - строчный двухбуквенный код ISO 639-1, указывающий язык, и YY является верхним кодом ISO 3166-1 альфа-2, указывающим страну. Список общих значений для языкового стандарта см. в разделе Locale аргумент пары имя-значение для datetime функция.

Функция записи игнорирует 'DateLocale' значение параметра всякий раз, когда даты могут быть записаны в формате Excel.

Пример: 'DateLocale','ja_JP'

Типы данных: char | string

Режим записи, заданный как разделенная запятыми пара, состоящая из 'WriteMode' и вектор символов или строковый скаляр. Выберите режим записи на основе типа файла.

Тип файла

Режим записи

Текстовые файлы

  • 'overwrite' (по умолчанию) - перезаписать файл.

  • 'append' - Добавление данных в файл.

Если указанный файл не существует, функция записи создает и записывает данные в новый файл.

Файлы электронных таблиц

  • 'inplace' (по умолчанию) - обновление только диапазона, занятого входными данными. Функция записи не изменяет данные за пределами диапазона, занятого входными данными.

    • Если лист не указан, функция записи записывает данные на первый лист.

  • 'overwritesheet' - Очистить указанный лист и записать входные данные в очищенный лист.

    • Если лист не указан, функция записи очищает первый лист и записывает на него входные данные.

  • 'append' - Функция записи добавляет входные данные в нижнюю часть занятого диапазона указанного листа.

    • Если лист не указан, функция записи добавляет входные данные в нижнюю часть занятого диапазона первого листа.

  • 'replacefile' - Удалите все остальные листы из файла, затем очистите и запишите входные данные в указанный лист.

    • Если лист не указан, функция записи удаляет все остальные листы из файла, а затем очищает и записывает входные данные на первый лист.

    • Если указанный файл не существует, функция записи создает новый файл и записывает входные данные на первый лист.

  • Когда WriteVariableNames имеет значение true, функция записи не поддерживает режим записи 'append'.

  • Для файлов электронных таблиц:

    • Когда режим записи 'append', функция записи не поддерживает Range параметр.

    • Если указанный файл не существует, функция записи выполняет те же действия, что и 'replacefile'.

Пример: 'WriteMode','append'

Типы данных: char | string

Только текстовые файлы

свернуть все

Символ разделителя поля, указанный как разделенная запятыми пара, состоящая из 'Delimiter' и вектор символов или строковый скаляр, содержащий один из следующих спецификаторов:

Спецификатор

Разделитель поля

','

'comma'

Запятая. Это поведение по умолчанию.

' '

'space'

Пространство

'\t'

'tab'

Счет

';'

'semi'

Точка с запятой

'|'

'bar'

Вертикальная полоса

Вы можете использовать 'Delimiter' пара имя-значение только для текстовых файлов с разделителями.

Пример: 'Delimiter','space'

Типы данных: char | string

Индикатор для записи текста в кавычках, указанный как разделенная запятыми пара, состоящая из 'QuoteStrings' и либо false или true. Если 'QuoteStrings' является true, то функция записи заключает текст в двойные кавычки и заменяет любые символы двойной кавычки, которые появляются как часть этого текста, двумя символами двойной кавычки.

Вы можете использовать 'QuoteStrings' пара имя-значение только с разделителями текстовых файлов.

Схема кодирования символов, связанная с файлом, заданная как разделенная запятыми пара, состоящая из 'Encoding' и 'system' или имя стандартной схемы кодирования символов. Если кодировка не указана, функция записи использует UTF-8 для записи файла.

Пример: 'Encoding','UTF-8' использует UTF-8 в качестве кодировки.

Типы данных: char | string

Только файлы электронных таблиц

свернуть все

Лист для записи, указанный как разделенная запятыми пара, состоящая из 'Sheet' и вектор символов или строковый скаляр, содержащий имя листа или положительное целое число, указывающее индекс листа. Имя листа не может содержать двоеточие (:). Чтобы определить имена листов в файле электронной таблицы, используйте sheets = sheetnames(filename). Дополнительные сведения см. в разделе sheetnames.

Укажите лист для записи по имени или индексу:

  • name - если указанное имя листа не существует в файле, функция записи добавляет новый лист в конце коллекции листов.

  • index - если указанный индекс листа больше числа листов, функция записи добавляет пустые листы до тех пор, пока число листов в книге не станет равным индексу листа. Функция записи также генерирует предупреждение, указывающее на добавление нового документа.

Вы можете использовать 'Sheet' пара имя-значение только с файлами электронных таблиц.

Пример: 'Sheet',2

Пример: 'Sheet', 'MySheetName'

Типы данных: char | string | single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

Прямоугольная часть листа для записи, указанная как разделенная запятыми пара, состоящая из 'Range' и вектор символов или строковый скаляр в одной из следующих форм.

Форма стоимости Range Описание
'Corner1'

Corner1 указывает первую ячейку области для записи. Функция записи записывает данные, начиная с этой ячейки.

Пример: 'Range','D2'

'Corner1:Corner2'

Corner1 и Corner2 - это два противоположных угла, которые определяют область для записи. Например, 'D2:H4' представляет прямоугольную область 3 на 5 между двумя углами D2 и H4 на листе. 'Range' аргумент пары имя-значение не чувствителен к регистру и использует стиль ссылки A1 Excel (см. справку Excel).

Пример: 'Range','D2:H4'

  • Если заданный диапазон меньше размера входных данных, то записывающая функция записывает только подмножество входных данных, которое вписывается в диапазон.

  • Если указанный диапазон превышает размер входных данных, функция записи оставляет остальную часть области без изменений.

'Range' пару «имя-значение» можно использовать только с файлами Excel.

Пример: 'Range', 'A1:F10'

Типы данных: char | string

Флажок для запуска экземпляра Microsoft ® Excel для Windows при записи данных электронной таблицы, указанного как разделенная запятыми пара, состоящая из 'UseExcel' и либо true, или false.

Можно установить 'UseExcel' для одного из следующих значений:

  • true - Функция записи запускает экземпляр Microsoft Excel при записи файла.

  • false - Функция записи не запускает экземпляр Microsoft Excel при записи файла. При работе в этом режиме функциональность записи отличается поддержкой форматов файлов и интерактивных функций, таких как формулы и макросы.

UseExcel

true

false

Поддерживаемые форматы файлов

.xls, .xlsx, .xlsm, .xltx, .xltm, .xlsb, .ods

.xls, .xlsx, .xlsm, .xltx, .xltm

Поддержка интерактивных функций, таких как формулы и макросы

Да

Нет

При записи в файлы электронных таблиц на платформах Windows, если требуется запустить экземпляр Microsoft Excel, установите 'UseExcel' параметр для true.

Автоматически корректировать ширину столбца, указанное как true или false. Если указано значение 0 или false, то writecell не будет автоматически корректировать ширину столбцов в соответствии с данными в ячейках.

Пример: 'AutoFitWidth',0

Сохранение форматирования ячеек существующей электронной таблицы, указанной как true или false. При указании false, writecell не сохранит форматирование ячеек электронной таблицы. Форматирование включает такие элементы, как шрифты, границы ячеек и закрашенные цветом ячейки.

При написании datetime данные в файл электронной таблицы, необходимо задать оба 'PreserveFormat' и 'UseExcel' Пара «имя-значение» для true для сохранения существующего форматирования ячеек. Если 'UseExcel' имеет значение false и 'PreserveFormat' имеет значение true при написании datetime данные в файл, writecell не сохранит существующее форматирование ячеек файла.

Пример: 'PreserveFormat',false

Ограничения

  • Для установки 'PreserveFormat' пара имя-значение к true, необходимо установить 'UseExcel' пара имя-значение к true.

Алгоритмы

Есть некоторые случаи, когда writecell создает файл, который не точно представляет входные данные. Вы заметите это при использовании readcell для чтения этого файла. Результирующие данные могут иметь тот же формат или то же содержимое, что и исходные данные. Если необходимо сохранить массив ячеек и извлечь его позже, чтобы точно соответствовать исходному массиву ячеек с теми же данными и организацией, сохраните его как MAT-файл. writecell записывает неточную таблицу в следующих экземплярах:

  • writecell записывает числовые данные с помощью long g формат и категориальные или символьные данные как текст без кавычек.

  • writecell записывает массивы ячеек, которые имеют более двух размеров, как двумерные массивы, при этом конечные размеры свернуты.

Представлен в R2019a