导出excel和PDF小结 vba
最近接触了一个关于Access工具的项目,所以整理下需要使用的方法。
功能要求简介:
1.将数据表中的数据导出到excel和PDF
2.并根据某个字段名称分sheet输出。
3.无模板方式
方案简介:
1.设置头部的标题内容和打印区域的单元格格式,标题内容的格式再单独调整(比起一个个单元格调整,可以提高效率)
2.copy设置好的单元格,一次性生成多个sheet.(开始创建sheet会有点时间开销,但后面会快一点。总体上来说效率提高了)
3.然后就是每个sheet的数据处理了
需要用到的函数:
不会写的函数,可以使用宏录制,然后查看录制的代码
1.打印设置
With objCurSheet.PageSetup 'objCurSheet 当前sheet名称
.PaperSize = xlPaperA3 '打印纸大小:A3
.Orientation = xlLandscape '打印方向:横向
.PrintTitleRows = "$1:$7" '设置第一行至第七行为标题
.PrintTitleColumns = "A:O" '设置A到O列为标题列
.PrintArea = "$A:$O" '设置打印区域A到O列
.BottomMargin = '页边距
.TopMargin = '页边距
End With
2.设置单元格为文本格式
objCurSheet.Range("A:O").NumberFormatLocal = "@" '设置A到O列为文本格式
3.设置单元格宽度
objCurSheet.Columns("A").ColumnWidth =
4.接下来就不继续列举单元格操作,大家自己录制宏看吧。我说一下宏录制的问题吧。
宏录制时,Range等属性前是不加表名的,并且会添加选中的操作,需要修改
比如:
Range("B9").Select
With Selection
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlBottom
.WrapText = False
.Orientation =
.AddIndent = False
.IndentLevel =
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False
End With
其实上面的代码应该改为如下(1.加上表对象,跟excel进程正常退出是有关系的。2.减少对象的选择,可以提高效率):
With objCurSheet.Range("B9")
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlBottom
.WrapText = False
.Orientation =
.AddIndent = False
.IndentLevel =
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False
End With
5.链接当前数据库表,查询方式如下:
Dim ExcelAp As New Excel.Application
Dim ExcelBk As New Excel.workBook
Set ExcelBk = ExcelAp.Workbooks.Add
Dim ExcelSh As New Excel.Worksheet
Dim Obj_DataBase As DAO.Database
Dim Obj_Recordset As DAO.Recordset Set Obj_DataBase = CurrentDb()
Application.SysCmd acSysCmdSetStatus, "Exporting" '设置Acess左下角的状态提示 Set Obj_Recordset = Obj_DataBase.OpenRecordset("tablename") Do While Not Obj_Recordset.EOF
'数据处理 Obj_Recordset.MoveNext
Loop
6.导出excel和PDF,并打开excel
If OutType = Then
extension = ".xls"
Else
extension = ".pdf"
End If
'Open the window to select the target folder
Dim result As String
'弹出选择路径的窗口 start
With Application.FileDialog(msoFileDialogSaveAs)
.Title = "Please select the target folder"
.InitialFileName = "文件名" & extension
If .Show = - Then
result = .SelectedItems() ’获取存储路径
Else
'退出进程并释放资源
ExcelBk.Close Savechanges:=False
ExcelAp.Quit
Set ExcelBk = Nothing
Set ExcelAp = Nothing
Set ExcelSh = Nothing
Set Obj_DataBase = Nothing
Set Obj_Recordset = Nothing
Application.SysCmd acSysCmdSetStatus, "Exporting canceled"
Exit Function
End If
End With
'弹出选择路径的窗口 end
If OutType = Then
'保存文件
ExcelBk.SaveAs FileName:=result
ExcelBk.Close If InStr(, result, ".xls") = Then
result = result & ".xls"
End If '打开excel文件
ExcelAp.Visible = True
ExcelAp.Workbooks.Open FileName:=result
Else
'导出 PDF
ExcelBk.ExportAsFixedFormat _
Type:=xlTypePDF, _
FileName:=result, _
Quality:=xlQualityStandard, _
IncludeDocProperties:=True, _
IgnorePrintAreas:=True, _
OpenAfterPublish:=True
ExcelBk.Close Savechanges:=False
ExcelAp.Quit
End If
Set ExcelBk = Nothing
Set ExcelAp = Nothing
Set ExcelSh = Nothing
Set Obj_DataBase = Nothing
Set Obj_Recordset = Nothing
导出excel和PDF小结 vba的更多相关文章
- java导入导出excel常用操作小结及简单示例
POI中常用设置EXCEL的操作小结: 操作excel如下 HSSFWorkbook wb = new HSSFWorkbook(); //创建一个webbook,对应一个Excel文件 HSSFS ...
- Ionic2+WebApi 导出Excel转Pdf文件。
步骤: 1.首先在WebApi中先把excel生成好. 2.把excel转成Pdf,并返回下载的链接. 3.Ionic2的页面做好下载的接口. 嗯~思路很清晰,那么下面就来详细的操作吧. 以下是H5的 ...
- jquery插件导出excel和pdf(解决中文乱码问题)
参考文件:http://jackyrong.iteye.com/blog/2169683 https://my.oschina.net/aruan/blog/418980 https://segmen ...
- java使用poi导出excel
继上一篇导出pdf,这篇导出excel. 1.导入依赖 <dependency> <groupId>org.apache.poi</groupId> <art ...
- java操作office和pdf文件页面列表导出cvs,excel、pdf报表.
在平常的开发中我们常常遇到不仅仅只是导出excel报表的情况.有时候也需要导出pdf或者CSV报 表.其实原理都差不多.刚开始本来不打算也这篇博客介绍这个的.感觉这篇博客和前面的博客有点雷同.原理基本 ...
- RDLC - 后台代码直接导出Excel/PDF/Word格式
最近做报表功能,用到了.net的报表组件rdlc. 其中有个功能就是后台代码直接输出Excel/PDF/Word格式的文件,网上看了些资源,做个总结: 参考地址 我直接贴出代码: //自动导出exce ...
- 使用Apache POI导出Excel小结--导出XLS格式文档
使用Apache POI导出Excel小结 关于使用Apache POI导出Excel我大概会分三篇文章去写 使用Apache POI导出Excel小结--导出XLS格式文档 使用Apache POI ...
- 文件导出Excel、Word、Pdf
如果要将查询结果导出Excel,只要将页面的Context-Type修改下: header( "Content-Type: application/vnd.ms-excel"> ...
- Vue框架下实现导入导出Excel、导出PDF
项目需求:开发一套基于Vue框架的工程档案管理系统,用于工程项目资料的填写.编辑和归档,经调研需支持如下功能: Excel报表的导入.导出 PDF文件的导出 打印表格 经过技术选型,项目组一致决定通过 ...
随机推荐
- RTMP协议
Real Time Messaging Protocol(实时消息传送协议协议)概述 实时消息传送协议是Adobe Systems公司为Flash播放器和服务器之间音频.视频和数据传输开发的私有协 ...
- 详解Bootstrap网格系统
bootstrap框架中的网格系统就是将容器平分成12份,在使用的时候可以根据实际情况重新编译LESS/SASS源码来修改12这个数值.bootstrap框架的网格系统工作原理: 1.数据行(.row ...
- VC多线程的用法
.h 文件 #define WM_TEST WM_USER + 1 class CTestThread : public CWinThread { DECLARE_DYNCREATE(CTest ...
- Vue.js:轻量高效的前端组件化方案(转载)
摘要:Vue.js通过简洁的API提供高效的数据绑定和灵活的组件系统.在前端纷繁复杂的生态中,Vue.js有幸受到一定程度的关注,目前在GitHub上已经有5000+的star.本文将从各方面对Vue ...
- Objective-C 高性能的循环
Cocoa编程的一个通常的任务是要去循环遍历一个对象的集合 (例如,一个 NSArray, NSSet 或者是 NSDictionary). 这个看似简单的问题有广泛数量的解决方案,它们中的许多不乏 ...
- 扩展easyui 的表单验证
easyui 的validatebox()提供了自定义验证的方法,为此我把一些常用的数据验证汇总了一下,代码如下: 代码 $.extend($.fn.validatebox.defaults.rule ...
- Radio Basics for RFID
Radio Basics for RFID The following is excerpted from Chapter 3: Radio Basics for UHF RFID from the ...
- Chkdsk scan needed on volume
After we extended the volume in storage array, in Failover cluster, it shows the volume is of 30.0 T ...
- C# 中 KeyPress 、KeyDown 和KeyPress的详细区别[转]
研究了一下KeyDown,KeyPress 和KeyUp ,发现之间还是有点学问的. 让我们带着如下问题来说明,如果你看到这些问题你都知道,那么这篇文章你就当复习吧:) 1.这三个事件的顺序是怎么样的 ...
- 关于MYSQL中like 检索汉字问题。
mysql中like’中国‘查询不出来结果 如果 like‘zg’就看查询出来结果. 查询了半天是由于mysql中编码的原因 解决办法: 进入mysql 输入命令:show variables lik ...