Access导出到excel遇到的问题

fffanpei 2013-04-17 09:53:55
DoCmd.OutputTo acOutputStoredProcedure, spStatement, acFormatXLS, file & ".xls"

写了一个存储过程
将存储过程的结果存到excel文件里面

可以执行成功并且生成文件

但不知道为什么打开会报错。
图在2楼
...全文
393 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
fffanpei 2013-04-17
  • 打赏
  • 举报
回复
OutputTo输出excel可以重命名sheet name吗
ACMAIN_CHM 2013-04-17
  • 打赏
  • 举报
回复
从问题描述来看,ACCESS端没有什么问题,文件已经产生并且记录已经导出了. 看一二楼那个 xx .xml 的文件内容,贴出以供分析。 应该产生的EXCEL文件中的工作表问有问题。
WWWWA 2013-04-17
  • 打赏
  • 举报
回复
你确实没有表达清楚,将SP的结果保存为SQLSERVER表,假设使用SQLSERVER2000 SELECT * INTO [EXCEL 8.0;DATABASE=R:\TEMP\123.XLS].[SHEET1] FROM [ODBC;Driver=SQL Server;UID=sa;PWD=123;Server=tmp;DataBase=tmp];
fffanpei 2013-04-17
  • 打赏
  • 举报
回复
我使用access开发的 连接的sql server数据库 可能是我没有表达清楚 这主要是客户要求的 调用的是sql server的存储过程
wwwwb 2013-04-17
  • 打赏
  • 举报
回复
ACCESS没有SP,将结果保存到表中, OR SELECT * INTO [EXCEL 8.0;DATABASE=R:\TEMP\123.XLS].[SHEET1] FROM ACCESS表
fffanpei 2013-04-17
  • 打赏
  • 举报
回复
我还是不太明白 您的意思 要我2个都执行吗 我看DoCmd.TransferSpreadsheet 没有关联存储过程的东西啊 我现在需求是将存储过程查询的结果存储到excel里面
wwwwb 2013-04-17
  • 打赏
  • 举报
回复
TransferSpreadsheet 方法 在 Visual Basic 中,TransferSpreadsheet 方法执行 TransferSpreadsheet 操作。有关该操作及其参数如何使用的详细内容,请参阅该操作主题。 语法 DoCmd.TransferSpreadsheet [transfertype][, spreadsheettype], tablename, filename[, hasfieldnames][, range] TransferSpreadsheet 方法具有以下参数: 参数 说明 transfertype 下列固有常量之一: acImport(默认值) acExport acLink 如果该参数空缺,将假设为默认常量 (acImport)。 spreadsheettype 下列固有常量或与之相等的数值设置之一: 0 acSpreadsheetTypeExcel3(默认值) 6 acSpreadsheetTypeExcel4 5 acSpreadsheetTypeExcel5 5 acSpreadsheetTypeExcel7 8 acSpreadsheetTypeExcel8 8 acSpreadsheetTypeExcel9 2 acSpreadsheetTypeLotusWK1 3 acSpreadsheetTypeLotusWK3 7 acSpreadsheetTypeLotusWK4 4 acSpreadsheetTypeLotusWJ2 — 仅日文版 注意 可以链接 Lotus 1-2-3 电子表格文件中的数据,但是这些数据在 Microsoft Access 中是只读的。也可以导入和链接 Lotus .WK4 文件,但是不能将 Microsoft Access 的数据导出为这种电子表格格式。使用该方法,Microsoft Access 也不支持从 Lotus .WKS 或 Microsoft Excel 2.0 版电子表格导入、导出或链接数据。 如果该参数空缺,将假设为默认常量 (acSpreadsheetTypeExcel8)。 tablename 字符串表达式,代表要向其中导入电子表格数据、从中导出电子表格数据或链接电子表格数据的 Microsoft Access 表的名称,或要将其结果导出到电子表格的 Microsoft Access 选择查询的名称。 filename 字符串表达式,包含要从其中导入、导出到或链接到的电子表格的名称与路径。 hasfieldnames 如果该参数为 True (-1),在导入或链接时,使用电子表格中的第一行作为字段名。如果该参数为 False (0),则将电子表格中的第一行处理成普通数据。如果该参数空缺,将假设为默认值 (False)。 当向电子表格中导出 Microsoft Access 表或选择查询数据时,不论在此参数中输入什么,字段名都将被插入到电子表格的第一行中。 range 字符串表达式,代表电子表格中的单元格范围或范围的名称。该参数只能用于导入。当其空缺时将导入完整的电子表格。 当将数据导出到电子表格中,必须让该参数空缺。如果输入了一个范围,导出将失败。 说明 语法中的可选参数可以空缺,但是必须包含参数的逗号。如果位于末端的参数空缺,在指定的最后一个参数后面不需使用逗
fffanpei 2013-04-17
  • 打赏
  • 举报
回复
引用 4 楼 wwwwb 的回复:
应该 DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel9, _ "Employees", "C:\Employees.xlsx", True
这句话怎么用呢 可以关联存储过程吗?
fffanpei 2013-04-17
  • 打赏
  • 举报
回复
引用 2 楼 wwwwb 的回复:
用什么版本的EXCEL打开此XLS
我改成这个也是不行 DoCmd.OutputTo acOutputStoredProcedure, spStatement, acFormatXLSX, file & ".xlsx"
wwwwb 2013-04-17
  • 打赏
  • 举报
回复
应该 DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel9, _ "Employees", "C:\Employees.xlsx", True
fffanpei 2013-04-17
  • 打赏
  • 举报
回复
现在用的2007 不过不确定客户是不是使用2007
wwwwb 2013-04-17
  • 打赏
  • 举报
回复
用什么版本的EXCEL打开此XLS
fffanpei 2013-04-17
  • 打赏
  • 举报
回复
fffanpei 2013-04-17
  • 打赏
  • 举报
回复
查了半天好像不可以命名 sheetname 我只能操作excel打开重命名再保存了 不知道有没有更好的方法 明天结贴 谢谢楼上2位
fffanpei 2013-04-17
  • 打赏
  • 举报
回复
引用 11 楼 WWWWA 的回复:
你确实没有表达清楚,将SP的结果保存为SQLSERVER表,假设使用SQLSERVER2000 SELECT * INTO [EXCEL 8.0;DATABASE=R:\TEMP\123.XLS].[SHEET1] FROM [ODBC;Driver=SQL Server;UID=sa;PWD=123;Server=tmp;DataBase=tmp];
引用 12 楼 ACMAIN_CHM 的回复:
从问题描述来看,ACCESS端没有什么问题,文件已经产生并且记录已经导出了. 看一二楼那个 xx .xml 的文件内容,贴出以供分析。 应该产生的EXCEL文件中的工作表问有问题。
我已经发现问题的原因了 DoCmd.OutputTo acOutputStoredProcedure, spStatement, acFormatXLS, file & ".xls" 执行这句的时候 spStatement为 exec ExportQuery @country='SG' 在生成的excel里面 会将这个内容作为sheet的名字 在2003里面可以打开不报错, 但2007里面不需要sheetname 为 exec ExportQuery @country='SG' 请问大家遇到过吗 我想最少的损失解决这个问题

7,714

社区成员

发帖
与我相关
我的任务
社区描述
Microsoft Office Access是由微软发布的关系数据库管理系统。它结合了 MicrosoftJet Database Engine 和 图形用户界面两项特点。
社区管理员
  • Access
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧