access数据库中,数据以rtf格式存储(图文混合的数据),在vb中如何导出为ex

access数据库中,数据以rtf格式存储(图文混合的数据),在vb中如何导出为ex,第1张

Access转换成word文档的方法如下:

1、在MicrosoftAccess中,打开所需数据库,然后打开数据库对象:表、查询、窗体或报表。

2、选定所需输出数据的行和列。

3、单击“文件”菜单中的“另存为/导出”命令。

4、选择“另存为一个外部文件或数据库”选项,然后单击“确定”按钮。

5、在“保存类型”框中,为输出数据选择格式:如果要创建保持原有数据格式的文档,请单击“RTF格式”;如果要创建普通的文本文件,作为邮件合并数据源使用,请单击“MicrosoftWord合并文件”按钮。

6、在“文件名”框中,指定新文档的文件名称。

7、如果以RTF格式保存文档,并且希望马上启动Word打开此文档,请选中“自动启动”复选框。

8、如果要选定指定的数据行列,则要选中“选择”选项。

9、单击“导出”命令完成输出。

如何从web页面导入excel单元格数据、又如何把查询出来的数据放到web页面上显示成客户需要的图表?并且导出到excel中?

有两种方案:

1.用Excel自动化技术。

引用Excel的类型库生成.Net的包装类。导入时采用页面放上传文件按钮的方法,在服务器端收到文件后,用excel自动化类打开excel文件,再学会VBA语法,书写大量的代码读取单元格,然后连接数据库保存。导出时,查询数据库,启动excel自动化对象,通过VBA语法填写单元格,保存成excel文件,再用Response.OutputStream输出到页面上,触发excel文件的下载保存框。缺点:容易在服务器端产生excel死进程,代码编写复杂、代码量大、还要掌握VBA语法,用户需要上传、下载 *** 作

有人会说,显示数据时可以用网页直接显示,不用导出成excel。其实也很麻烦:用网页显示复杂的报表格式,网页设计工作量大;如果客户要求导出excel,这个工作就省不了;如果客户要求打印、打印预览、页面设置,比起excel浏览器的打印就捉襟见肘了。

2.用微软Office中间件——SOAOffice。(建议使用最新版的)

用SOAOffice输出Excel,就不会再有上述烦恼。通过SOAOffice不仅能够动态填充excel,读取excel单元格,而且还能在浏览器里直接浏览excel、或者下载、另存。SOAOffice提供标准C#.Net组件,组件在服务器端不使用自动化调用,稳定支持大量web并发访问,这是用com调用无法实现的。组件的属性方法都比较简单,易于调用,你完全不用去掌握复杂的VBA调用。

由于是纯.Net组件,所以服务器端不需安装office。 SOAOffice的excel组件SOAExcel含有Sheet、Cell等类似Excel的简化接口,调用简单。SOAExcel不但能能把数据库字段值动态填充到Excel单元格,还能把用户输入的单元格的值提出给开发者保存到数据库。

SOAExcel能够在客户端浏览器的网页里通过SOAOffice直接显示生成的Excel,用户不必先下载再打开观看内容。

举个导出excel的例子:

SOAOfficeX.ExcelResponse SOAExcel = new SOAOfficeX.ExcelResponse()

SOAOfficeX.ExcelResSheet sheet1 = SOAExcel.openSheet("Sheet1")// 打开一个Sheet

sheet1.openCell("D"+String.valueOf(8+i)).setValue(rs.getString("Count"))//循环填充数据。

SOAOfficeX.SOAOfficeCtrl SOACtrl = new SOAOfficeX.SOAOfficeCtrl(response)

SOACtrl.assign(SOAExcel)// 绑定数据

// 打开模板并生成最终的excel报表

SOACtrl.webOpen("doc/test.xls", 1, UserName, "Excel.Sheet")

上述代码不但动态填充生成excel,而且在网页里直接显示生成的Excel给终端用户,由于使用了1打开模式,Excel是只读显示的。

读取excel单元格的代码也很简单:

SOAOfficeX.ExcelRequest SOAExcel = new SOAOfficeX.ExcelRequest()

SOAOfficeX.IExcelReqSheet sheetOrder = SOAExcel.OpenSheet("销售订单")

SOAOfficeX.IExcelReqCell cell1

cell1 = sheetOrder.OpenCell("I5")//订单编码

string sOrderNum = cell1.Value//cell1.Value就是读取的结果

你在用CopyFromRecordset前先把字段名写上,然后换一行再把数据集拷贝就可以了。

===========================================================

先把这句mExcelFile.Application.Range("A1").CopyFromRecordset

mRs

改为:

mExcelFile.Application.Range("A2").CopyFromRecordset

mRs

然后在这句前面加上下面的代码试试看,应该可以的:

For

i

=

0

To

mRst.Fields.Count

-

1

mExcelFile.ActiveSheet.Cells(1,

i

+

1).Value

=

mRst.Fields(i).Name

Next

'设置字段名加粗(如果不需要可忽略此句)

mExcelFile.ActiveSheet.Range(.ActiveSheet.Cells(1,

1),

mExcelFile.ActiveSheet.Cells(1,

mRst.Fields.Count)).Font.Bold

=

True


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/10065931.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-04
下一篇 2023-05-04

发表评论

登录后才能评论

评论列表(0条)

保存