|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
利用MATLAB生成Excel文档- I# N; e( v$ I2 [
& A* u: u6 w! s* K9 D
d' O! w4 ~3 E% O8 W6 Yunction ceshi_Excel* T# U# ^/ U/ J- C
%利用MATLAB生成Excel文档
) k. T/ t) L* Q6 k. q0 R" l% ceshi_Excel
! B9 E3 s7 _' t7 \' U" ?, V% b$ b%
) j5 X3 Q, \. l# d7 y% Copyright 2009 - 2010 xiezhh.
" d8 O8 ~3 b! I* U" v% $Revision: 1.0.0.0 $ $Date: 2009/12/14 20:40:00 $
. f' G; P. D+ H
n4 F* h% n+ K/ C% 设定测试Excel文件名和路径
( `& F6 i5 W1 m* X0 A3 s; mfilespec_user = [pwd '\测试.xls'];
' D( v- V4 Z, {, l6 b' C
, [, [" W# n7 u! P5 _% B, V9 a% 判断Excel是否已经打开,若已打开,就在打开的Excel中进行操作,否则就打开Excel& }1 g5 W, @, R$ R7 S$ W$ j) P2 I
try8 j- E" T' b; E. u" S) I! v
% 若Excel服务器已经打开,返回其句柄Excel
' ~- B/ _ K3 w, t: Q) C) o9 g% q Excel = actxGetRunningServer('Excel.Application');
6 e* N& W5 N: }6 D3 k2 ycatch7 `7 r7 k' D8 D2 G9 R
% 创建一个Microsoft Excel服务器,返回句柄Excel/ Z$ y( M+ P1 _9 `9 p4 m4 I- u g
Excel = actxserver('Excel.Application');
% Z, c7 B" E* B: w/ uend;
( U6 s. H2 O2 ?" C; v
, A7 h' t& K$ \% 设置Excel服务器为可见状态
3 k; f; B0 m" N2 YExcel.Visible = 1; % set(Excel, 'Visible', 1);
. q# G1 o5 w$ ^+ F! S3 b3 h8 ~. V: z) O0 G& x
% 若测试文件存在,打开该测试文件,否则,新建一个工作簿,并保存,文件名为测试.Excel
4 e' M* @5 E, p. sif exist(filespec_user,'file');4 P& c' F- M3 r0 c
Workbook = Excel.Workbooks.Open(filespec_user);# W/ E" M. G! n k. f7 M' \
% Workbook = invoke(Excel.Workbooks,'Open',filespec_user);' U& h; _' `) Z$ x; R
else
5 H* i- W: e6 c, w5 g$ h Workbook = Excel.Workbooks.Add;
1 ?1 K8 P8 t6 q9 z, O % Workbook = invoke(Excel.Workbooks, 'Add');
+ M5 B8 Q% w8 Z4 y/ z, N1 I Workbook.SaveAs(filespec_user);
( h4 p- Z. U/ lend
! O$ I5 v6 ]0 |: a2 ?- d! ?8 N5 m' x$ X
% 返回当前工作表句柄
" g( B; r* w4 c) B) d n8 ~Sheets = Excel.ActiveWorkbook.Sheets; % Sheets = Workbook.Sheets;2 h: b$ V" Y; E4 y$ [0 N* N7 c- S
Sheet1 = Sheets.Item(1); % 返回第1个表格句柄
/ P6 L: }, \7 Z3 D2 zSheet1.Activate; % 激活第1个表格
# ^/ n* y, k6 ~- `/ j$ u# P; f+ D/ ?0 P' }7 u
% 页面设置: E; i; {+ F, v3 I
Sheet1.PageSetup.TopMargin = 60; % 上边距60磅
* G& Z; m, w' g" k. Z& }7 HSheet1.PageSetup.BottomMargin = 45; % 下边距45磅* {, d$ F) u, T8 Y0 S( i
Sheet1.PageSetup.LeftMargin = 45; % 左边距45磅
& s2 |7 d, n* n& O, ?Sheet1.PageSetup.RightMargin = 45; % 右边距45磅
! x L! V# ?/ I Y/ B
/ W! v% ?( g: u% 设置行高和列宽
p! v9 [9 f* ~+ h: a: g" P% 定义行高向量RowHeight; U7 S m: v+ U% F
RowHeight = [26,22,15,29,37,29,29,25,25,36,280,31,40,29,15,24]';
) F) B8 q }# b N9 t: A: F% 设置Range对象(从A1到A16)的行高, {4 w' S4 x: c, {+ ]. [5 R
Sheet1.Range('A1:A16').RowHeight = RowHeight;8 ?: n: l* L9 F# P+ Z9 l0 w$ K
% 设置Range对象(从A1到H1)的列宽3 O+ ]7 N/ q v. R6 }: X7 ^4 n/ x+ T
Sheet1.Range('A1:H1').ColumnWidth = [9,15,9,9,9,9,9,9];
. g( M) [$ S6 w* Z; Y
% A% P5 z) d4 t5 b* `9 n9 m H% 合并单元格+ N: w9 l$ a1 k
Sheet1.Range('A1:H1').MergeCells = 1;
% v7 x% d( ]% A8 [Sheet1.Range('A2:H2').MergeCells = 1;
6 z1 ~2 c, t7 `# z3 [$ d5 ~1 mSheet1.Range('A8:A9').MergeCells = 1;
# b& A- M" ?+ p" o9 e2 gSheet1.Range('B8:H8').MergeCells = 1;
6 p2 [( `6 V! {; aSheet1.Range('E8:H8').MergeCells = 1;( u" j( f! X2 ]( g
Sheet1.Range('B9:H9').MergeCells = 1;
# V: z4 ` |# C/ ~+ J% ZSheet1.Range('E9:H9').MergeCells = 1;, _0 v: @7 v1 D$ s
Sheet1.Range('A10:H10').MergeCells = 1;' q* V0 P+ Z! ^) U
Sheet1.Range('A11:H11').MergeCells = 1;
2 t( i8 y; S5 l8 S* | ^Sheet1.Range('A12:H12').MergeCells = 1;5 [" u( u& Z2 U, Z4 A( b/ {
Sheet1.Range('A13:H13').MergeCells = 1;6 O8 W1 T- x0 q2 A
Sheet1.Range('A14:H14').MergeCells = 1;
2 Y: h$ {! F7 D# H9 W g& [" fSheet1.Range('D16:H16').MergeCells = 1;7 a- O7 Q% E% D- S3 H0 J
_) ]- O3 Z# K
% 设置单元格的边框
* `3 p( b3 b+ G1 t F; ]$ oSheet1.Range('A4:H14').Borders.Weight = 3;
5 c6 h" \% w$ Z9 ?* W: n0 W# }Sheet1.Range('A10:H12').Borders.Item(3).Linestyle = 0;. r0 ^' C- u& M S0 A% N
Sheet1.Range('A10:H12').Borders.Item(4).Linestyle = 0;
+ B4 Q: }6 k! ?# P: B( FSheet1.Range('A13:H13').Borders.Item(4).Linestyle = 0;
, A5 v! ]: C0 h; d- mSheet1.Range('A14:H14').Borders.Item(3).Linestyle = 0;
/ ^6 `$ M F- l: Q
0 a. E( q+ h9 a9 U9 l3 ~0 U. R% 设置单元格对齐方式; g, s' f) j$ ~, }3 P$ m$ z$ G3 j+ |
Sheet1.Range('A1:H9').HorizontalAlignment = 3;
& Z1 L( @2 l7 L# pSheet1.Range('A4:A9').HorizontalAlignment = 6;# W) O. m+ o/ P9 q
Sheet1.Range('C4:C7').HorizontalAlignment = 6;5 n/ u6 b( W' \: f; k3 z
Sheet1.Range('E4:E7').HorizontalAlignment = 6;
5 o; m, U- H& m& C$ vSheet1.Range('G4:G7').HorizontalAlignment = 6;
0 l+ p9 M; v9 g! }7 zSheet1.Range('A10:H10').HorizontalAlignment = 6;5 i0 m' U; d+ _% M
Sheet1.Range('A11:H11').HorizontalAlignment = 6; % -4130
# b( S G+ t2 @Sheet1.Range('A11:H11').VerticalAlignment = 1;& q) O+ V2 t$ J- k) l" D* F9 X
Sheet1.Range('A12:H12').HorizontalAlignment = 4;6 p6 p0 K/ B1 P1 B0 i
Sheet1.Range('A13:H13').VerticalAlignment = 1;* P- N/ Z: _+ D& t
Sheet1.Range('A14:H14').HorizontalAlignment = 4;# G: C" o+ }5 B7 k9 {) W
Sheet1.Range('D16:H16').HorizontalAlignment = 4;& e7 k( B7 b- |
9 Y' }9 t- C4 G( [, _8 }
% 写入单元格内容
; I9 |& M1 V; [4 ?* L. KSheet1.Range('A1').Value = '试 卷 分 析';% \* y8 U- l( T6 T5 `. v
Sheet1.Range('A2').Value = '( 2009 — 2010 学年 第一学期)';& X% S2 I7 d- G, e
Sheet1.Range('A4:H4').Value = {'课程名称','','课程号',...
) Y3 L- d f4 M) m. G '','任课教师学院','','任课教师',''};9 Y9 I! S& m a8 Z( G+ C
Sheet1.Range('A5:H5').Value = {'授课班级','','考试日期',...
3 I& X# M/ B( i$ Y+ _* `' D) L '','应考人数','','实考人数',''};' Q7 z; d% Y8 _8 O3 i! S
Sheet1.Range('A6:H6').Value = {'出卷方式','','阅卷方式',...
# Q. Q: m8 ?- B. S" j) \% h '','选用试卷A/B','','考试时间',''};! Z; @2 W1 T: _+ P2 M& g
Sheet1.Range('A7:H7').Value = {'考试方式','','平均分',...) D5 j' Z3 u1 V2 C, k! s
'','不及格人数','','及格率',''};
8 j( ~: s* T2 {) i2 ?( r9 U/ Q; [$ SSheet1.Range('A8').Value = '成绩分布';8 V$ t0 m) |- b2 {4 a! z
Sheet1.Range('B8').Value = '90分以上 人占 %';
' r. ]! |+ \8 p' u. E! ?Sheet1.Range('E8').Value = '80---89分 人占 %';6 \4 _/ u" ] U9 R# ^ h. q
Sheet1.Range('B9').Value = '70---79分 人占 %';9 z3 Z8 n7 E+ |' F; @0 u# Q, m
Sheet1.Range('E9').Value = '60---69分 人占 %';$ k a8 g( x4 |; I5 y7 ~" Q
Sheet1.Range('A10').Value = ['试卷分析(含是否符合教学大纲、难度、知识覆'...9 B/ T/ a7 W- P4 [ f7 C4 k
'盖面、班级分数分布分析、学生答题存在的共性问题与知识掌握情况、教学中'...
% L! Z+ `' v6 ^8 S '存在的问题及改进措施等内容)'];
! Z/ |/ n$ h" j, ] ]7 WSheet1.Range('A12').Value = '签字 : 年 月 日';
" |- C8 s9 t9 ?! P v0 s2 nSheet1.Range('A13').Value = '教研室审阅意见:';. ?* U8 T4 q' p2 v) n6 |
Sheet1.Range('A14').Value = '教研室主任(签字): 年 月 日';
" [( }4 u0 i; P; G" [# ~! o- OSheet1.Range('D16').Value = '主管院长签字: 年 月 日';
$ x9 A1 c# E+ g) M" [1 F& Z) B2 A+ w& i# |' }0 E
% 设置字号$ ]1 [8 T7 H$ Y& v4 _9 c; `
Sheet1.Range('A4:H12').Font.size = 10.5; % 设置单元格A4至H12的字号为10.5
# U6 S- x* o/ Q/ s {Sheet1.Range('A1').Font.size = 16; % 设置单元格A1的字号为16
- Q, @% Q* [- E, r- [* PSheet1.Range('A1').Font.bold = 2; % 单元格A1的字体加粗
1 Q; m% f/ `/ s. A6 R% G
; i3 _* c! x! j# i. [% 插入图片,如果当前工作表中有图形存在,通过循环将图形全部删除5 y& \+ R$ L, R
Shapes = Sheet1.Shapes; % 返回第1个工作表的Shapes接口的句柄
; q( J8 ^. ~- d. sif Shapes.Count ~= 0;
C0 q6 v4 Y2 q( V0 y- X for i = 1 : Shapes.Count;
$ V4 @) C5 ?! v0 A9 g Shapes.Item(1).Delete; % 删除第1个Shape对象1 [) W, \6 C6 Z& z8 k, m5 j5 u
end;! t" [; F. g8 P3 C
end;
! F! P1 N; y5 b6 `
5 ]: `$ \1 Q/ d$ Y$ Q% 产生均值为75,标准差为4的正态分布随机数,画直方图,并设置图形属性
/ e9 a4 u4 D1 L0 e6 dzft = figure('units','normalized','position',...0 H* w# X) Q. {/ e2 d' r i
[0.280469 0.553385 0.428906 0.251302],'visible','off'); % 新建图形窗口,设为不可见# H" o0 i7 A7 g/ ?1 @
set(gca,'position',[0.1 0.2 0.85 0.75]); % 设置坐标系的位置和大小2 t. x& Y9 B: L: u2 J4 m2 Y- g
data = normrnd(75,4,1000,1); % 产生均值为75,标准差为4的正态分布随机数
6 M4 Y" Z I, Dhist(data); % 绘制正态分布随机数的频数直方图 _; Y/ v, y- o: B" r; Q: B c4 H6 a4 s
grid on; % 添加参考网格9 O9 D7 s! l. `. ^8 a% m
xlabel('考试成绩'); % 为X轴加标签: }' L/ u* B" Q
ylabel('人数'); % 为Y轴加标签
' g9 s6 ~. ?4 [: xhgexport(zft, '-clipboard'); % 将直方图复制到剪贴板8 Z! I2 r& F/ N" d9 h( _
% 选中工作表Sheet1的A11单元格,插入由MATLAB命令作出的直方图
; U# R5 _7 q/ G, _3 N+ ~$ vSheet1.Range('A11').Select;
. ]3 |* |. k2 D! F. h" ASheet1.Paste % Sheet1.PasteSpecial; U& _* i6 Z: d+ b
" F7 b; o3 x; c7 N2 Y1 W# K" I* `) Qdelete(zft); % 删除图形句柄, p" f8 s$ D. ?6 w
Workbook.Save % 保存文档
6 m- q" t; x2 @5 T8 P$ U |
|