こんにちは、HerniaBabyです。
今回はPowerPointの資料を引き継いだ時あるあると対処法やっていきたいと思います。
目次
はじめに
皆さん、こんなことありませんか?
ここでだいたい諦めると思いますが、今回はそれを救出しましょう。
準備
まずはパワポのデータをコピーして拡張子をzip形式にします。
中身を見てみよう
どうも < c:v > と < /c:v > の間に数字が埋まってそうです。
データを救出
まずはデータを読み込みます。
fname = 'chart1.xml';
txt = fileread(fname);
次に < c:numCache > と < /c:numCache > の間をとります。
startPat = '<c:numCache>';
endPat = '</c:numCache>';
T = extractBetween(txt,startPat,endPat)
T = 2x1 cell
'<c:formatCode>General</c:formatCode><c:ptCount val="26"/><c:pt idx="0"><…
'<c:formatCode>General</c:formatCode><c:ptCount val="26"/><c:pt idx="0"><…
x軸とy軸のデータがとれそうですね。
ここからそれぞれの数字をとってみましょう。
startPat = '<c:v>';
endPat = '</c:v>';
C = extractBetween(T,startPat,endPat)'
C = 26x2 cell
'0' '0.46535735484144181'
'1' '0.24058892718565272'
'2' '0.38828185922115804'
'3' '0.14205571372730461'
'4' '0.74214061125431341'
'5' '1.1921126247527463'
'6' '1.1255206724949594'
'7' '0.11089586657166785'
'8' '1.3045562710033081'
'9' '0.21587902699026487'
ここでまだやったーとはなりません。
中身を見ると文字として抜き出してます。
class(C{1})
ans = 'char'
数値に変えましょう。
C = str2double(C)
C = 26x2
0 0.4654
1.0000 0.2406
2.0000 0.3883
3.0000 0.1421
4.0000 0.7421
5.0000 1.1921
6.0000 1.1255
7.0000 0.1109
8.0000 1.3046
9.0000 0.2159
plot(C(:,1),C(:,2),'ko-','Color',[.3 .3 .3])
エクセルだと曲線プロットになってましたが、MATLABではジグザグしてます。
でもなんかとれてそうですね。
エクセルに保存
保存して中身をプロットしてみましょう。
writematrix(C,'data.xlsx')
うん、できてますね。
ちなみに横軸日付の場合はシリアル値で書かれます。
datetimeなどで形を変えて保存しましょう。
終わりに
画像からだいたいの数値を持ってくる方法もあるけど、今回は厳密に欲しいということでやってみました。
この方法はパワポのリンク切れグラフから値を探したかったのでchart1.xmlを探ってみたを参考にしました。
勉強になりました。
おまけ
今回はTable of Contents の追加:Live Script から Markdown への自動変換 を参考に作成しました。
いつもとても非常に助かっております。