当前位置:网站首页>针对大量数据,MATLAB生成EXCEL文件并进行排版处理的源码
针对大量数据,MATLAB生成EXCEL文件并进行排版处理的源码
2022-07-28 05:23:00 【沱江一苇】
#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);
在这里插入代码片
边栏推荐
- Common CTF encryption methods JS
- 五、视频处理与GStreamer
- How to improve the efficiency of small program development?
- What are the points for attention in the development and design of high-end atmospheric applets?
- Reinforcement learning - Multi-Agent Reinforcement Learning
- 端接电阻详解 信号完整系列 硬件学习笔记7
- D2SC-GAN:基于双深浅通道生成对抗网络的课堂场景低分辨率人脸识别
- Research on threat analysis and defense methods of deep learning data theft attack in data sandbox mode
- 压敏电阻设计参数及经典电路记录 硬件学习笔记5
- What is the detail of the applet development process?
猜你喜欢

5、 Video processing and GStreamer

Overview of unconstrained low resolution face recognition I: data sets for low resolution face recognition

File upload vulnerability summary

硬件电路设计学习笔记2--降压电源电路

ESXi 社区版网卡驱动

Getting started with latex

浪涌冲击抗扰度实验(SURGE)-EMC系列 硬件设计笔记6

用于快速低分辨率人脸识别模型训练的改进知识蒸馏《Improved Knowledge Distillation for Training Fast LR_FR》

利用辅助未标记数据增强无约束人脸识别《Boosting Unconstrained Face Recognition with Auxiliary Unlabeled Data》

51单片机独立按键联动数码管LED蜂鸣器
随机推荐
一、语音合成与自回归模型
用颜色区分PCB品质本身就是一个笑话
File upload vulnerability summary
The difference and relation between TCP and UDP
ESXi on ARM v1.2 (2020年11月更新)
Building neural network based on tensorflow
深度学习(增量学习)——(ICCV)Striking a Balance between Stability and Plasticity for Class-Incremental Learning
Byte Android post 4 rounds of interviews, received 50k*18 offers, and successfully broke the situation under the layoff
电快速脉冲群(EFT)设计-EMC系列 硬件设计笔记4
二、OpenVINO简述与构建流程
USB Network Native Driver for ESXi更新到支持ESXi7.0 Update 2
VB-ocx应用于Web
5、 Video processing and GStreamer
无约束低分辨率人脸识别综述三:同质低分辨率人脸识别方法
Tensorflow2.1 basic concepts and common functions
Deep learning (II) into machine learning and deep learning programming
How much is wechat applet development cost and production cost?
Tornado first met
Using neural network to predict the weather
Geek challenge 2019-sql injection five questions PW