|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
利用MATLAB生成Excel文档, C% b j& `4 i3 E
5 [/ ?9 r( c+ j; `+ n9 e, R$ G# ?! ~: [
unction ceshi_Excel. g& P; L" ?2 w: b: y% G& l
%利用MATLAB生成Excel文档
9 |: V1 @$ k* j9 [% ceshi_Excel
$ ?3 Z: }8 j0 s$ K7 q4 p! L%
& g- X( e! m+ M. f# C( Y, k% Copyright 2009 - 2010 xiezhh.
, ^; ]: a8 o) |8 t% r) D% $Revision: 1.0.0.0 $ $Date: 2009/12/14 20:40:00 $
% I: l2 ^; X& _; V4 n, g) x3 S5 ]
% 设定测试Excel文件名和路径
0 C% R2 v. z5 }% Z' \$ ~filespec_user = [pwd '\测试.xls'];
1 R; S) g. M# e. z1 u& V4 P; J! b# }: s F% G
% 判断Excel是否已经打开,若已打开,就在打开的Excel中进行操作,否则就打开Excel2 E& `% g% z% s, p+ U
try
4 {4 P8 _2 x" a8 J % 若Excel服务器已经打开,返回其句柄Excel# Z, z( H" @+ C* R; W0 g; M, V
Excel = actxGetRunningServer('Excel.Application');
' t/ f& \# B+ N% H# o- ~" e$ ucatch
: Q) V3 g" B6 }( z4 u% N % 创建一个Microsoft Excel服务器,返回句柄Excel8 ^" s: u: O3 P" W7 W( C
Excel = actxserver('Excel.Application');; o, b1 G0 e/ M) [1 k
end;8 n/ G* u' X% V
$ ?6 @/ \, k& E2 g+ y4 {; U
% 设置Excel服务器为可见状态& `# x; i& e2 A- v9 q
Excel.Visible = 1; % set(Excel, 'Visible', 1);
. D$ g) b @ i
- P) }! y/ g7 z4 N9 w z% z% 若测试文件存在,打开该测试文件,否则,新建一个工作簿,并保存,文件名为测试.Excel1 _. f% I1 l& q& Q
if exist(filespec_user,'file');8 X) r/ ]: m4 E. g4 T1 x- c$ P8 b4 e
Workbook = Excel.Workbooks.Open(filespec_user);
+ U, T$ v0 |% J/ r % Workbook = invoke(Excel.Workbooks,'Open',filespec_user);
2 x/ @6 P$ d: ~7 M9 Z# M) r! jelse
4 S3 K9 F; r6 G! A$ x, T2 r8 M Workbook = Excel.Workbooks.Add;
3 V4 R! D$ g6 s; i % Workbook = invoke(Excel.Workbooks, 'Add');
* O: _8 ^1 K8 E, Y Workbook.SaveAs(filespec_user);4 m" ` `$ X7 y9 W" J2 b
end) k# F. J' O, r
# t" ~- o. J& t+ P/ h% 返回当前工作表句柄
/ c7 X0 W, _- l8 ^Sheets = Excel.ActiveWorkbook.Sheets; % Sheets = Workbook.Sheets;0 ~, Y7 j. a/ g. c2 {6 C2 h
Sheet1 = Sheets.Item(1); % 返回第1个表格句柄2 ?' ^6 v3 I0 M6 y* l
Sheet1.Activate; % 激活第1个表格" {& M5 Z8 y9 g C+ h V
2 V) h( |7 m" c) g: `( B; Q
% 页面设置
; e8 M# o G$ q" ^Sheet1.PageSetup.TopMargin = 60; % 上边距60磅1 ?2 R9 m' E9 q+ ^) w
Sheet1.PageSetup.BottomMargin = 45; % 下边距45磅
1 @. h7 t8 {' G) [5 Y3 WSheet1.PageSetup.LeftMargin = 45; % 左边距45磅
; b( E3 m/ @ p4 }Sheet1.PageSetup.RightMargin = 45; % 右边距45磅5 R \8 |( ^' T$ U1 u& r
- Q- E7 ?$ ?/ d+ e% r6 N
% 设置行高和列宽
2 T$ O& i5 X9 `8 Z" G" v% 定义行高向量RowHeight' Q# J7 m) j' t5 D6 G
RowHeight = [26,22,15,29,37,29,29,25,25,36,280,31,40,29,15,24]';
. a& m, M+ q0 p* M4 |1 s% 设置Range对象(从A1到A16)的行高
* R h8 x2 z F, zSheet1.Range('A1:A16').RowHeight = RowHeight;% d1 e5 \( x* C/ C2 k! r
% 设置Range对象(从A1到H1)的列宽
# y8 s6 E N. S8 e2 u( e: m" eSheet1.Range('A1:H1').ColumnWidth = [9,15,9,9,9,9,9,9];1 g0 c* r0 v; r
& i: [3 I8 P5 c/ t! F' M% 合并单元格+ }/ Q# y# b3 X. A4 ?7 l# i
Sheet1.Range('A1:H1').MergeCells = 1;' m: `; J9 c3 `8 [5 S: L$ K/ a5 }
Sheet1.Range('A2:H2').MergeCells = 1;
0 h- n6 | U2 f" m7 u5 P7 G+ @% qSheet1.Range('A8:A9').MergeCells = 1;2 V$ s* Y( v+ d+ S; H2 i: v
Sheet1.Range('B8:H8').MergeCells = 1; E" r% q! i' T
Sheet1.Range('E8:H8').MergeCells = 1;
+ Q% k2 Q* q4 ?) B: m3 y5 N" R/ ASheet1.Range('B9:H9').MergeCells = 1;
4 f% [0 i6 {6 M( [/ R0 z! Q6 ^Sheet1.Range('E9:H9').MergeCells = 1;* k) p' U. K5 G
Sheet1.Range('A10:H10').MergeCells = 1;3 c. y0 q' [# w) {7 G: K
Sheet1.Range('A11:H11').MergeCells = 1;
- x. `4 ^" y' N$ a& oSheet1.Range('A12:H12').MergeCells = 1;
2 V$ I( U, ]. a( e% U bSheet1.Range('A13:H13').MergeCells = 1;
5 H4 E. H9 K6 t/ l2 ?! x( c' J* |Sheet1.Range('A14:H14').MergeCells = 1;
6 @0 _, ^" k6 h+ Z/ i1 h8 L+ i8 iSheet1.Range('D16:H16').MergeCells = 1; C7 \1 b4 Z! O/ s
% G$ h: f& u) m3 S5 G% 设置单元格的边框
0 z2 y# z w, G) R* k7 OSheet1.Range('A4:H14').Borders.Weight = 3;, N" _$ Q3 b2 S" R
Sheet1.Range('A10:H12').Borders.Item(3).Linestyle = 0;" U# h( y T1 Y5 W
Sheet1.Range('A10:H12').Borders.Item(4).Linestyle = 0;
* r: R6 |7 e2 P4 e3 E" E. GSheet1.Range('A13:H13').Borders.Item(4).Linestyle = 0;- {: _4 u. G6 \( h3 N+ A( n8 m
Sheet1.Range('A14:H14').Borders.Item(3).Linestyle = 0;2 t/ H' ]- y$ |( z1 Q- ^& j; L
; z+ j& y6 s+ P* ]# h, `
% 设置单元格对齐方式# X& P) s) V+ q+ k7 C
Sheet1.Range('A1:H9').HorizontalAlignment = 3;
2 ^* b) ]% C6 g% z5 eSheet1.Range('A4:A9').HorizontalAlignment = 6;
' w& M! |& m$ v, `* z- J: F P( M& lSheet1.Range('C4:C7').HorizontalAlignment = 6;% m+ ~8 g2 l% x: n, x5 w9 |( c
Sheet1.Range('E4:E7').HorizontalAlignment = 6;
8 ^! E9 d% x# f$ h( ~0 ]Sheet1.Range('G4:G7').HorizontalAlignment = 6;
/ O& l: p$ v' r3 d$ l* `5 x1 NSheet1.Range('A10:H10').HorizontalAlignment = 6;$ y) u$ a5 e# v Q
Sheet1.Range('A11:H11').HorizontalAlignment = 6; % -4130
2 |. x+ C. g `) X( [% OSheet1.Range('A11:H11').VerticalAlignment = 1;" Y% w2 h2 ^% B" g
Sheet1.Range('A12:H12').HorizontalAlignment = 4;& g6 ?" r: N6 _2 m
Sheet1.Range('A13:H13').VerticalAlignment = 1;
$ j6 Y% X# s$ r( a9 YSheet1.Range('A14:H14').HorizontalAlignment = 4;
8 z7 ~9 R$ {6 _( z A0 [Sheet1.Range('D16:H16').HorizontalAlignment = 4;- z# h e) @/ t; E- D$ |8 g& D$ }
! z; i$ n7 C; k- h. b c; M
% 写入单元格内容- u/ U8 ]1 S9 W# U5 v
Sheet1.Range('A1').Value = '试 卷 分 析';
7 [8 ^2 i" K: \% Q/ K! WSheet1.Range('A2').Value = '( 2009 — 2010 学年 第一学期)';
9 y; p& S* Z S6 E, ]. `( g1 XSheet1.Range('A4:H4').Value = {'课程名称','','课程号',...# B, K% L1 D( h( ?5 G ~& M0 R
'','任课教师学院','','任课教师',''};
3 a- v' w: N# X& z* r; }8 M. TSheet1.Range('A5:H5').Value = {'授课班级','','考试日期',...
* @9 C" W5 L" U4 y: ?( H G, j: N '','应考人数','','实考人数',''};, U n; o) f. @
Sheet1.Range('A6:H6').Value = {'出卷方式','','阅卷方式',...8 F3 }: X) T4 e4 k/ ]
'','选用试卷A/B','','考试时间',''};( J5 A1 v! \$ i. q: @
Sheet1.Range('A7:H7').Value = {'考试方式','','平均分',...! n1 O6 \ x8 Q2 }# Z- ~9 E% i
'','不及格人数','','及格率',''};6 V" c' J) [( V: [- e$ J& W
Sheet1.Range('A8').Value = '成绩分布';( A# o7 B' k2 I0 r0 F
Sheet1.Range('B8').Value = '90分以上 人占 %';
* g- Z2 U6 ?: f/ |* OSheet1.Range('E8').Value = '80---89分 人占 %';
6 M/ o( Q4 q& C+ i8 S$ RSheet1.Range('B9').Value = '70---79分 人占 %';
& [5 `) U b3 \7 N; C: T1 \) }Sheet1.Range('E9').Value = '60---69分 人占 %';1 h- V/ P% {* ~( ~8 ~
Sheet1.Range('A10').Value = ['试卷分析(含是否符合教学大纲、难度、知识覆'... B8 k$ e% S" a: \0 T1 Z% {
'盖面、班级分数分布分析、学生答题存在的共性问题与知识掌握情况、教学中'...
6 W" P/ M, j( k& g7 c. c9 { '存在的问题及改进措施等内容)'];
; @. }" J1 P8 J) \, DSheet1.Range('A12').Value = '签字 : 年 月 日';
3 ]' u5 M7 M% j. ]# V+ L7 ]Sheet1.Range('A13').Value = '教研室审阅意见:';
! u2 L- l; c7 D, p9 ?% S% wSheet1.Range('A14').Value = '教研室主任(签字): 年 月 日';
- D3 P# T- s* PSheet1.Range('D16').Value = '主管院长签字: 年 月 日';
. v& S; X9 N3 @
2 P% k0 K" y9 o) T6 ]% 设置字号3 J$ H) d2 p5 r0 o1 f; w% r. j, Q# g( ]6 K
Sheet1.Range('A4:H12').Font.size = 10.5; % 设置单元格A4至H12的字号为10.5
9 c. w8 a1 E% cSheet1.Range('A1').Font.size = 16; % 设置单元格A1的字号为16/ `7 C; {7 H, j% ^# h
Sheet1.Range('A1').Font.bold = 2; % 单元格A1的字体加粗
7 q# Y% f) ?3 W! z5 c6 s& B7 o( b* z2 L8 ]; u/ b" S
% 插入图片,如果当前工作表中有图形存在,通过循环将图形全部删除
/ f7 N& B6 I' |( P( ]. eShapes = Sheet1.Shapes; % 返回第1个工作表的Shapes接口的句柄
5 r( c' X' s- D5 `. P! mif Shapes.Count ~= 0;
* z& f6 ^# C/ z0 `# F8 { for i = 1 : Shapes.Count;
1 r1 z: W( f9 w; O/ P- j Shapes.Item(1).Delete; % 删除第1个Shape对象
( ~( Y1 j$ K2 I, Z& \ end;
- @9 C- r+ O f0 Cend;
; S+ P% x0 W5 V) K) O$ e0 R, }% |
5 g5 ]: K6 e# h: k, C- E% 产生均值为75,标准差为4的正态分布随机数,画直方图,并设置图形属性
) e5 T {; K% b& e+ e' l3 \zft = figure('units','normalized','position',...
4 q+ u, p9 ` f[0.280469 0.553385 0.428906 0.251302],'visible','off'); % 新建图形窗口,设为不可见
7 l4 O& {" Y9 h4 X$ c- _5 S O2 U! e; Hset(gca,'position',[0.1 0.2 0.85 0.75]); % 设置坐标系的位置和大小
* Z$ Z$ C# `6 T3 R+ A% ?2 }data = normrnd(75,4,1000,1); % 产生均值为75,标准差为4的正态分布随机数9 X9 @% L, k, H9 {
hist(data); % 绘制正态分布随机数的频数直方图3 z7 F- S! Z1 ~# I. e
grid on; % 添加参考网格( v2 n; b7 b5 Z( K( O2 Z- B. x" n
xlabel('考试成绩'); % 为X轴加标签
, O8 Z/ f* m! z& Y1 Kylabel('人数'); % 为Y轴加标签+ U5 Q9 c4 Q, K/ g" O: V" @
hgexport(zft, '-clipboard'); % 将直方图复制到剪贴板
4 V* G7 W+ |8 k. P8 W9 P% 选中工作表Sheet1的A11单元格,插入由MATLAB命令作出的直方图
/ h% e6 y" ]0 r, V( DSheet1.Range('A11').Select;3 b2 T# j" e1 p$ R: P9 b
Sheet1.Paste % Sheet1.PasteSpecial;( A6 G# u! A$ B
k# A! l! [9 T$ m/ i3 Q$ f6 w: Odelete(zft); % 删除图形句柄% _, a" H* l+ ^
Workbook.Save % 保存文档2 i5 V6 @4 _/ D( o0 k) Q3 o
|
|