导出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文件的导出 打印表格 经过技术选型,项目组一致决定通过 ...
随机推荐
- jquery-drawsvg — HTML5轻量级插件
在html5中,有许多插件,今天小编就为大家分享众多插件中的jquery-drawsvg插件. jquery-drawsvg是什么插件呢?其实,jquery-drawsvg是一款轻量级的使用jQuer ...
- 几种web数据渲染模板对比
在web开发,实现视图.数据的分离,由前端工程师专门负责编写html页面,有php后台工程师写php接口返回json数字,那么中间如何将json数据绑定到html页面上有几种方法呢.基于这种需求大体上 ...
- Bitbucket Repository size limits
Repository size limits By Justen Stepka, Product Manager on May 30, 2014 In order to improve and mai ...
- [GO编程]GO编程环境
GO是一个开源项目,由Google大神发明的,他主要是用于应用程序级开放,可以编译成机器码,和C++一样不需要.NET或JAVA那样的运行框架,因此是个不错的编程语言.更何况发明者都是高手中的高手,而 ...
- Android——程序移植 相关知识总结贴
android 移植笔记有感 http://www.apkbus.com/android-11842-1-1.html Android振动器系统结构和移植和调试 http://www.apkbus ...
- 一个简单的JavaScript Map
用js写了一个Map,带遍历功能,请大家点评下啦. //map.js Array.prototype.remove = function(s) { for (var i = 0; i < thi ...
- <后会无期>经典影评
先说明是转载,任何不同意见请对原作者表达,楼主不作任何回应,楼主影商极低,楼主觉得这二十几年来看的最好的电影是<一代宗师>,楼主只是觉得这篇影评精彩才发布上来让更多的人看到.原作者意见和楼 ...
- js实现hash
由于项目中用到了hash,自己实现了一个. Hash = function () { } Hash.prototype = { constructor: Hash, add: function (k, ...
- dolby逝世:纪念一下
杜比公司的成立快50年了(1965),想想中国1965年在干啥.中国怎么可能有. 小科普一下,dolby的成功有3个时间点和技术,第一次是在英国开发了dolby B降噪技术,是用在早期的卡带降噪 ...
- MyEclipse中拷贝J2EE项目,发布到tomcat中名字一样的解决办法
修改Eclipse工作空间下新拷贝项目下.settings文件夹中org.eclipse.wst.common.component的两个属性值. 为新项目名字: <?xml version=&q ...