针对大量数据,MATLAB生成EXCEL文件并进行排版处理的源码 您所在的位置:网站首页 excel表如何拆分单元格数据格式和格式 针对大量数据,MATLAB生成EXCEL文件并进行排版处理的源码

针对大量数据,MATLAB生成EXCEL文件并进行排版处理的源码

2024-07-02 15:13| 来源: 网络整理| 查看: 265

#MATLAB生成EXCEL文件并进行排版处理的源码

项目要求:给定某海洋站潮位数据在一年之年的每分钟潮位数据(一共有24×60×365=525600个数),txt格式,要求制作出海洋站该年份的潮汐表 实现方案:MATLAB对该txt文件进行处理,生成excel工作簿,每一张工作表为潮位 一 天之内的数据,一共365张工作表。每张表即24*60=1440个数据,横坐标为分钟,纵坐标为小时,还要包括有经纬度、日期、所在时区等信息 程序实现功能: 1、matlab生成excel表格 actxserver(‘excel.application’) 2、matlab设置excel单元格的列高、行宽、横向对齐方式、垂直对齐方式、单元格字体大小、是否加粗等操作,见程序 单元格参数设置部分 3、matlab实现对excel表格的合并单元格、统一单元格的数值显示位数(0000格式) 等操作 见程序,NumberFormatLocal=‘0000’ 4、实现当前天数到日期转换 例如第35天→2019/02/04,见程序,datestr() 5、数字到字符的转变 见程序,num2str()、cellstr() [email protected]

%%用A4纸张打印出来 clc clear A=load ('某某港原始数据.txt'); %调整下潮汐表每分钟数据格式 A_1=A(:,5:64); A_2=zeros(17520,30); for i=1:8670 A_2(2*i-1,:)=A_1(i,1:30); A_2(2*i,:)=A_1(i,31:60); end AT=load ('某某港高低潮数据.txt'); AT_1=AT(:,26:33); chaote=cell(365,8); for jj=1:365 for kk=1:4 chaote{jj,2*kk-1}=num2str(AT_1(jj,2*kk-1),'%04d'); chaote{jj,2*kk}=num2str(AT_1(jj,2*kk)); end end zongriqi=365; %表中与表头部分,写入表的实际值和表头的横坐标 fenzhong=cell(1,30); for j=0:29 fen1=num2str(j);fen2=num2str((j+30)); fen=strcat(fen1,'\',fen2); fenzhong{1,j+1}=fen; end for i=1:zongriqi %每一天做为一页,写入表中实际数据和表横坐标“分钟” B=A_2(48*(i-1)+1:48*i,1:30); data=num2str(i); Sheet=strcat('Sheet',data); xlswrite('潮汐表.xlsx',B,Sheet,'C10:AF57'); %写入实际数据 xlswrite('潮汐表.xlsx',fenzhong,Sheet,'C9:AF9'); %写入表的横坐标 end file_path=[pwd,'\潮汐表.xlsx']; %设置当前路径 hExcel=actxserver('excel.application'); %创建一个EXCEL服务器,并返回句柄 set(hExcel,'Visible',1); %设置Excel服务器为可见状态 hWorkbooks=hExcel.Workbooks.Open(file_path); %打开文件 hSheets=hExcel.ActiveWorkBook.Sheets; %返回当前工作表句柄 for k=1:zongriqi %每一天做为一页,写入表中数据 hSheetk=hSheets.Item(k); %返回第k个表格句柄 hSheetk.Activate; %激活该表格 hSheetk.Range('C1:AF58').ColumnWidth=4; %设置Range对象的列宽 hSheetk.Range('C1:AF58').RowHeight=25; %设置Range对象的行高 hSheetk.Range('C1:AF58').Font.name='宋体'; %设置单元格字体大小 hSheetk.Range('C1:AF58').Font.size=14; %设置单元格字体大小 hSheetk.Range('C1:AF58').HorizontalAlignment=3; %设置单元格对齐方式横向居中 hSheetk.Range('C1:AF58').VerticalAlignment=2; %设置单元格对齐方式竖直方向居中 %hSheetk.Range('C1:AF49').Font.bold=2; %设置单元格字体格式为加粗 hSheetk.Range('C9:AF9').Font.size=9; %设置单元格字体大小 %表头部分,包括“某某港(中文、英语,居中)” hSheetk.Range('A1:AF2').MergeCells=1; %合并单元格 hSheetk.Range('A1:AF2').Value='某某港'; %写入单元格内容 hSheetk.Range('A3:AF3').MergeCells=1; %合并单元格 hSheetk.Range('A3:AF3').Value='XX_PORT'; %写入单元格内容 hSheetk.Range('A1:AF2').Font.name='宋体'; %设置单元格字体大小 hSheetk.Range('A1:AF2').Font.size=36; %设置单元格字体大小 hSheetk.Range('A3:AF3').Font.size=18; %设置单元格字体大小 hSheetk.Range('A1:AF3').HorizontalAlignment=3; %设置单元格对齐方式,居中 hSheetk.Range('A1:AF3').VerticalAlignment=2; %设置单元格对齐方式,居中 %表头部分,包括“2019年1月潮汐表 经纬度xx′S,xxE” 1日 hSheetk.Range('A4:D4').MergeCells=1; %合并单元格 Num=datenum('1-January-2019'); num=Num+k-1; date_str=datestr(num,'yyyy/mm/dd'); hSheetk.Range('A4:D4').MergeCells=1; %合并单元格 hSheetk.Range('A4:D4').Value=date_str; %写入当前日期 hSheetk.Range('M4:R4').MergeCells=1; %合并单元格 hSheetk.Range('M4:R4').Value=xxS,xx′E'; %写入当前经纬度 hSheetk.Range('A4:D4').Font.name='宋体'; %设置单元格字体大小 hSheetk.Range('A4:D4').Font.size=22; %设置单元格字体大小 hSheetk.Range('A4:D4').HorizontalAlignment=3; %设置单元格对齐方式,居中 hSheetk.Range('A4:D4').VerticalAlignment=2; %设置单元格对齐方式,居中 %表头部分,写入表的纵坐标,小时 for s=1:24 shi1=num2str((2*s+8));shi2=num2str((2*s+9));shi3=num2str((s-1)); shi=strcat('B',shi1,':','B',shi2); hSheetk.Range(shi).MergeCells=1; %合并单元格 hSheetk.Range(shi).Value=shi3; %写入单元格内容 end hSheetk.Range('B10:B57').Font.name='宋体'; %设置单元格字体大小 hSheetk.Range('B10:B57').Font.size=22; %设置单元格字体大小 hSheetk.Range('B10:B57').Font.bold=2; %设置单元格字体格式为加粗 hSheetk.Range('B10:B57').HorizontalAlignment=3; %设置单元格对齐方式 hSheetk.Range('B10:B57').VerticalAlignment=2; %设置单元格对齐方式 %表头部分,写入表的横纵坐标意义,小时\分钟 hSheetk.Range('B8:B9').MergeCells=1; %合并单元格 hSheetk.Range('B8:B9').Value='H\M'; %写入单元格内容 hSheetk.Range('B8:B9').Font.name='宋体'; %设置单元格字体大小 hSheetk.Range('B8:B9').Font.size=16; %设置单元格字体大小 hSheetk.Range('B8:B9').Font.bold=2; %设置单元格字体格式为加粗 hSheetk.Range('B8:B9').HorizontalAlignment=3; %设置单元格对齐方式 hSheetk.Range('B8:B9').VerticalAlignment=2; %设置单元格对齐方式 %表头部分,写入表的横纵坐标含义,上排0:29各分钟,下排30:59各分钟 hSheetk.Range('C8:AF8').Value=0:1:29; %写入单元格内容 hSheetk.Range('C9:AF9').Value=30:1:59; %写入单元格内容 hSheetk.Range('C8:AF9').Font.name='宋体'; %设置单元格字体大小 hSheetk.Range('C8:AF9').Font.size=14; %设置单元格字体大小 hSheetk.Range('C8:AF9').Font.bold=2; %设置单元格字体格式为加粗 hSheetk.Range('C8:AF9').HorizontalAlignment=3; %设置单元格对齐方式 hSheetk.Range('C8:AF9').VerticalAlignment=2; %设置单元格对齐方式 %表头表尾部分,将表的最顶端的上边框与最底端的下边框加粗 hSheetk.Range('B8:AF8').Borders.Item(3).Weight=4; %设定表格的上边框为线段加粗 hSheetk.Range('B57:AF57').Borders.Item(4).Weight=4; %设定表格的下边框为线段加粗 %表尾部分,写入时区与潮高基准面 hSheetk.Range('B58:G58').MergeCells=1; %合并单元格 hSheetk.Range('B58:G58').Value='Time Zone: -1100'; %写入单元格内容 hSheetk.Range('S58:AF58').MergeCells=1; %合并单元格 hSheetk.Range('S58:AF58').Value='Tidal high datum: 83cm below average sea level'; %写入单元格内容 hSheetk.Range('B58:AF58').Font.name='宋体'; %设置单元格字体大小 hSheetk.Range('B58:AF58').Font.size=14; %设置单元格字体大小 hSheetk.Range('B58:AF58').Font.bold=2; %设置单元格字体格式为加粗 hSheetk.Range('B58:AF58').RowHeight=35; %设置单元格的行高 hSheetk.Range('B58:AF58').HorizontalAlignment=3; %设置单元格对齐方式 hSheetk.Range('B58:AF58').VerticalAlignment=2; %设置单元格对齐方式 %表头部分,写入潮汐表每天的最高潮与对应潮时 hSheetk.Range('D6:H6').MergeCells=1; %合并单元格 hSheetk.Range('D6:H6').Value='Tide time(h:m)'; %写入单元格内容,潮时表头 hSheetk.Range('D7:H7').MergeCells=1; %合并单元格 hSheetk.Range('D7:H7').Value='Tide height(cm)'; %写入单元格内容,潮高表头 hSheetk.Range('D6:H7').HorizontalAlignment=2; %设置单元格对齐方式为左对齐 hSheetk.Range('J6:AF7').HorizontalAlignment=4; %设置单元格对齐方式为右对齐 %将单元格合并,设定为右对齐,统一为4位数,并写入单元格内容,4个潮高对应的时间, hSheetk.Range('J6:K6').MergeCells=1;hSheetk.Range('M6:N6').MergeCells=1;hSheetk.Range('P6:Q6').MergeCells=1; hSheetk.Range('S6:T6').MergeCells=1; hSheetk.Range('J6:K6').NumberFormatLocal='0000';hSheetk.Range('M6:N6').NumberFormatLocal='0000';%格式统一为4位数 hSheetk.Range('P6:Q6').NumberFormatLocal='0000';hSheetk.Range('S6:T6').NumberFormatLocal='0000';%格式统一为4位数 hSheetk.Range('J6:K6').Value=cellstr(chaote{k,1});hSheetk.Range('M6:N6').Value=num2str(chaote{k,3},'%04d'); %写入潮时 hSheetk.Range('P6:Q6').Value=num2str(chaote{k,5},'%04d');hSheetk.Range('S6:T6').Value=num2str(chaote{k,7},'%04d'); %写入潮时 %将单元格合并,设定为右对齐,并写入单元格内容,4个潮高 hSheetk.Range('J7:K7').MergeCells=1;hSheetk.Range('M7:N7').MergeCells=1;hSheetk.Range('P7:Q7').MergeCells=1; hSheetk.Range('S7:T7').MergeCells=1; hSheetk.Range('J7:K7').Value=num2str(chaote{k,2});hSheetk.Range('M7:N7').Value=num2str(chaote{k,4});%写入潮高 hSheetk.Range('P7:Q7').Value=num2str(chaote{k,6});hSheetk.Range('S7:T7').Value=num2str(chaote{k,8});%写入潮高 hSheetk.Range('D6:AF7').Font.name='宋体'; %设置单元格字体大小 hSheetk.Range('D6:H7').Font.size=14; %设置单元格字体大小,表头大小 hSheetk.Range('D6:H7').Font.bold=2; %设置单元格字体格式为加粗,对表头进行加粗 hSheetk.Range('J6:AF7').Font.size=20; %设置单元格字体大小,潮高和潮时大小 end Quit(hExcel); delete(hExcel); 在这里插入代码片


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有