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')表示:
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属性表示:顶部对齐
这两个对齐方式等于的那个值是枚举值,具体可以参考微软官网
https://docs.microsoft.com/zh-cn/office/vba/api/overview/excel/enumerations-graph-visual-basic-reference
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 = '邮政编码';