找回密码
 注册
关于网站域名变更的通知
查看: 531|回复: 3
打印 上一主题 下一主题

利用MATLAB生成Excel文档

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2020-12-18 13:57 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

该用户从未签到

2#
发表于 2020-12-18 14:35 | 只看该作者
看看楼主分享的代码。

该用户从未签到

3#
发表于 2020-12-18 16:12 | 只看该作者
学习了 谢谢
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-11-24 09:04 , Processed in 0.156250 second(s), 24 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表