|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
利用MATLAB生成Excel文档
+ p2 `. n% W4 y6 [9 d" d; N
$ Z8 o2 Z& J" |/ I( K. o) ~) F
; A# g* V ]5 _' eunction ceshi_Excel
) i5 I) r* @3 g* \5 n7 h% r%利用MATLAB生成Excel文档1 o& y1 r1 Q' e5 q; t
% ceshi_Excel
$ f6 X$ y5 J: i. T%0 [9 L R, o* S
% Copyright 2009 - 2010 xiezhh.
" M e7 {) C8 K: ?" h% $Revision: 1.0.0.0 $ $Date: 2009/12/14 20:40:00 $6 \# z0 [; Q! c- y+ ?
* M' d; E( z+ N. p# S% K6 h. @% 设定测试Excel文件名和路径7 a8 |$ g% K C/ { [
filespec_user = [pwd '\测试.xls'];
4 r* L3 I) G; ~% d. d; ^% W9 j* K8 z" F: p3 w& ?4 i6 M" F
% 判断Excel是否已经打开,若已打开,就在打开的Excel中进行操作,否则就打开Excel. {7 d. e! b0 T' b
try
; E0 B! W1 ]8 z% c& t % 若Excel服务器已经打开,返回其句柄Excel" `- X, N, V& i! y7 g; U: l* p
Excel = actxGetRunningServer('Excel.Application');0 _5 s/ n8 j; Q2 `$ o9 E) S$ k
catch
$ n, @1 w2 \! b) p0 @; r# E % 创建一个Microsoft Excel服务器,返回句柄Excel
" d, ], d& x$ Q9 m) o1 M( u3 u Excel = actxserver('Excel.Application');) t9 ?4 L3 `3 Z3 C$ p
end;
! `* b4 W" b# k& P ]
7 _. t$ ]- i3 T, e2 h! B6 ?% 设置Excel服务器为可见状态6 N; V3 G& W N3 L `9 L+ y
Excel.Visible = 1; % set(Excel, 'Visible', 1);- s1 a3 s1 q7 J) d$ n1 M$ u0 _1 B
4 k4 E/ y8 e/ t7 |1 h
% 若测试文件存在,打开该测试文件,否则,新建一个工作簿,并保存,文件名为测试.Excel
) M, ]* w/ {* W5 M e# K5 @if exist(filespec_user,'file');
2 I5 A% x F' s Workbook = Excel.Workbooks.Open(filespec_user);4 `0 U" i4 S& b* S
% Workbook = invoke(Excel.Workbooks,'Open',filespec_user);
3 D+ O- D) W; M5 |4 I/ I! t& E3 \else
8 @6 b) K1 F# E6 D Workbook = Excel.Workbooks.Add;/ M# \/ j" D7 _" h. I& ]
% Workbook = invoke(Excel.Workbooks, 'Add');# d# `! j& `. G7 Q+ @4 w& E0 g1 A
Workbook.SaveAs(filespec_user);- |3 q- p: }4 f0 c1 |
end T, E( T4 E% x$ C/ a% ]1 f
B' |$ _( l0 L% 返回当前工作表句柄
! U; x+ a9 C% q0 `1 }* ~Sheets = Excel.ActiveWorkbook.Sheets; % Sheets = Workbook.Sheets;
0 F3 ^% D9 ~6 T- m6 V4 {3 J- L4 c7 jSheet1 = Sheets.Item(1); % 返回第1个表格句柄; F# |% V/ }/ O$ n
Sheet1.Activate; % 激活第1个表格4 F, L- D9 `7 ^; W" s
) M' h$ Q% W5 S# _% 页面设置
5 j( I- B+ L. c. p: _6 G; [; c( TSheet1.PageSetup.TopMargin = 60; % 上边距60磅
6 ~: x* D8 O5 mSheet1.PageSetup.BottomMargin = 45; % 下边距45磅 q" R, p2 W2 o- H* P' @: g
Sheet1.PageSetup.LeftMargin = 45; % 左边距45磅5 d5 E' _ j. P; d: P; i' o: C
Sheet1.PageSetup.RightMargin = 45; % 右边距45磅
0 l6 \9 F' ^" d8 G, D9 c6 L3 w
0 O' p7 j- }$ }% z% 设置行高和列宽! }) A+ n+ m% B/ ?8 C
% 定义行高向量RowHeight& x) [( ^; Z+ Q( c
RowHeight = [26,22,15,29,37,29,29,25,25,36,280,31,40,29,15,24]';7 p4 G( e9 W8 K+ X! \5 l, F: Q1 n$ M
% 设置Range对象(从A1到A16)的行高* T3 B, `1 p4 n8 w5 S, M, {
Sheet1.Range('A1:A16').RowHeight = RowHeight;8 ~' l0 w# f/ g
% 设置Range对象(从A1到H1)的列宽
7 W: o: J6 s* r* ?! r- ySheet1.Range('A1:H1').ColumnWidth = [9,15,9,9,9,9,9,9];
" K/ n8 B* I' H0 }+ |7 `+ q" s* D3 a& o
% 合并单元格
- E7 e/ U! P4 p" g7 R5 t8 R7 I8 l- qSheet1.Range('A1:H1').MergeCells = 1;
6 i3 [( {2 ^6 i. [. @7 l7 ]* pSheet1.Range('A2:H2').MergeCells = 1;! p3 w6 w% Y1 w( M( W+ m- l
Sheet1.Range('A8:A9').MergeCells = 1;* X3 P4 R5 D3 \
Sheet1.Range('B8:H8').MergeCells = 1;
9 |+ @; s; ^6 B; }4 d8 V* Q! n! fSheet1.Range('E8:H8').MergeCells = 1;6 w, f6 M1 _6 q# v( d4 f5 ^
Sheet1.Range('B9:H9').MergeCells = 1;
/ i9 }4 s6 Q) j9 a2 n O. Z. K; V, Z. gSheet1.Range('E9:H9').MergeCells = 1;
2 O0 M+ q* {+ I. W6 x" FSheet1.Range('A10:H10').MergeCells = 1;
& P/ X4 N. f* L2 oSheet1.Range('A11:H11').MergeCells = 1;
2 S, |0 e2 }& u5 Z& A0 ISheet1.Range('A12:H12').MergeCells = 1;
9 F& N9 K* s* b% w1 u' l- J9 sSheet1.Range('A13:H13').MergeCells = 1;
; @2 @ d; s0 t" m4 TSheet1.Range('A14:H14').MergeCells = 1;
, L! Z; j& J6 B6 `Sheet1.Range('D16:H16').MergeCells = 1;/ d( R$ ?. S1 ^* e- `" N( d" h
/ V* l9 q3 \" s% a) @6 ^8 j8 \' T& m% 设置单元格的边框7 c: n5 [ @% u- ~2 S7 _
Sheet1.Range('A4:H14').Borders.Weight = 3;
# g7 Y2 \' E# L% `: zSheet1.Range('A10:H12').Borders.Item(3).Linestyle = 0;5 h3 B! Y8 f6 c- U" n
Sheet1.Range('A10:H12').Borders.Item(4).Linestyle = 0;
9 m& Y2 J. G! g2 W8 {Sheet1.Range('A13:H13').Borders.Item(4).Linestyle = 0;+ t- {4 S) a/ p- U' H, T. h
Sheet1.Range('A14:H14').Borders.Item(3).Linestyle = 0;
' i/ b* T2 {9 N- S/ [, ^8 a* U2 U1 D* [" V
% 设置单元格对齐方式
9 d h, v* k+ n A! U9 o- QSheet1.Range('A1:H9').HorizontalAlignment = 3;
0 ]. E; n3 V) U# Z1 g \8 Z9 {Sheet1.Range('A4:A9').HorizontalAlignment = 6;" T& |! G; H4 k8 h; X7 t
Sheet1.Range('C4:C7').HorizontalAlignment = 6;5 L; E( V: K+ x! @
Sheet1.Range('E4:E7').HorizontalAlignment = 6;6 D$ J, N- G. I+ o& h
Sheet1.Range('G4:G7').HorizontalAlignment = 6;
( v" K/ L* L" Q: X% W: n5 pSheet1.Range('A10:H10').HorizontalAlignment = 6;
* j1 J) a+ f, [2 ASheet1.Range('A11:H11').HorizontalAlignment = 6; % -41303 d- a8 h7 X1 q, U1 Z$ M; o
Sheet1.Range('A11:H11').VerticalAlignment = 1;# y4 g0 P( ~+ k" W, [$ s
Sheet1.Range('A12:H12').HorizontalAlignment = 4;8 D+ e& r- J$ P" W
Sheet1.Range('A13:H13').VerticalAlignment = 1;: O* q, z6 Z1 `$ U0 O4 t$ o# a; ?
Sheet1.Range('A14:H14').HorizontalAlignment = 4;
' E+ a& z$ v" C' ASheet1.Range('D16:H16').HorizontalAlignment = 4;; m i' t0 C1 K7 N" _: `0 A! X0 L
: B. d; v p+ n) u9 s
% 写入单元格内容
/ f7 Y6 F2 w; E7 J; y( vSheet1.Range('A1').Value = '试 卷 分 析';
0 ?& P, m, p& Y# L7 ` ^0 s7 b' \Sheet1.Range('A2').Value = '( 2009 — 2010 学年 第一学期)';- G! T q& t1 v5 c+ `
Sheet1.Range('A4:H4').Value = {'课程名称','','课程号',...' Y) P! \8 ], n
'','任课教师学院','','任课教师',''};# l' n* o: U' W x
Sheet1.Range('A5:H5').Value = {'授课班级','','考试日期',...
* U- C; v9 W+ F; j) P '','应考人数','','实考人数',''};
' q% q- |% R: d( fSheet1.Range('A6:H6').Value = {'出卷方式','','阅卷方式',...
' q2 C8 P0 o: r$ n2 C# Q% ? '','选用试卷A/B','','考试时间',''};
. y* g5 e" ^. R4 nSheet1.Range('A7:H7').Value = {'考试方式','','平均分',...
5 o# A/ G# m5 {# V7 j6 K '','不及格人数','','及格率',''};
- Q0 p2 V, W. f5 l1 g" ]. _" USheet1.Range('A8').Value = '成绩分布';
$ r# L: i0 D8 C) ?1 O# W0 ~; rSheet1.Range('B8').Value = '90分以上 人占 %';
2 j2 @! R$ V) \! X* b, h5 k3 BSheet1.Range('E8').Value = '80---89分 人占 %';, Y% a) P. `: \7 N& ^! {" }
Sheet1.Range('B9').Value = '70---79分 人占 %';8 u, ]2 K0 L: b- t A, R- F% E
Sheet1.Range('E9').Value = '60---69分 人占 %';
1 o1 R/ U8 z5 q7 @ Q' L8 sSheet1.Range('A10').Value = ['试卷分析(含是否符合教学大纲、难度、知识覆'...* Z; |4 ?; J8 [) N$ P5 C' Y4 I6 v/ l
'盖面、班级分数分布分析、学生答题存在的共性问题与知识掌握情况、教学中'...
# i; U. h) T: k7 i$ o4 v: x' y '存在的问题及改进措施等内容)'];% N) D9 {1 {" C& B/ T4 N4 z* n
Sheet1.Range('A12').Value = '签字 : 年 月 日';+ I$ c6 f% h4 \! [/ \
Sheet1.Range('A13').Value = '教研室审阅意见:';
& U2 B8 G0 G2 r) v. J* s' p% FSheet1.Range('A14').Value = '教研室主任(签字): 年 月 日';0 D% F# x2 c, j+ M Z
Sheet1.Range('D16').Value = '主管院长签字: 年 月 日';- ^, Y$ _/ i" `1 _ d
) U/ `7 s. S H- ]" z* P' U& N% 设置字号- ]: |+ P& K" E. l
Sheet1.Range('A4:H12').Font.size = 10.5; % 设置单元格A4至H12的字号为10.5
8 [: ?0 n! C9 F2 S/ tSheet1.Range('A1').Font.size = 16; % 设置单元格A1的字号为164 a3 t8 l0 [. d. {
Sheet1.Range('A1').Font.bold = 2; % 单元格A1的字体加粗
; a1 [. ^4 `% s
$ D1 H5 i$ O* y! ~; k% 插入图片,如果当前工作表中有图形存在,通过循环将图形全部删除4 C5 V/ [! G$ o% m; n3 H
Shapes = Sheet1.Shapes; % 返回第1个工作表的Shapes接口的句柄
2 i+ W4 Q2 H* i, b" zif Shapes.Count ~= 0;
$ K# W. _/ ~) G4 C for i = 1 : Shapes.Count;
0 u9 v. m! i* B0 y: P6 h Shapes.Item(1).Delete; % 删除第1个Shape对象! N* s7 F; O3 K4 i: @0 q* P' a2 q5 K+ G
end;
, w `7 j, j( k# X& W3 G5 Q' z1 Gend;
3 w5 y* p+ y- @) {& M2 W5 U) x
+ w) m v" w& i% 产生均值为75,标准差为4的正态分布随机数,画直方图,并设置图形属性6 K. A6 n2 h4 R& s# l( B
zft = figure('units','normalized','position',...
+ f" _& `0 R9 B' h[0.280469 0.553385 0.428906 0.251302],'visible','off'); % 新建图形窗口,设为不可见
! O6 j1 G6 K6 L8 D8 ~* ~; c3 yset(gca,'position',[0.1 0.2 0.85 0.75]); % 设置坐标系的位置和大小1 F& V& c' a+ ~9 m0 ?$ m8 |
data = normrnd(75,4,1000,1); % 产生均值为75,标准差为4的正态分布随机数7 Z8 S- m* \7 Y- Y$ F
hist(data); % 绘制正态分布随机数的频数直方图6 k# ]0 `' S( A; \2 M& `9 m
grid on; % 添加参考网格
( F( ^$ Z7 T3 e9 @xlabel('考试成绩'); % 为X轴加标签
- n& s# r& e9 D+ Eylabel('人数'); % 为Y轴加标签
/ U: n& a" O! [7 r- Zhgexport(zft, '-clipboard'); % 将直方图复制到剪贴板
- O- A$ O1 v l* n( h% 选中工作表Sheet1的A11单元格,插入由MATLAB命令作出的直方图4 N: y0 B5 A. k% E" f! q$ m7 K5 @& d
Sheet1.Range('A11').Select;
. [# K/ N9 j- _3 J$ g& oSheet1.Paste % Sheet1.PasteSpecial;
0 }7 S, |8 K: Y3 J7 ~7 m6 ^
+ l0 Z+ L& V3 {3 @delete(zft); % 删除图形句柄* b, w' n% Y+ L* [0 z5 b# u) Y O
Workbook.Save % 保存文档& ?8 k6 }/ r7 |# d+ _3 a
|
|