|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
利用MATLAB生成Excel文档
4 _6 G$ b, G6 z6 C! \
/ Q' l p& w. f4 w4 Q0 ^% V4 L3 T3 q
unction ceshi_Excel
3 P' c3 }0 a; }& l%利用MATLAB生成Excel文档
# t$ y# \4 p8 |: l% t2 `% ceshi_Excel$ X# M) |/ U, _$ D n( h
%9 |. o) w% r' N$ y5 |8 N
% Copyright 2009 - 2010 xiezhh.$ Z# k$ B N, v6 `
% $Revision: 1.0.0.0 $ $Date: 2009/12/14 20:40:00 $+ P9 [$ Z9 c( N% P: ?
$ Q5 t6 g+ s: n% 设定测试Excel文件名和路径
% u, t z" x: O2 Sfilespec_user = [pwd '\测试.xls'];
% | ?4 n5 m0 @
5 k5 A( e+ g( o4 `5 t% 判断Excel是否已经打开,若已打开,就在打开的Excel中进行操作,否则就打开Excel* a0 F) W6 u) E+ b9 T+ Y, [
try7 U( _ T3 z3 A
% 若Excel服务器已经打开,返回其句柄Excel
$ r0 L2 n. Y0 D' c7 `) g7 Y/ e/ [ Excel = actxGetRunningServer('Excel.Application');
( |8 d' F( i: |5 @0 p: tcatch
5 I" {. s N) l/ Z+ R % 创建一个Microsoft Excel服务器,返回句柄Excel5 ]) e! I4 z/ t# G$ s
Excel = actxserver('Excel.Application');
6 d; S w" B& l5 qend;7 D/ ?3 o, W5 d+ R6 b: \
% c- V Y9 G/ p) {( w2 J% 设置Excel服务器为可见状态
0 R% l- x0 p- o& `6 vExcel.Visible = 1; % set(Excel, 'Visible', 1);
" Z! ]- [/ f! X; M3 e1 s. A- ^) w. p" X0 S- p. b& S
% 若测试文件存在,打开该测试文件,否则,新建一个工作簿,并保存,文件名为测试.Excel
8 y: o- T* D1 w1 a1 {if exist(filespec_user,'file');% N- ^1 v+ C% c+ Z- D1 s
Workbook = Excel.Workbooks.Open(filespec_user);3 g3 g- U: |7 i# O% K- T6 h
% Workbook = invoke(Excel.Workbooks,'Open',filespec_user);% L! z2 A7 \; r3 i& {
else7 S6 K3 q r% T
Workbook = Excel.Workbooks.Add;$ Y- v1 M3 d3 s+ m2 H0 t: a1 l" a5 c
% Workbook = invoke(Excel.Workbooks, 'Add');% _& E7 q1 p$ i. ]
Workbook.SaveAs(filespec_user);8 p! E! w' V; T7 s$ F, t+ k
end
% d' [. z" c* B2 H! l' a4 v6 F, n' p ?$ l0 g
% 返回当前工作表句柄5 c# |5 o6 T/ Y0 d
Sheets = Excel.ActiveWorkbook.Sheets; % Sheets = Workbook.Sheets;5 ~- }5 U/ X( d" s" G! h7 m
Sheet1 = Sheets.Item(1); % 返回第1个表格句柄( D/ k& [ ~$ e8 ~* A& k; _
Sheet1.Activate; % 激活第1个表格
$ Z# v) n: N1 P; ~' s1 S/ m) W
: d R: r: o3 x- R1 r1 W6 n9 k% 页面设置
0 @ D3 e( B2 s9 h8 LSheet1.PageSetup.TopMargin = 60; % 上边距60磅
6 r* t6 H. g% Z) i1 s/ ZSheet1.PageSetup.BottomMargin = 45; % 下边距45磅
( r7 I" }/ o7 j* e3 d' Y, kSheet1.PageSetup.LeftMargin = 45; % 左边距45磅) v7 Z. M; j6 x) T& @! u
Sheet1.PageSetup.RightMargin = 45; % 右边距45磅$ k6 N! {, L% t/ U' Q$ l- Z
. _" U# R8 n' p0 y4 p6 W3 Q' s% 设置行高和列宽/ P' V$ }) N$ C0 \: ]
% 定义行高向量RowHeight
! }3 [. K4 K9 M# D% GRowHeight = [26,22,15,29,37,29,29,25,25,36,280,31,40,29,15,24]';
1 I& f5 a% z" S X0 d' x' n% O% 设置Range对象(从A1到A16)的行高
+ ?) _2 I$ i3 G- h$ BSheet1.Range('A1:A16').RowHeight = RowHeight;+ ~5 f5 E2 [( k3 b
% 设置Range对象(从A1到H1)的列宽5 a' V! Z! o* H
Sheet1.Range('A1:H1').ColumnWidth = [9,15,9,9,9,9,9,9];
9 @; K& W4 \6 v; U, ^$ d3 q$ D" O' z, w0 {' C4 ]% |
% 合并单元格2 S5 n( D% s) w: ^9 p( s
Sheet1.Range('A1:H1').MergeCells = 1;7 w7 d% M+ _4 q/ K0 S
Sheet1.Range('A2:H2').MergeCells = 1;2 O: ?$ p+ x# B! u- X7 q
Sheet1.Range('A8:A9').MergeCells = 1;3 Q+ L$ [' L% V4 F
Sheet1.Range('B8:H8').MergeCells = 1;
% b# l! w2 I4 G4 }Sheet1.Range('E8:H8').MergeCells = 1;6 o# Q# A1 g) S, q' P
Sheet1.Range('B9:H9').MergeCells = 1;8 I1 X: h9 N( Z* k& a
Sheet1.Range('E9:H9').MergeCells = 1;! Z% O' l' W0 d% s
Sheet1.Range('A10:H10').MergeCells = 1;
, ?& j; r" Z2 t% G/ ySheet1.Range('A11:H11').MergeCells = 1;8 p6 Q3 u, {* E$ L: ]
Sheet1.Range('A12:H12').MergeCells = 1;
3 d% _# H. f9 s5 ^0 FSheet1.Range('A13:H13').MergeCells = 1;% \$ c* t& E9 m, j3 \+ g
Sheet1.Range('A14:H14').MergeCells = 1;5 e% ^& i/ K# ^, j9 j
Sheet1.Range('D16:H16').MergeCells = 1;: J$ U# \9 A; r$ l8 V" c+ \
1 |0 |9 [* x7 e; m
% 设置单元格的边框% V+ p8 d& ]8 `# ^
Sheet1.Range('A4:H14').Borders.Weight = 3;
; \0 F! i! p2 PSheet1.Range('A10:H12').Borders.Item(3).Linestyle = 0;4 c& f' Q" K. a; n$ b# G
Sheet1.Range('A10:H12').Borders.Item(4).Linestyle = 0;
n- v! w6 p# U. t& j8 QSheet1.Range('A13:H13').Borders.Item(4).Linestyle = 0;- {% w G) ?4 Y4 [1 c! \
Sheet1.Range('A14:H14').Borders.Item(3).Linestyle = 0; [/ z, y+ G B' B+ I C0 L, o
0 ]) V! n* Y8 t. B; B- {% 设置单元格对齐方式5 b' D( x4 L& o7 J* \5 ~" |7 B' p0 b
Sheet1.Range('A1:H9').HorizontalAlignment = 3;* w/ v8 `0 y- e0 y, y
Sheet1.Range('A4:A9').HorizontalAlignment = 6;" C4 B; z% a3 h( K# O" u
Sheet1.Range('C4:C7').HorizontalAlignment = 6;
: N* I% h; b* ~4 ~, @Sheet1.Range('E4:E7').HorizontalAlignment = 6;
1 l1 I' a' S4 Y; p$ V* V/ S, USheet1.Range('G4:G7').HorizontalAlignment = 6;+ @: a' ~# E* G- S' ^1 t
Sheet1.Range('A10:H10').HorizontalAlignment = 6;
! i% x6 \2 `* N; I7 QSheet1.Range('A11:H11').HorizontalAlignment = 6; % -4130
- D2 G6 k; `- KSheet1.Range('A11:H11').VerticalAlignment = 1;
5 ^8 j* p7 j7 g6 \2 HSheet1.Range('A12:H12').HorizontalAlignment = 4;
% G* y9 v& v* N; \- p/ gSheet1.Range('A13:H13').VerticalAlignment = 1;+ O W6 w7 U* H. I. Y# b" @
Sheet1.Range('A14:H14').HorizontalAlignment = 4;& m9 h- u- z# s7 x
Sheet1.Range('D16:H16').HorizontalAlignment = 4;
4 C) z* U/ N) A- I: \+ q* L! k e; V6 N0 b! j3 ~
% 写入单元格内容. t3 i: Q0 [, q" O! ~% X! \# P7 l! Q
Sheet1.Range('A1').Value = '试 卷 分 析';
1 X1 w# v6 S7 K* v: b2 @Sheet1.Range('A2').Value = '( 2009 — 2010 学年 第一学期)';
( [' A2 W: y! USheet1.Range('A4:H4').Value = {'课程名称','','课程号',...
5 A, c9 ^% ~2 I+ N( C$ j '','任课教师学院','','任课教师',''};' t( W$ f1 |& w# o
Sheet1.Range('A5:H5').Value = {'授课班级','','考试日期',...
. |# t8 y) m; N- Z9 I '','应考人数','','实考人数',''}; t7 b( U3 D$ t9 v
Sheet1.Range('A6:H6').Value = {'出卷方式','','阅卷方式',... Q& A! c$ _9 n
'','选用试卷A/B','','考试时间',''};
7 M8 E' L) _3 ASheet1.Range('A7:H7').Value = {'考试方式','','平均分',...* e5 H3 V' g- s* ~
'','不及格人数','','及格率',''};
! q$ x! G- b y. MSheet1.Range('A8').Value = '成绩分布';7 C) U( Y5 ^4 ^
Sheet1.Range('B8').Value = '90分以上 人占 %';
5 ]* t1 z1 w' `( m4 oSheet1.Range('E8').Value = '80---89分 人占 %';- v; T! {+ l" m# }+ Y( _3 Z
Sheet1.Range('B9').Value = '70---79分 人占 %';
5 Y% q# h5 U& ASheet1.Range('E9').Value = '60---69分 人占 %';& Q4 w3 Q" B) N' B
Sheet1.Range('A10').Value = ['试卷分析(含是否符合教学大纲、难度、知识覆'...
% n! F5 t7 X. \) c* o5 W/ C '盖面、班级分数分布分析、学生答题存在的共性问题与知识掌握情况、教学中'..., r+ i1 S8 t7 S( j. W5 i
'存在的问题及改进措施等内容)'];
! q w/ w- ^; L) B" ESheet1.Range('A12').Value = '签字 : 年 月 日';( h# @+ A9 J: ^& D! v) ?
Sheet1.Range('A13').Value = '教研室审阅意见:';7 Z9 @7 k; `3 c" W
Sheet1.Range('A14').Value = '教研室主任(签字): 年 月 日';
- q& X1 |2 T1 G6 g/ E& |* U/ eSheet1.Range('D16').Value = '主管院长签字: 年 月 日';4 {# B+ Y) b- C3 x; v0 m# I
& e7 s: M# v( @# t& \
% 设置字号0 w0 J( T; N# _. y1 J& ]; P& G
Sheet1.Range('A4:H12').Font.size = 10.5; % 设置单元格A4至H12的字号为10.5
L% {, i( a( R9 T$ F. JSheet1.Range('A1').Font.size = 16; % 设置单元格A1的字号为16% D5 `& q# |$ M. v4 b/ B6 f; ~$ r
Sheet1.Range('A1').Font.bold = 2; % 单元格A1的字体加粗1 u8 [ G/ @8 ~0 @4 }9 }1 P7 _
( g4 B( c5 V& h; r) c
% 插入图片,如果当前工作表中有图形存在,通过循环将图形全部删除' B9 d" F% G8 N2 Y* F
Shapes = Sheet1.Shapes; % 返回第1个工作表的Shapes接口的句柄
z! W/ O2 O' s$ ^' M" ~if Shapes.Count ~= 0;. h7 A) J8 ?5 C9 J% {- U$ y3 o
for i = 1 : Shapes.Count;; T& L8 Q3 v" H7 V
Shapes.Item(1).Delete; % 删除第1个Shape对象, g' l& L- s# u4 n( o' E! ?$ f; Z% p
end;7 L& @0 g. G' ?& ^/ F/ c! U e" s
end;. j" q2 Y( q( A; w
( C1 P' c! O# p+ l# B8 j5 o& U0 A( e( n) u
% 产生均值为75,标准差为4的正态分布随机数,画直方图,并设置图形属性# r* }# b8 D: _* ^* v
zft = figure('units','normalized','position',...5 G. ]( B1 N6 J! {
[0.280469 0.553385 0.428906 0.251302],'visible','off'); % 新建图形窗口,设为不可见' l; A! h" h% x/ z% f
set(gca,'position',[0.1 0.2 0.85 0.75]); % 设置坐标系的位置和大小
/ S$ O0 H$ A, U9 w% j' ]- Vdata = normrnd(75,4,1000,1); % 产生均值为75,标准差为4的正态分布随机数
+ B: s7 g7 m. {/ @; ? i0 x8 dhist(data); % 绘制正态分布随机数的频数直方图
8 q5 Y( t* A& Z; hgrid on; % 添加参考网格 {3 x: E# z. \& q# h7 e# P" _
xlabel('考试成绩'); % 为X轴加标签
/ l6 F4 b& H! v" h* Tylabel('人数'); % 为Y轴加标签
S! w6 e1 W7 Y( {5 R2 o8 Khgexport(zft, '-clipboard'); % 将直方图复制到剪贴板
8 O, b! n; ]' p( h3 f* H$ C% 选中工作表Sheet1的A11单元格,插入由MATLAB命令作出的直方图
/ _7 \( X1 Y5 i1 R$ i3 V% rSheet1.Range('A11').Select;
& u& c6 E! z" g: n `Sheet1.Paste % Sheet1.PasteSpecial;
9 R' E# ^9 m, z* J: F$ j; p) |( w2 G) B
delete(zft); % 删除图形句柄1 ?/ T$ ~( i4 O' S& ^8 `8 o
Workbook.Save % 保存文档) j: ?; B h9 b4 j( r% B
|
|