1. 创建一个本地的Excel服务端,其实就是打开Excel
try
Excel = actxGetRunningServer('Excel.Application');
catch
Excel = actxserver('Excel.Application');
end
表达意思如下
try
如果Excel 服务器已经打开,返回其句柄
catch
如果Excel服务器没有打开,则创建一个Excel服务器,并返回句柄
end
2. 让打开的Excel可见
默认情况下启动服务器是不可见的,Excel.Visible为1时可见,为0时候不可见。
Excel.Visible = 1;%设置为看见或者set(Excel, 'Visible', 1);
Excel.Visible = 0;%设置为看不见或者set(Excel, 'Visible', 0);
经过1-2两步后效果如下图1
图1
3. 创建一个工作簿
也就是创建一个空白的Excel文件效果如下图2
WorkBook = Excel.Workbooks.Add;% 创建一个工作簿
图2
4. 创建一个表单
WorkBook = Excel.Workbooks.Add;% 添加一个工作簿
Sheet1 = WorkBook.Sheets.Item(1);%表单句柄
表单创建好后需要激活,还需要给表单起个名
Sheet1.Activate;%激活
Sheet1.Name = '我是第一个表单';%起名字
效果图如下图3
图3
5.页面设置
Sheet1.PageSetup.TopMargin = 60; % 上边距40磅
Sheet1.PageSetup.BottomMargin = 45; % 下边距40磅
Sheet1.PageSetup.LeftMargin = 45; % 左边距40磅
Sheet1.PageSetup.RightMargin = 45; % 右边距40磅
PageSetup属性:
- TopMargin 上边距
- BottomMargin 下边距
- LeftMargin 左边距
- RightMargin 右边距
PageSetup属性设置参考https://docs.microsoft.com/zh-cn/office/vba/api/excel.pagesetup
6. 设置行高列宽
RowHeight = [25,25,25,25]';
Sheet1.Range('A1:A4').RowHeight = RowHeight;
Sheet1.Range('A1:H1').ColumnWidth = [10,8,8,8,8,8,8,8,20];
属性设置
- RowHeight属性表示:行高
- ColumnWidth属性表示:列宽
- Range:设置表格范围。详解如下
Range('A1:A16')表示:
Range('A1:B6')表示:
7.单元格子合并
MergeCells属性表示:合并单元格
Sheet1.Range('A1:H1').MergeCells = 1;
Sheet1.Range('A2:H2').MergeCells = 1;
Sheet1.Range('A8:A9').MergeCells = 1;
Sheet1.Range('B8:D8').MergeCells = 1;
Sheet1.Range('E8:H8').MergeCells = 1;
Sheet1.Range('B9:D9').MergeCells = 1;
Sheet1.Range('E9:H9').MergeCells = 1;
Sheet1.Range('A10:H10').MergeCells = 1;
Sheet1.Range('A11:H11').MergeCells = 1;
Sheet1.Range('A12:H12').MergeCells = 1;
Sheet1.Range('A13:H13').MergeCells = 1;
Sheet1.Range('A14:H14').MergeCells = 1;
Sheet1.Range('D16:H16').MergeCells = 1;
MergeCells详解见https://docs.microsoft.com/zh-cn/office/vba/api/excel.range.mergecells
8.设置单元格的边框
Sheet1.Range('A4:H14').Borders.Weight = 3;
Sheet1.Range('A10:H12').Borders.Item(3).Linestyle = 0;
Sheet1.Range('A10:H12').Borders.Item(4).Linestyle = 0;
Sheet1.Range('A13:H13').Borders.Item(4).Linestyle = 0;
Sheet1.Range('A14:H14').Borders.Item(3).Linestyle = 0;
Borders边框属性:
- Weight:宽度
- Linestyle:添加双边框
Borders属性详解见:https://docs.microsoft.com/zh-CN/office/vba/api/excel.borders
9.设置单元格对齐方式
Sheet.Range('A1:C3').HorizontalAlignment = -4108; % 水平居中
Sheet.Range('A1:C3').VerticalAlignment = -4160; % 顶部对齐
- HorizontalAlignment属性表示:水平居中
- VerticalAlignment属性表示:顶部对齐
这两个对齐方式等于的那个值是枚举值,具体可以参考微软官网
10. 写入单元格内容(Value)
Sheet1.Range(范围).Value = '插入的信息';
11.设置字号样式
Sheet1.Range('A4:H12').Font.size = 10.5; % 设置单元格A4至H12的字号为10.5
Sheet1.Range('A1').Font.size = 16; % 设置单元格A1的字号为16
Sheet1.Range('A1').Font.bold = 2; % 单元格A1的字体加粗
Sheet.Range('A1:C3').Font.Name = '华文行楷'
Font属性详细见:https://docs.microsoft.com/zh-CN/office/vba/api/excel.font(object)
12. 保存WorkBook和退出Excel服务端
WorkBook.SaveAs([pwd, '\我的第一个excel']);%pwd表示路径,保存“我的第一个excel”
Excel.Quit%退出
clear
clc
file_path=[pwd,'\test.xlsx']%设置当前路径
try
Excel=actxGetRunningServer('Excel.Application')%如果Excel 服务器已经打开,返回其句柄
catch
Excel=actxserver('Excel.Application')%如果Excel服务器没有打开,则创建一个Excel服务器,并返回句柄
end
Excel.Visible = 1; ;%设置Excel服务器为可见状态
%如果存在test.xlsx文件,则打开文件,若不存在则创建一个,然后保存
if exist(file_path,'file')
Workbook=Excel.Workbooks.Open(file_path)%打开
else
Workbook=Excel.Workbooks.Add%创建
Workbook.SaveAs(file_path)%保存
end
% 返回当前工作表句柄
Sheets = Excel.ActiveWorkbook.Sheets;
Sheet1 = Sheets.Item(1); % 返回第1个表格句柄
Sheet1.Activate; % 激活第1个表格
% 页面设置
Sheet1.PageSetup.TopMargin = 60; % 上边距40磅
Sheet1.PageSetup.BottomMargin = 45; % 下边距40磅
Sheet1.PageSetup.LeftMargin = 45; % 左边距40磅
Sheet1.PageSetup.RightMargin = 45; % 右边距40磅
% 设置行高和列宽
% 定义行高向量RowHeight
RowHeight = [25,25,25,25]';
% 设置Range对象(从A1到A16)的行高
Sheet1.Range('A1:A4').RowHeight = RowHeight;
% 设置Range对象(从A1到H1)的列宽
Sheet1.Range('A1:H1').ColumnWidth = [10,8,8,8,8,8,8,8,20];
% 合并单元格
Sheet1.Range('A1:A4').MergeCells = 1;
Sheet1.Range('B1:C1').MergeCells = 1;
Sheet1.Range('B2:C2').MergeCells = 1;
Sheet1.Range('B3:C3').MergeCells = 1;
Sheet1.Range('B4:C4').MergeCells = 1;
Sheet1.Range('A8:A9').MergeCells = 1;
Sheet1.Range('D3:E3').MergeCells = 1;
Sheet1.Range('E8:H8').MergeCells = 1;
Sheet1.Range('D4:E4').MergeCells = 1;
Sheet1.Range('G4:H4').MergeCells = 1;
Sheet1.Range('I1:I4').MergeCells = 1;
% 设置单元格的边框
Sheet1.Range('A1:I4').Borders.Weight = 3;
% 写入单元格内容
Sheet1.Range('A1:A4').Value = '毕业生信息';
Sheet1.Range('B1:C1').Value = ' 姓 名 ';
Sheet1.Range('A2:C2').Value = '政治面貌';
Sheet1.Range('A3:C3').Value = '通讯地址';
Sheet1.Range('A4:C4').Value = 'E-mail';
Sheet1.Range('E1').Value = '性别';
Sheet1.Range('E2').Value = '健康状况';
Sheet1.Range('F4').Value = '现居住地址';
Sheet1.Range('G1').Value = '出生年月';
Sheet1.Range('G2').Value = '联系电话';
Sheet1.Range('G3').Value = '邮政编码';