【MATLAB】 Excel 파일의 셀 폭 자동 조정
했던 일
Excel 파일로 내보낼 때 셀 너비가 유감일 수 있습니다. 이것을 자동 조절해 보았습니다. 그러나 불행히도 MATLAB 측의 기능으로는 할 수 없기 때문에 MATLAB에서 Excel 기능을 사용합니다.
공식 페이지는 여기 : Excel을 자동화 서버로 사용한 스프레드시트 데이터 읽기
xlswrite 를 사용하고 있는 분은 「 왜 xlswrite가 더 이상 사용되지 않는가? 」의 항이 추천입니다.
Livescript 버전(MATLAB)은 GitHub: ActiveX-Excel-MATLAB 1에 있습니다.
셀 폭 조정? 구체적으로
예를 들어 table 형
코드data = ["fileEnsembleDatastore","ds","datastore"];
data = array2table(data)
data1
data2
data3
1
"fileEnsembleDatasto...
"ds"
"datastore"
라는 데이터를 Excel로 내보냅니다.
코드filename = 'undisiredFormat.xlsx';
writetable(data,filename);
Excel에서 열면 다소 유감스러운 느낌이 듭니다.
이것을
코드autoFitCellWidth(filename);
그리고 데이터의 길이에 맞게 셀 폭을 조정한다는 이야기.
여담: Excel로 내보내는 함수
MATLAB에서 Excel 파일로 출력하는 함수로는 xlswrite 함수이 오랫동안 사용되었지만 최근에는
data = ["fileEnsembleDatastore","ds","datastore"];
data = array2table(data)
filename = 'undisiredFormat.xlsx';
writetable(data,filename);
autoFitCellWidth(filename);
MATLAB에서 Excel 파일로 출력하는 함수로는 xlswrite 함수이 오랫동안 사용되었지만 최근에는
등이 권장됩니다. 마찬가지로 csvwrite 함수 역시 '비추천' 문자가 나오게 되었습니다.
왜 xlswrite가 더 이상 사용되지 않는가?
내보내기 속도가 다릅니다. 이 예에서는 100배 이상 다릅니다.
코드
data = rand(10,10);
tic
xlswrite('test_xlswrite.xlsx',data);
toc
Output
経過時間は 8.999516 秒です。
코드
tic
writematrix(data,'test_writematrix.xlsx');
toc
Output
経過時間は 0.071814 秒です。
꽤 다릅니다.
xlswrite 함수는 Excel을 시작하므로 시간이 오래 걸립니다. 게다가 불편하게도, 여러 번 호출하면 매번 Excel을 시작하고 닫고 반복하기 때문에 시간이 많이 걸립니다. write* 시스템을 사용합시다.
셀 폭 조정
그런데 본제. 함수의 내용을 보는 것이 빠르네요. VBA에 익숙한 분이라면 핀이라고 올 것이라고 생각합니다만, 어떨까요.
코드(디스플레이)function autoFitCellWidth(filename)
% Excel ファイルへの絶対パスを取得
filepath = which(filename);
% Excel に対して ActiveX を開く
h = actxserver('excel.application');
wb = h.WorkBooks.Open(filepath);
% UsedRange: データが入っている範囲の
% EntireColumn: 列全体を
% AutoFit: データに合わせた幅にします
wb.ActiveSheet.UsedRange.EntireColumn.AutoFit;
% 指定したファイル名で保存しエクセルを閉じる
wb.SaveAs(filename);
wb.Close;
h.Quit;
h.delete;
% 注意:この辺キッチリ Close/Quit/delete しておかないとあとでややこしいです。
%(ほかのアプリで使われていて開けない・消せないなど起こります)
% PC 再起動すれば大丈夫です。
end
ActiveSheet 또는 UsedRange 또는 EntireColumn 등은 Excel 쪽 명령입니다. 같은 요령으로 그 밖에도 Excel이 할 수 있어 버린다.
기타 편집 작업 예
범위를 지정하고 같은 작업을 한다면
코드(디스플레이) range = 'A1:H5';
wbrange = wb.ActiveSheet.get('Range',range);
wbrange.EntireColumn.AutoFit;
라든지 셀 폭을 결정하고 가면
코드(디스플레이) wbrange.EntireColumn.ColumnWidth = 20;
등.
나중에 셀 채우기와 문자 색상을 변경하면
코드(디스플레이) % セルの塗りつぶし
wb.ActiveSheet.UsedRange.Interior.Color=hex2dec('00FF00'); % 緑
% フォントの色
wb.ActiveSheet.UsedRange.Font.Color=hex2dec('0000FF'); % 赤
% 色は16進数の BGR の組み合わせで指定
% 赤: 0000FF
% 青: FF00FF
% 緑: 00FF00
% 黒: 000000
% 白: FFFFFF
이런 느낌입니다. 다른 MATLAB Answers에는 몇 가지 예가 있습니다.
참고
function autoFitCellWidth(filename)
% Excel ファイルへの絶対パスを取得
filepath = which(filename);
% Excel に対して ActiveX を開く
h = actxserver('excel.application');
wb = h.WorkBooks.Open(filepath);
% UsedRange: データが入っている範囲の
% EntireColumn: 列全体を
% AutoFit: データに合わせた幅にします
wb.ActiveSheet.UsedRange.EntireColumn.AutoFit;
% 指定したファイル名で保存しエクセルを閉じる
wb.SaveAs(filename);
wb.Close;
h.Quit;
h.delete;
% 注意:この辺キッチリ Close/Quit/delete しておかないとあとでややこしいです。
%(ほかのアプリで使われていて開けない・消せないなど起こります)
% PC 再起動すれば大丈夫です。
end
range = 'A1:H5';
wbrange = wb.ActiveSheet.get('Range',range);
wbrange.EntireColumn.AutoFit;
wbrange.EntireColumn.ColumnWidth = 20;
% セルの塗りつぶし
wb.ActiveSheet.UsedRange.Interior.Color=hex2dec('00FF00'); % 緑
% フォントの色
wb.ActiveSheet.UsedRange.Font.Color=hex2dec('0000FF'); % 赤
% 色は16進数の BGR の組み合わせで指定
% 赤: 0000FF
% 青: FF00FF
% 緑: 00FF00
% 黒: 000000
% 白: FFFFFF
Appendix: autoFitCellWidth 함수
코드function autoFitCellWidth(filename)
% Excel ファイルへの絶対パスを取得
filepath = which(filename);
% Excel に対して ActiveX を開く
h = actxserver('excel.application');
wb = h.WorkBooks.Open(filepath);
% UsedRange: データが入っている範囲の
% EntireColumn: 列全体を
% AutoFit: データに合わせた幅にします
wb.ActiveSheet.UsedRange.EntireColumn.AutoFit;
% 指定したファイル名で保存しエクセルを閉じる
wb.SaveAs(filename);
wb.Close;
h.Quit;
h.delete;
% 注意:この辺キッチリ Close/Quit/delete しておかないとあとでややこしいです。
%(ほかのアプリで使われていて開けない・消せないなど起こります)
% PC 再起動すれば大丈夫です。
end
Livescript에서 markdown으로의 변환은 livescript2markdown: MATLAB's live scripts to markdown을 사용합니다. ↩
Reference
이 문제에 관하여(【MATLAB】 Excel 파일의 셀 폭 자동 조정), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/eigs/items/3a71c0da1744e48e9bca
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
function autoFitCellWidth(filename)
% Excel ファイルへの絶対パスを取得
filepath = which(filename);
% Excel に対して ActiveX を開く
h = actxserver('excel.application');
wb = h.WorkBooks.Open(filepath);
% UsedRange: データが入っている範囲の
% EntireColumn: 列全体を
% AutoFit: データに合わせた幅にします
wb.ActiveSheet.UsedRange.EntireColumn.AutoFit;
% 指定したファイル名で保存しエクセルを閉じる
wb.SaveAs(filename);
wb.Close;
h.Quit;
h.delete;
% 注意:この辺キッチリ Close/Quit/delete しておかないとあとでややこしいです。
%(ほかのアプリで使われていて開けない・消せないなど起こります)
% PC 再起動すれば大丈夫です。
end
Reference
이 문제에 관하여(【MATLAB】 Excel 파일의 셀 폭 자동 조정), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/eigs/items/3a71c0da1744e48e9bca텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)