writecell

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

Описание

пример

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

Каждый столбец каждой переменной в C становится столбцом в файле выхода. The 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]}

Запишите массив ячеек в текстовый файл с разделителем запятыми и отобразите содержимое файла. The 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'.

The '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 - Если заданное имя листа не существует в файле, функция записи добавляет новый лист в конец набора листов.

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

Можно использовать '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 на листе. The 'Range' аргумент пары "имя-значение" не чувствителен к регистру и использует стиль ссылки A1 Excel (см. справку Excel).

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

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

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

The '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