|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
利用MATLAB生成Excel文档1 k' j8 E7 G( u
|& b! v4 Y s. K. L$ `+ J/ j2 @
4 d; @/ n' o( b8 \* s* o4 Eunction ceshi_Excel. Z+ r# o% ^) p2 T# F
%利用MATLAB生成Excel文档( ?: \- E% K( C* ^" ]9 R$ P! z
% ceshi_Excel
7 P* [) P( H$ {. Y& z%* T0 L- o% m* ?9 r
% Copyright 2009 - 2010 xiezhh.! Z! ^& M! |1 Y% h. n
% $Revision: 1.0.0.0 $ $Date: 2009/12/14 20:40:00 $
) J- t Y7 A3 P5 Y W) C/ o% |! z0 k% ]& U
% 设定测试Excel文件名和路径
4 _9 d" k, u$ | L$ `filespec_user = [pwd '\测试.xls'];
0 C. \" B0 o$ ^$ P2 m: B3 i/ Z j! y( q, B/ l" B
% 判断Excel是否已经打开,若已打开,就在打开的Excel中进行操作,否则就打开Excel
! ]9 a% q# A1 R; S, \0 F# M2 M. vtry
+ b) h, j- ?& F, @ % 若Excel服务器已经打开,返回其句柄Excel; A0 V; | {& O3 {1 W+ t% }% h
Excel = actxGetRunningServer('Excel.Application');6 v( p, V% z! x0 W/ a. x
catch
1 h `, _7 ^# f8 m % 创建一个Microsoft Excel服务器,返回句柄Excel! J5 B% S3 B( Y6 j9 @; p" q
Excel = actxserver('Excel.Application');1 V6 D. W X9 N( l# k. H3 V' e) I
end;1 J4 H' N; O4 T3 c7 a
" V. Q' c& v0 J% R% 设置Excel服务器为可见状态' X: ?2 F, ^- u7 k
Excel.Visible = 1; % set(Excel, 'Visible', 1);) A% R m2 n2 @+ Q
5 @" C* E, ]3 b+ N7 Y+ ~* A
% 若测试文件存在,打开该测试文件,否则,新建一个工作簿,并保存,文件名为测试.Excel' _) ^/ e3 Q. i# c0 B; s
if exist(filespec_user,'file');
: g$ s3 y0 R+ v- P Workbook = Excel.Workbooks.Open(filespec_user);
$ U" n5 }! S$ v! h! L+ X % Workbook = invoke(Excel.Workbooks,'Open',filespec_user);) x8 x, C( S5 K+ G( `9 r
else0 `% g0 ?5 N. O) S
Workbook = Excel.Workbooks.Add;
/ K6 D5 e& o* L* F5 }2 C% E % Workbook = invoke(Excel.Workbooks, 'Add');3 [# z& h/ ]+ b
Workbook.SaveAs(filespec_user);. }" z+ F' m* a/ ]& r6 m k, l
end
" R8 Y2 X/ b6 |9 w+ S/ Z# h, x" D# H' C. \4 a: c4 n
% 返回当前工作表句柄% v2 h0 P2 h! a% H
Sheets = Excel.ActiveWorkbook.Sheets; % Sheets = Workbook.Sheets;$ u' Q, W3 M/ t9 Z
Sheet1 = Sheets.Item(1); % 返回第1个表格句柄
: y5 @* f0 X% [; A7 NSheet1.Activate; % 激活第1个表格2 f/ r! F9 u: I( H6 C/ d% x
6 G4 g; L; q( l& H$ A. f& p2 H% 页面设置
9 k! y0 \8 S- v( x( W; WSheet1.PageSetup.TopMargin = 60; % 上边距60磅4 U' O+ R) `8 {. Y
Sheet1.PageSetup.BottomMargin = 45; % 下边距45磅
4 \" B4 M8 J3 G. VSheet1.PageSetup.LeftMargin = 45; % 左边距45磅% `8 F* Y3 T* d
Sheet1.PageSetup.RightMargin = 45; % 右边距45磅
4 Z. X- B# ?! A5 O# v- F9 x- k+ j' \& m' s/ j
% 设置行高和列宽: u* W, M( x3 S9 |/ {6 e, h
% 定义行高向量RowHeight
9 O' E) f; H; o. q( JRowHeight = [26,22,15,29,37,29,29,25,25,36,280,31,40,29,15,24]';$ r' U: J$ g+ e0 k2 w1 M
% 设置Range对象(从A1到A16)的行高$ u( I& |7 q* } ~ y$ p
Sheet1.Range('A1:A16').RowHeight = RowHeight;
d/ z, h) }* O% 设置Range对象(从A1到H1)的列宽+ ~& ]/ k! n* ^# C! I7 N
Sheet1.Range('A1:H1').ColumnWidth = [9,15,9,9,9,9,9,9];9 P2 n$ O( w; @. a8 E4 f# t
8 m! ^; P5 \7 y/ k% 合并单元格
4 j# I$ U; {/ {' VSheet1.Range('A1:H1').MergeCells = 1;( Y! t! F$ d2 U9 ?" Z7 F/ m
Sheet1.Range('A2:H2').MergeCells = 1;
4 O; ~( u3 L# E2 `* B( J0 wSheet1.Range('A8:A9').MergeCells = 1;3 Z0 j( l7 T7 t# G- ^) h
Sheet1.Range('B8:H8').MergeCells = 1;
, s3 g. ?# s; j- n: iSheet1.Range('E8:H8').MergeCells = 1;
0 ^* t+ }. _$ I$ \: _$ Y0 CSheet1.Range('B9:H9').MergeCells = 1;: o& i0 o( E2 Q' D. }* E2 z
Sheet1.Range('E9:H9').MergeCells = 1;
" p* J2 T8 H$ e- Y2 b4 P% a. B" E' l/ VSheet1.Range('A10:H10').MergeCells = 1;
1 B4 Q; ?. |& k( W* |( }: ySheet1.Range('A11:H11').MergeCells = 1;
6 T/ d/ |0 Z7 Q* L$ q! o! bSheet1.Range('A12:H12').MergeCells = 1;
X- w0 u- r, {7 E& g, j9 QSheet1.Range('A13:H13').MergeCells = 1;0 ^8 j, ~- \: P4 Z" Y7 `; F
Sheet1.Range('A14:H14').MergeCells = 1;5 K; @) W) [. s( P9 Y8 t, C
Sheet1.Range('D16:H16').MergeCells = 1;* V8 g- a8 }; a/ s
% M7 M) R, x' {, K# l- s% 设置单元格的边框! `$ Z$ r6 L/ ^7 w* t Z' w
Sheet1.Range('A4:H14').Borders.Weight = 3;3 @1 _$ r. R: Z2 q
Sheet1.Range('A10:H12').Borders.Item(3).Linestyle = 0;+ ]$ h) y: m, l# B6 A- K' w
Sheet1.Range('A10:H12').Borders.Item(4).Linestyle = 0;& f$ D% o, g/ I7 E7 Z6 V
Sheet1.Range('A13:H13').Borders.Item(4).Linestyle = 0;
' h8 \' w/ z% l) fSheet1.Range('A14:H14').Borders.Item(3).Linestyle = 0;
: V: ] Z. F' w" m
* w& B K$ r$ D- {1 Z% 设置单元格对齐方式0 ^/ t: ]3 G" ~
Sheet1.Range('A1:H9').HorizontalAlignment = 3; t4 E" e& g1 _- @( G
Sheet1.Range('A4:A9').HorizontalAlignment = 6;# [" g4 Z6 }5 v7 R
Sheet1.Range('C4:C7').HorizontalAlignment = 6;0 g1 c! f( R4 A$ J% m, u1 R: L7 t
Sheet1.Range('E4:E7').HorizontalAlignment = 6;
8 h4 h6 _( O: M: K1 KSheet1.Range('G4:G7').HorizontalAlignment = 6;$ x- e" |# T7 r) S) m
Sheet1.Range('A10:H10').HorizontalAlignment = 6;6 Y) C6 A$ u" x
Sheet1.Range('A11:H11').HorizontalAlignment = 6; % -4130# o/ ?: r6 p: g5 H& D+ C6 [8 [
Sheet1.Range('A11:H11').VerticalAlignment = 1;
$ S1 A! u6 ]& Q0 m9 SSheet1.Range('A12:H12').HorizontalAlignment = 4;, `& N, m% \$ z" ~9 F- O( ^
Sheet1.Range('A13:H13').VerticalAlignment = 1;9 x& u0 h, a: P- c
Sheet1.Range('A14:H14').HorizontalAlignment = 4;: b9 C( r# O' I- i0 D$ [: n3 G
Sheet1.Range('D16:H16').HorizontalAlignment = 4;
5 ^. @0 C& H1 B
; w. f- c- y5 T1 E7 k; d9 U9 c% S% 写入单元格内容( A5 O' {: w; M" f
Sheet1.Range('A1').Value = '试 卷 分 析';* H4 K$ N- z0 w6 O6 l/ b0 S0 O. R
Sheet1.Range('A2').Value = '( 2009 — 2010 学年 第一学期)';
1 t+ H* ` B4 t+ DSheet1.Range('A4:H4').Value = {'课程名称','','课程号',...
3 V) V7 G; o1 [ '','任课教师学院','','任课教师',''};
* m) N6 l( U7 z* s- YSheet1.Range('A5:H5').Value = {'授课班级','','考试日期',...: E1 _3 z2 w! ~+ W2 L2 a) k: [, o
'','应考人数','','实考人数',''};' H% D, {" X( L! C
Sheet1.Range('A6:H6').Value = {'出卷方式','','阅卷方式',...
4 g7 v; v3 _; u7 h8 X6 S" ^: R, g/ ?0 @# C '','选用试卷A/B','','考试时间',''};
2 Q7 ?3 f# k. Z6 h7 J. K; V; ?Sheet1.Range('A7:H7').Value = {'考试方式','','平均分',...7 u2 b' h! \& ?$ r( u' I
'','不及格人数','','及格率',''};0 x. t+ c6 j4 G, x7 { S
Sheet1.Range('A8').Value = '成绩分布';' p t; U0 m9 J9 k& ?
Sheet1.Range('B8').Value = '90分以上 人占 %';4 ~. U0 }3 u4 V5 t. ^- w
Sheet1.Range('E8').Value = '80---89分 人占 %';
( ~+ r; p6 E; Z( k% H# f& PSheet1.Range('B9').Value = '70---79分 人占 %';+ M c, |$ z- q& {: T
Sheet1.Range('E9').Value = '60---69分 人占 %';
0 n# y# F# q k' G- e1 TSheet1.Range('A10').Value = ['试卷分析(含是否符合教学大纲、难度、知识覆'...! n6 ?8 x, ^5 h# P' P2 [1 `# p
'盖面、班级分数分布分析、学生答题存在的共性问题与知识掌握情况、教学中'...$ f) r' c: _. X/ \
'存在的问题及改进措施等内容)'];
( i6 r6 ^$ c* ]( ^2 Z9 l' ASheet1.Range('A12').Value = '签字 : 年 月 日';8 I7 q$ q. b6 l5 ]+ ~& a( f* @
Sheet1.Range('A13').Value = '教研室审阅意见:';) D. O) [2 ?! f# i6 t+ L% o! i* U
Sheet1.Range('A14').Value = '教研室主任(签字): 年 月 日';! n z! N# L7 Z% g& p( l+ ?( [2 K
Sheet1.Range('D16').Value = '主管院长签字: 年 月 日';
) V: r, {- B2 K- I# M) S. B# z; x1 ^( \- z; k5 D( I
% 设置字号
# j: R& | a, ^2 j3 R/ K8 ^Sheet1.Range('A4:H12').Font.size = 10.5; % 设置单元格A4至H12的字号为10.58 v; I( i& ^9 g) _5 L1 Z$ P) ?9 O# |
Sheet1.Range('A1').Font.size = 16; % 设置单元格A1的字号为16
+ Z* Y, v5 G2 J) VSheet1.Range('A1').Font.bold = 2; % 单元格A1的字体加粗
; d( b- P& O# t3 I
3 K+ r6 E) b" \+ X* e* O; m* Z% 插入图片,如果当前工作表中有图形存在,通过循环将图形全部删除: }2 w. f5 D) L) r- r8 z
Shapes = Sheet1.Shapes; % 返回第1个工作表的Shapes接口的句柄$ e* t3 F" l0 `& A" t
if Shapes.Count ~= 0;
7 L0 H( T) D, c3 o for i = 1 : Shapes.Count;
' w( V) x3 M' H- u: | Shapes.Item(1).Delete; % 删除第1个Shape对象
) a W6 P5 p7 N* C6 U( m# C# L end;
/ T4 m6 Z! t2 y" wend;! n! J& r5 T6 j: c
3 w4 J; d' [% o* ~: R0 G% 产生均值为75,标准差为4的正态分布随机数,画直方图,并设置图形属性' D& G3 v* u+ u- C- g# G- F
zft = figure('units','normalized','position',..., E, c) T& f3 Z' O0 M
[0.280469 0.553385 0.428906 0.251302],'visible','off'); % 新建图形窗口,设为不可见: T0 \/ X% ]. k& o1 u9 o
set(gca,'position',[0.1 0.2 0.85 0.75]); % 设置坐标系的位置和大小
6 T) U& C/ ?( E/ b% E, t6 Ldata = normrnd(75,4,1000,1); % 产生均值为75,标准差为4的正态分布随机数
2 r& N' c9 k! G5 u# Q3 ghist(data); % 绘制正态分布随机数的频数直方图, ?5 k8 c8 E3 r$ z& J# ~. }. [
grid on; % 添加参考网格: g+ e5 y8 ~& A7 i+ V( Q4 T) J
xlabel('考试成绩'); % 为X轴加标签: ?* {4 K$ W- }+ J6 |; r9 G
ylabel('人数'); % 为Y轴加标签
! |# d% a! C! Uhgexport(zft, '-clipboard'); % 将直方图复制到剪贴板8 _1 Z7 c, [1 p G9 w4 l1 \
% 选中工作表Sheet1的A11单元格,插入由MATLAB命令作出的直方图
6 t( e9 q$ G8 P8 eSheet1.Range('A11').Select;
z- V7 l4 {: n4 D$ s' z, oSheet1.Paste % Sheet1.PasteSpecial;& Z' c7 C& E C7 }9 a: \8 l6 H, H
4 y: y+ c% O) A' {; Qdelete(zft); % 删除图形句柄
" E( V2 \' k; J: rWorkbook.Save % 保存文档3 D1 {. v' S, L, ?) a/ G6 _% U
|
|