【matlab】生成excel表格,并读写excel内容

 

本段程序的主要功能是:按行或者按列依次循环往表格里写数据。

1 function main()
 2 clc;
 3 close all;
 4 clear;
 5 
 6 year=2017;month=12;
 7 daynum=eomday(year,month);
 8 % date=201712; 
 9 % daynum=cal_day(date);
10 
11 file_test = [pwd '\test_harder.xls'];
12 try
13     Excel = actxGetRunningServer('Excel.Application');
14 catch
15     Excel = actxserver('Excel.Application'); 
16 end;
17 
18 % Excel.Visible = 1;    % set(Excel, 'Visible', 1);
19 
20 if exist(file_test,'file'); 
21     Workbook = Excel.Workbooks.Open(file_test);
22 else
23     Workbook = Excel.Workbooks.Add;
24     Workbook.SaveAs(file_test);
25 end
26 
27 Sheets = Excel.ActiveWorkbook.Sheets;    % Sheets = Workbook.Sheets;
28 Sheet1 = Sheets.Item(1); 
29 Sheet1.Activate;
30 
31 % 第一行,车号,车厢号,日期
32 Sheet1.Range('A1').Value ='车号';
33 Sheet1.Range('B1').Value='车厢号';
34 % xlswrite(file_test,{'车号'},'Sheet1','A1');
35 % xlswrite(file_test,{'车厢号'},'Sheet1','B1');
36 
37 for i=1:daynum
38     a=date2str(year,month,i);
39     if i+2<27
40         Bs=[char(66+i) num2str(1)]
41     else
42         Bs=[char(65) char(40+i) num2str(1)]
43 
44     end
45      Sheet1.Range(Bs).ColumnWidth = 13;
46      Sheet1.Range(Bs).HorizontalAlignment = 3;
47      Sheet1.Range(Bs).Value =a;
48 end
49  
50 %第一列,共18辆车,每辆车8个车厢,即每8个单元格合并成一列车
51 train_total=18;
52 carriage_total=8;
53 
54 
55 for i=1:train_total
56     start_str=['A' num2str((i-1)*8+2)]
57     As=['A' num2str((i-1)*8+2) ':A' num2str(i*8+1)]
58     Sheet1.Range(As).MergeCells = 1;
59     Sheet1.Range(start_str).VerticalAlignment = 2;
60     Sheet1.Range(start_str).HorizontalAlignment = 3;
61     if i<6
62         train_num=num2str(2000+i);
63     else
64         if i<11
65             train_num=num2str(2000+i+5);
66         else 
67             train_num=num2str(2000+i+10);
68         end
69     end
70     Sheet1.Range(start_str).Value =train_num;
71 %     xlswrite(file_test,train_num,'Sheet1',start_str);
72     for j=1:carriage_total
73         Bs=['B' num2str((i-1)*8+1+j)]
74         carriage_num=num2str(j)
75         Sheet1.Range(Bs).Value =carriage_num;
76 %         xlswrite(file_test,carriage_num,'Sheet1',Bs);
77     end
78 end
79 
80 Workbook.Save;
81 
82 
83 function [str_cell_date]=date2str(year,month,day)
84 y=num2str(year);
85 m=num2str(month);
86 d=num2str(day);
87 str_cell_date=strcat(y,'/',m,'/',d);

ps:

1.Sheet1.Range(start_str).Value =train_num;这种格式,仅仅是对某个表格赋值,但是并没有写入到表格中,最后加上‘Workbook.Save;’才能把每个表格的value保存到sheet中。

2. 我最开始试着xlswrite(file_test,carriage_num,'Sheet1',Bs);直接往表格里写内容,但是,经常出现‘The file .xlsx is not writable.  It may be locked by another process.’最终也没有找到原因和解决方法,如果有谁知道,麻烦留言。感觉.Value的赋值语句和xlswrite语句一块用,就会比较容易出错误

3.这段程序最主要的功能是实现了表格的循环,start_str=['A' num2str((i-1)*8+2)]    Bs=[char(66+i) num2str(1)],A,B,C等,可以用char(ASCII码)表示,[ 字母 数据 ]可以用来表示表格的行列号。

 

转载于:https://www.cnblogs.com/hebulingding/p/7985840.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值