Main Content

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

writecell

ファイルへの cell 配列の書き込み

説明

writecell(C) は cell 配列 C をコンマ区切り形式のテキスト ファイルに書き込みます。ファイル名は cell 配列のワークスペース名で、拡張子 .txt が追加されます。writecell が入力 cell 配列名からファイルの名前を作成できない場合、ファイル cell.txt に書き込みます。

C の各変数の各列は、出力ファイルの 1 つの列になります。関数 writecell は既存のファイルをいずれも上書きします。

writecell(C,filename) は、filename で指定された名前と拡張子のファイルに書き込みます。

writecell は、指定された拡張子に基づいてファイル形式を判別します。拡張子は、次のいずれかでなければなりません。

  • 区切りテキスト ファイルの場合、.txt.dat または .csv

  • Excel® スプレッドシート ファイルの場合、.xls.xlsm または .xlsx

  • Excel for Windows® を備えたシステムでサポートされる Excel スプレッドシート ファイルの場合、.xlsb

writecell(___,Name,Value) は、1 つ以上の Name,Value ペアの引数で指定された追加のオプションを使用して、cell 配列をファイルに書き込み、前述の構文の任意の入力引数を含めることができます。

すべて折りたたむ

cell 配列を作成し、コンマ区切りのテキスト ファイルに書き込んでから、その cell 配列を区切り記号が異なる別のテキスト ファイルに書き込みます。

ワークスペースにシンプルな cell 配列を作成します。

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

cell 配列をコンマ区切り形式のテキスト ファイルに書き込んで、ファイルの内容を表示します。関数 writecell は、C.txt という名前のテキスト ファイルを出力します。

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

同じ cell 配列を区切り記号が異なるテキスト ファイルに書き込むには、'Delimiter' の名前と値のペアを使用します。

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

cell 配列を作成し、スプレッドシート ファイルに書き込んでから、ファイルの内容を読み取って表示します。

ワークスペースに cell 配列を作成します。

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

スプレッドシート ファイルに cell 配列を書き込みます。

writecell(C,'C.xls')

C.xls から行列を読み取って表示します。

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

cell 配列を作成して、スプレッドシート ファイルの指定したシートおよび範囲に書き込みます。

ワークスペースに cell 配列を作成します。

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

cell 配列を C.xls ファイル (ファイルの 2 つ目のワークシートの 3 列目から) に書き込みます。

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

cell 配列を読み取って表示します。

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

既存データを含むスプレッドシート ファイルの末尾に cell 配列を追加します。

ワークスペースに 2 つの cell 配列を作成します。

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

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

C.xls というスプレッドシート ファイルに cell 配列 C を書き込みます。

writecell(C,'C.xls')

スプレッドシート ファイルの既存データ下に cell 配列 rgb を追加します。

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

cell 配列を読み取って表示します。

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

既存データを含むテキスト ファイルの末尾に cell 配列を追加します。

ワークスペースに 3 つの cell 配列を作成します。

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.txt に cell 配列 states を書き込みます。次に、配列 stateBird および配列 stateFlower をテキスト ファイルの既存エントリ下に書き込みます。

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

cell 配列を読み取って表示します。

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

入力引数

すべて折りたたむ

入力データ。cell 配列として指定します。

ファイル名。文字ベクトルまたは string スカラーとして指定します。

書き込み先の場所によって、filename は次のいずれかの形式にできます。

場所

形式

現在のフォルダー

現在のフォルダーに書き込むには、ファイルの名前を filename に指定します。

例: 'myTextFile.csv'

その他のフォルダー

現在のフォルダーとは異なるフォルダーに書き込むには、絶対パス名または相対パス名を filename に指定します。

例: 'C:\myFolder\myTextFile.csv'

例: 'myFolder\myExcelFile.xlsx'

リモートの場所

リモートの場所に書き込むには、filename に次の形式の Uniform Resource Locator (URL) として指定されたファイルの絶対パスを含めなければなりません。

scheme_name://path_to_file/my_file.ext

リモートの場所に基づいて、scheme_name には次の表の値のいずれかを指定できます。

リモートの場所scheme_name
Amazon S3™s3
Windows Azure® Blob Storagewasb, 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' を含む文字ベクトルまたは string から構成されるコンマ区切りのペアとして指定します。

'FileType' 名前と値ペアは、filename 入力引数と一緒に使用しなければなりません。filename 入力引数に標準のファイル拡張子が含まれている場合、'FileType' の名前と値のペアの引数を指定する必要はありません。次の標準のファイル拡張子は、書き込み関数で認識されます。

  • 区切りテキスト ファイルの場合、.txt.dat または .csv

  • Excel スプレッドシート ファイルの場合、.xls.xlsm または .xlsx

  • Excel for Windows を備えたシステムでサポートされる Excel スプレッドシート ファイルの場合、.xlsb

例: 'FileType','spreadsheet'

データ型: char | string

日付を書き込むためのロケール。'DateLocale' と、文字ベクトルまたは string スカラーで構成されるコンマ区切りのペアとして指定します。datetime 値をファイルに書き込む場合、DateLocale を使用して writetable が月と曜日の名前および略語を書き込むロケールを指定します。xx_YY の形式の文字ベクトルまたは string。xx は ISO 639-1 で定義された小文字 2 文字の言語コードで、YY は ISO 3166-1 alpha-2 で定義された大文字の国コードです。ロケールの一般的な値の一覧については、関数 datetimeLocale の名前と値のペア引数を参照してください。

日付が Excel 形式の日付として記述できる場合、書き込み関数は常に 'DateLocale' パラメーターの値を無視します。

例: 'DateLocale','ja_JP'

データ型: char | string

書き込みモード。'WriteMode' と、文字ベクトルまたは string スカラーから構成されるコンマ区切りのペアとして指定します。ファイルの種類に基づいて、書き込みモードを選択します。

ファイルの種類

書き込みモード

テキスト ファイル

  • 'overwrite' (既定の設定) — ファイルを上書きします。

  • 'append' — データをファイルに追加します。

指定したファイルが存在しない場合、書き込み関数は新しいファイルを作成してデータを書き込みます。

スプレッドシート ファイル

  • 'inplace' (既定の設定) — 入力データにより占有された範囲のみを更新します。書き込み関数は入力データにより占有された範囲外のデータは一切変更しません。

    • シートを指定しない場合、書き込み関数は最初のシートに書き込みます。

  • 'overwritesheet' — 指定されたシートをクリアし、クリアしたシートに入力データを書き込みます。

    • シートを指定しない場合、書き込み関数は最初のシートをクリアし、それに入力データを書き込みます。

  • 'append' — 書き込み関数は指定されたシートの占有範囲の末尾に入力データを追加します。

    • シートを指定しない場合、書き込み関数は最初のシートの占有範囲の末尾に入力データを追加します。

  • 'replacefile' — 他のすべてのシートをファイルから削除し、指定されたシートをクリアして入力データを書き込みます。

    • シートを指定しない場合、書き込み関数は他のすべてのシートをファイルから削除し、最初のシートをクリアして入力データを書き込みます。

    • 指定したファイルが存在しない場合、書き込み関数は新しいファイルを作成して最初のシートに入力データを書き込みます。

  • WriteVariableNamestrue である場合、書き込み関数は書き込みモード 'append' をサポートしません。

  • スプレッドシート ファイルの場合、次となります。

    • 書き込みモードが 'append' である場合、書き込み関数は Range パラメーターをサポートしません。

    • 指定したファイルが存在しない場合、書き込み関数は 'replacefile' と同じアクションを実行します。

例: 'WriteMode','append'

データ型: char | string

テキスト ファイルのみ

すべて折りたたむ

フィールドの区切り記号。'Delimiter' と、次の指定子のいずれかを含む文字ベクトルまたは string スカラーで構成されるコンマ区切りのペアとして指定します。

指定子

フィールドの区切り記号

','

'comma'

コンマ。これは既定の動作です。

' '

'space'

スペース

'\t'

'tab'

タブ

';'

'semi'

セミコロン

'|'

'bar'

縦棒

'Delimiter' 名前と値のペアは区切り付きテキスト ファイルに対してのみ使用できます。

例: 'Delimiter','space'

データ型: char | string

引用符付きテキスト書き込みのインジケーター。'QuoteStrings' と、false または true のいずれかで構成されるコンマ区切りのペアとして指定します。'QuoteStrings'true の場合、書き込み関数はテキストを二重引用符で囲み、テキストの一部として表示される二重引用符をすべて 2 つの二重引用符に置き換えます。

'QuoteStrings' の名前と値のペアは区切り付きテキスト ファイルでのみ使用できます。

ファイルに関連付けられた文字エンコード スキーム。'Encoding''system' で構成されるコンマ区切りのペア、または標準の文字エンコード スキーム名として指定します。エンコードを何も指定しない場合、書き込み関数は UTF-8 を使用してファイルに書き込みます。

例: 'Encoding','UTF-8' は、UTF-8 をエンコードとして使用します。

データ型: char | string

スプレッドシート ファイルのみ

すべて折りたたむ

書き込み先のワークシート。'Sheet' と、ワークシート名またはワークシート インデックスを示す正の整数を含む文字ベクトルまたは string スカラーで構成されるコンマ区切りのペアとして指定します。ワークシート名にコロン (:) を含めることはできません。スプレッドシート ファイルのシートの名前を調べるには、sheets = sheetnames(filename) を使用します。詳細については、sheetnames を参照してください。

書き込み先のワークシートを、名前またはインデックスで指定します。

  • 名前 — 指定したシート名がファイルに存在しない場合、書き込み関数がワークシート コレクションの最後に新しいシートを追加します。

  • インデックス — 指定したシート インデックスがワークシート数より大きい場合、書き込み関数が、ワークブック内のワークシートの数がシート インデックスと等しくなるまで空のシートを追加します。書き込み関数は新しいワークシートが追加されたことを示す警告も生成します。

'Sheet' 名前と値のペアはスプレッドシート ファイルでのみ使用できます。

例: 'Sheet',2

例: 'Sheet', 'MySheetName'

データ型: char | string | single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

書き込み対象のワークシートの四角形部分。'Range' と、次のいずれかの形式の文字ベクトルまたは string スカラーで構成されるコンマ区切りのペアとして指定します。

Range の値の形式 説明
'Corner1'

Corner1 は、書き込む領域の最初のセルを指定します。書き込み関数はこのセルからデータを書き込みます。

例: 'Range','D2'

'Corner1:Corner2'

Corner1Corner2 は、書き込む領域を定義する 1 組の対角です。たとえば、'D2:H4' は、ワークシート上の 2 つの角 D2H4 の間にある 3 行 5 列の四角形領域を表します。'Range' 名前と値のペアの引数では大文字小文字は区別されず、Excel A1 参照スタイル (Excel ヘルプを参照) が使用されます。

例: 'Range','D2:H4'

  • 指定範囲が入力データのサイズより小さい場合、書き込み関数は入力データのうち範囲に収まるサブセットのみを書き込みます。

  • 指定範囲が入力データのサイズより大きい場合、書き込み関数は残りの領域をそのままにします。

'Range' 名前と値のペアは、Excel ファイルと一緒にのみ使用できます。

例: 'Range', 'A1:F10'

データ型: char | string

スプレッドシート データを書き込むときに、Windows 版 Microsoft® Excel のインスタンスを起動するためのフラグ。'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 に設定します。

アルゴリズム

場合によっては、関数 writecell で作成したファイルが入力データを正確に表していないことがあります。これは、関数 readcell を使用してそのファイルを読み取ったときに判明します。結果のデータに、元のデータと完全に同じ形式または内容が含まれない可能性があります。cell 配列を保存し、後で元の cell 配列と厳密に一致する同一のデータおよび構成を復元する必要がある場合は、MAT ファイルとして保存します。次の場合に、writecell が書き込む table は厳密に一致しません。

  • writecelllong g 形式を使用した数値データと、categorical データまたは文字データを引用符なしのテキストとして書き出す。

  • writecell が次元数が 2 を超える cell 配列を 2 次元配列として、後続の次元を折りたたんで書き出す。

R2019a で導入