数据库导出Excel

2024-06-06

数据库导出Excel(精选九篇)

数据库导出Excel 篇1

目前很多基于C#.NET的数据库应用程序多会采用DataGridView控件展示数据信息, 用户在查询数据的同时, 也希望能将DataGridView中的数据导出到他们所熟悉的办公软件Excel中进行二次处理, 文中主要介绍如何实现数据导出到Excel。

2 系统需求分析

2.1 用户需求

程序员在开发基于C#.NET的数据库应用程序时, 经常会使用DataGridView。但Visual Studio中自带的DataGridView控件却没有提供导出Excel功能。用户往往采用选中单元格直接复制粘贴, 但由于字符集不同, 经常会出现粘贴完是中文字符变成了乱码 (如图1所示) 。必须进行“选择性粘贴” (如图2所示) , 选择“Unicode文本”才能避免这个现象。为了减少用户的烦恼, 程序员可编写程序来实现数据的自动导出。

2.2 功能需求

为了方便程序员的后期开发, 这个导出功能需实现两点要求:

(1) 在带有DataGridView控制的窗体中 (如图3所示) 用户点击按钮自动将当前的DataGridView中的数据全部导出到Excel (如图4所示) 。

(2) 导出方法能在多个DataGridView控件中灵活调用, 避免重复代码。

3 功能实现

3.1 程序开发前的准备工作

打开Visual Studio, 在项目中添加引用Excel动态链接库。

为实现将DataGridView控件中的数据导出到Excel中, 需要引用Excel动态链接库 (Microsoft Excel 11.0 Object Library) , 这样才可以通过C#语言灵活控制Excel。

注意:由于Office的版本不同, Excel的动态链接库版本号也可能不同。

添加方法如下:

首先在开发环境的菜单栏点击“项目/添加引用”, 弹出如图5添加引用窗体:

之后选择“COM”选项卡, 在“组件名称”列表中选择“Microsoft Excel 11.0 Object Library”, 点击确定, 添加引用成功。如图6所示, 在解决方案资源管理器中的引用中会多出Excel和Microsoft.Office.Core两个引用。

3.2 定义公共类的数据导出方法

在公共类 (如Operation类) 中建立自定义方法ExportData Gridview来实现。

主要通过二层循环 (外层按行和内层按列) 依次遍历DataGridview中的所有数据, 赋值到Excel的cell对象中, 并打开Excel即可。

在此方法中有两个自定义参数, 一个是DataGridView对象, 一个是导出过程是否显示Excel。以方便在程序种进行调用。

代码实现如下:

3.3 在程序中调用导出方法

在程序中调用公共类的自定义方法ExportDataGridview来实现数据导出。程序员只需将窗体中的DataGridView的控件名称写到对应参数中即可, 导出不同的DataGridView控件只需更换控件名称即可, 非常简单。

代码如下:

4 结语

在面向对象的编程中, 要充分利用类和对象, 将经常使用的功能放在类中用方法实现, 在用户窗体中只需通过将公共类实例化对象, 再调用相应的方法即可。这样可以减少大量的重复代码, 也使程序更加清楚。程序员开发程序时, 不建议将程序写得很复杂, 只要能实现用户的需求, 程序越简单越好。

摘要:在基于C#.NET平台的数据库应用程序开发中, 经常会用到DataGridview控件, 主要介绍将DataGridview控件的数据导出到Excel, 以方便用户制作更多的报表。

关键词:DataGrid控件,Excel软件,C#.NET语言

参考文献

[1]管建军.软件工程.武汉:武汉大学出版社, 2008.

[2]吴源.SQL Server2005数据库管理精讲.北京:电子工业出版社, 2008.

[3]王小科, 梁冰, 吕双.Visual C#2005程序设计自学手册.北京:人民邮电出版社, 2009.

数据库导出Excel 篇2

・若要将Access中的数据装入 Excel,可以从Access数据表中复制数据并粘贴到Excel工作表中,从Excel工作表连接到Access数据库,或者将Access数据导出到Excel工作表中。

・若要将Excel中的数据装入 Access,可以从Excel工作表复制数据并粘贴到Access数据表中,将Excel工作表导入Access表中,或者从Access表链接到Excel工作表。

注释

・“导入”一词在Excel和Access中的意义各不相同。在Excel中,导入指的是建立一个可刷新的永久数据连接。在Access中,导入则指将数据装入Access中一次,但不建立数据连接。

・您不能将Excel工作簿保存为Access数据库,

Excel 和Access都不提供利用Excel数据创建Access数据库的功能。

在Excel中使用Access数据

如果数据在Access中,但您希望在Excel中使用这些数据:

操作:交换的性质:将Access数据复制到Excel中临时将Access数据导出到 Excel定期从Excel连接到Access数据永久

在Access中使用Excel数据

如果数据在Excel中,但您希望在Access中使用这些数据:

从Outlook导出重要数据 篇3

尽管微软Outlook非常适合于电子邮件、通讯录和日历等应用,但如果想切换到另一个电子邮件程序,您知道该怎么办吗?我周围的人都不知道。您也许会想,现在人们的移动电话都具有号码可移植性,为什么个人信息和电子邮件就不能可移植呢?

为什么不能?那得问微软。这个软件业巨头在帮助用户从Outlook的.pst文件导出电子邮件、地址、日历、约会及其他数据方面的贡献乏善可陈。如果您想瞧个究竟,选择“File”*“Import”*“Export”,然后选择“Export

to a file”。您会发现,惟一的选择是一系列逗号和制表符分隔的文本格式。另外,再加微软的Access、Excel和.pst这几种格式(见图表1)。

幸好,开发其他电子邮件程序的公司愿意帮您把数据从Outlook解放出来。如果您切换到Mozilla和Netscape浏览器里面的功能强大的电子邮件程序,切换过程颇为顺利。由于Outlook仍安装在您的PC上(Mozilla

1.5版本说明规定:默认的邮件程序必须是Outlook),打开Mozilla或Netscape,点击“Ctrl”+“2”组合键,即可启动“Mail

& Newsgroups”模块,然后选择“Tools”*“Import”。

据我的经验,我觉得在下一个对话框中无论选择3个选项中的哪一项,差异都不大。选择“Address

Books”或者“Mail”,总是能够导入我在Outlook里面的所有地址和邮件文件夹;选择“Settings”,总是会出现一条表明设置参数不重要的出错信息。于是我以手工方式输入电子邮件服务账号信息(选择“Edit”*“Mail”*“Newsgroups

Account Settings”,然后点击“Add Account”)。

Mozilla和Netscape没有日历,不过,您从Mozilla网站安装了非常棒的免费Calendar插件后,也就拥有了适合这两款浏览器的功能齐全的Outlook替代版。启动任何一款程序,选择“Windows”*“Calendar”,您就可以开始安排约会了。

日历不能导入直接来自.pst文件的Outlook通讯录,不过,它可以读取用Outlook文件导出用逗号分隔的文本文件。如果您想把约会内容从Outlook导出,请选择“File”*“Import”*“Export”*“Export

to a file”,然后选择任何一种以逗号分隔的格式,再点击“Next”。接着选择Calendar文件夹作为导出源,点击“Next”,然后给文件取名(或者接受默认文件名),再次点击“Next”,最后点击“Finish”即可。

如果想把通讯录数据导入Calendar,选择“Tools”*“Import

From File”,点击“OK”即可舍弃重复约会,然后从弹出的“Open”对话框里面的“Files

of type”列表中选择“Outlook Comma Separated”,浏览及选中当初用Outlook创建的.csv文件,点击“OK”即可。Calendar问您,想不想在导入过程中打开每个约会,记得一定要点击“No”。可要注意喽!约会列表的内容偶尔有点混乱——毕竟,导入过程并非尽善尽美。

数据库导出Excel 篇4

Excel是Office的重要组成, 是保存统计数据的常用软件格式之一。在程序编制和数据汇总交换过程中, 能否将系统中录入的数据以及查询的结果按标准的格式导出为Excel报表, 以及能否将Excel表中的数据进行整理后批量导入数据库, 以上过程均对系统设计提出了较高要求。基于此, 本文即介绍了在.Net环境下, 使用C#语言实现系统中Excel数据与SQL Server2005数据库中数据的导入导出。

1 设计思路

1.1 数据导入设计思路

在此, 将Excel表格中的数据导入到SQL Server数据库的设计思路进行如下表述:

(1) 由c#程序控制Excel表格, 首先打开Excel表格;

(2) 运用SQL语句, 执行SQL, 并根据不同的规则, 将表格中的数据读入到临时表temp_table中;

(3) 通过对比temp_table和table, 判断是否存在重复的数据, 提示是否重复导入;

(4) 如果重复导入, 可将temp_table的数据直接添加到table中;否则即需将temp_table中除关键字冲突外的其它数据添加到table中。

1.2 数据导出设计思路

相应地, SQL Server数据库中的数据导出到Excel表格的设计思路[1,2,3]可列述如下:

(1) 选择需要导出的数据;

(2) 利用Worksheet类创建Excel工作表对象, 确定即将写入数据的单元格位置;

(3) 从数据库中读取数据, 根据数据类型的不同, 选择不同的写入方式;

(4) 保存Excel表格并退出内存。

数据批量导入和数据批量导出的设计流程可分别表示为如图1和图2所示。

2 关键技术实现

2.1 数据导出

2.1.1 添加COM组件的引用

只有添加Excel的COM组件才能在程序中调用Excel。添加COM组件的引用步骤可做如下实现[4]:

在“解决方案资源管理器”窗口中右击“引用”对象, 并在弹出的快捷菜单中选择“添加引用”;再在弹出的“添加引用”对话框中选择“COM”选项卡, 如果基于Excel 2003, 则选择“Microsoft Excel 11.0 object library”;如果基于Excel 2007, 则选择“Microsoft Excel 12.0 object library”;同时单击“确定”按钮, 即将Excel对象引用到工程中。

需要指出的是, 在编码中主要涉及以下两种处理功能的类:

(1) Microsoft.Office.Interop.Excel.Application:接口, 表示一个Excel程序;

(2) Microsoft.Office.Interop.Excel.Workbook:接口, 表示一个Excel的工作薄。

2.1.2 创建Excel表格

微软的Excel对象模型包括了数百个可供用户交互的对象, 本系统主要使用Application、Workbook、Worksheet和Range四个类及其内含成员。其中, Application对象处于Excel对象模型的顶层, 表示整个Excel应用程序;Workbook对象处于Application对象的下层, 表示一个Excel工作薄文件;Worksheet对象包含于Workbook对象, 表示一个Excel工作表;Range对象包含于worksheet对象之中, 表示Excel工作表中的一个或多个单元格。

创建Excel表格的代码实现过程如下:

Excel.Application excel App=new Excel.Application () ;//创建Excel对象

Excel.Workbook wb=excel App.Workbooks.Open (filename, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing) ;//创建Excel工作薄

Excel.Worksheet ws=wb.Worksheets[1]as Excel.Worksheet;//引用工作表

此时创建的Excel表格ws是一个没有内容的空表格, 接下来将数据导出到该表格中。

2.1.3 将数据库数据导出到Excel

(1) 读取数据表信息

将指定的数据表中的数据读取到Data Set中, 具体步骤如下[5]:

(1) 设置连接数据库字符串; (2) 设置查询语句; (3) 打开数据库连接, 创建SQL数据适配器; (4) 定义Data Set对象DS, 填充数据; (5) 关闭数据库连接。

(2) 向工作表的每个单元格写入数据

工作表变量ws包含有一个“Cell”属性, 这个属性代表Excel表格中的每一个单元格, 通过对“Cell”属性赋值, 从而实现了向Excel表格写入相应数据的设计需要。向Excel工作表写入数据的核心代码如下:

2.1.4 保存Excel表格并退出内存

wb.Save () ;//保存Excel文件

excel App.Quit () ;//关闭Excel对象, 回收资源

2.2 数据导入

2.2.1 打开Excel表格文件

在读取Excel表中数据时, 先是通过文件路径得到Excel文件, 并根据Workbook类获取workbook (工作簿) , 即可访问sheet (工作表) 。对应的实现代码如下:

Excel.Application excel App=new Excel.Application () ;

Excel.Workbook wb=excel App.Workbooks.Open (textBox1.Text, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing) ;

Excel.Worksheet ws=wb.Worksheets[1]as Excel.Worksheet;

2.2.2 将Excel文件数据导入到数据库临时表

通过SQL的Insert语句将Excel对象中的数据插入到指定的数据库表中。该过程的详细代码实现为:

2.2.3 将临时表中的数据导入数据库

在进行插入数据库操作前, 将需要判断插入的数据是否有重复, 如果重复, 则覆盖原数据库中数据。判断的标准, 可视数据库表中主键列数据与导入到临时表中对应的数据是否相同而定。一旦相同, 即删除临时表中对应行数据, 再将临时表中剩余的数据插入到指定表;反之, 一旦不同, 即直接进行数据导入。其程序实现过程可表述为:

3 结束语

本文提出了如下的研究创新, 具体可表述为:本文采用Visual Studio开发平台, 运用基于Office的COM组件技术, 结合Microsoft SQL Server 2005实现了Excel数据导入到数据库表以及数据库表数据导出到Excel。在导入Excel数据文件时, 能实现覆盖导入;而在导出Excel数据文件时, 则能动态添加行, 这种批量的导入导出数据能够提高用户的工作效率。从应用情况看, 该种Excel数据导入导出方法通用性强, 效果理想, 值得推广。

摘要:为了提高信息管理系统中数据导入导出操作的灵活性和通用性, 本文详细介绍了在Visual Studio 2008使用C#语言、通过引用Office的COM组件技术, 结合Microsoft SQL Server 2005实现了Excel数据导入到数据库以及数据库数据导出到Excel的设计思路和实现方法。实践证明该方法有较强的通用性和实用性。

关键词:C#,COM组件,Excel,导入导出

参考文献

[1]李明明.VS.net中用后台线程向Excel中导入数据的研究[J].测控技术, 2011, 30 (8) :83-86.

[2]苏庆, 李忠良, 吴伟民.在C#.NET下实现数据导入Excel的方法研究[J].计算机与现代化, 2011 (4) :29-31.

[3]王森.基于C#的Excel文档导入技术的研究与实现[J].办公自动化, 2011 (16) :54-55.

[4]樊宇.利用COM组件将SQL Server中的数据导入到Excel[J].电脑编程技巧与维护, 2009 (20) :65-66.

GAE环境下导出Excel报表 篇5

1 GAE应用开发

GAE的应用非常容易建立和维护,GAE起初只支持Python语言,后来逐渐支持多种编程语言。GAE提供了Java运行环境,可以使用标准的Java技术,包括JVM、Java Servlet、Java语言或者任何其他基于JVM的解释语言或编译器,如Javascript或Ruby。GAE提供了一个受限的Python运行环境,包括一个Python解释器和Python标准库。GAE提供的Java和Python环境保证应用运行的快速、安全,不受其他应用的影响。

不同于传统的虚拟主机,GAE提供的是整套构建应用的基础架构平台,可以帮助开发人员获取网络数据、发送邮件、数据存储、图片操作、缓存数据等,以后还会有更多的API推出。开发人员在GAE的框架内开发,不用再考虑CPU、内存、分布等复杂和难以控制的问题,初级的程序员按照GAE的规范也可以写出高性能的应用。但是为了安全考虑,GAE不能直接使用socket、进行文件操作。总之,GAE提供的开发环境,可以让开发更加简单,更关注于业务。

在GAE环境下,可以免费使用500M的存储空间和每月500万次页面刷新,如果想使用更多的资源,可以按需支付费用。

2 生成Excel文件

GAE提供的是受限的Python环境,在此环境下生成Excel文件只能依靠第三方库。pyExcelerator是一个主要用于产生Excel文件的库,能够灵活产生各种带格式的Excel文件,也能够读取已经存在的Excel文件,只是美中不足只能读取Excel单元格的值,而不能读取各个单元格的格式。pyExcelerator完全支持UNICODE,并且支持各种格式设置。最重要的是pyExcelerator是一个跨平台的组件,并不需要Windows平台和COM服务器也能正常使用,这非常符合GAE环境的要求。

pyExcelerator中有多个类用于产生Excel文件,其中常用的有三个:Workbook,Worksheet,XFStyle。Workbook代表一个Excel文件,Worksheet代表一个Excel文件中的一页,XFStyle用于确定产生单元格的格式。

2.1 生成最简单的Excel文件

生成最简单Excel文件的代码如下:

可以看出主要是用Worksheet对象的write方法写入数据的,此函数定义:write(r,c,label="",style=Style.XFStyle())。r、c是要写入数据的单元格的行、列坐标,从0开始,如A1单元就是(0,0),B2单元就是(1,1)。Label参数是要写入的具体内容。最后的style参数指定写入时的格式,这在下面讨论。

2.2 设置单元格字体

设置单元格的字体格式就要使用Font对象,代码如下:

可以看到通过Font对象可以设置各种字体格式,大部分使用方法都在注释中给出,其中比较特殊的两个:escapement用于设置字体的上下标,ESCAPEMENT_NONE不使用上下标,ESCAPEMENT_SUPERSCRIPT使用上标,ESCAPEMENT_SUBSCRIPT使用下标。underline用于设置字体的下划线,UNDERLINE_NONE不使用下划线,UNDERLINE_SINGLE使用单下划线,UNDERLINE_SIN-GLE_ACC使用会计用单下划线,UNDERLINE_DOUBLE使用双下划线,UNDERLINE_DOUBLE_ACC使用会计用双下划线。另外,通过设置一行上某个单元格字体的高度(height)就可以间接的设置此行的行高。

2.3 设置列宽

2.4 设置单元格边框

每个单元格都可以设置其边框,这要通过Borders对象。

可以看出Borders是格式(XFStyle)的一种,它的left、right、top、bottom、diag属性分别设置左、右、上、下、对角五条线的类型,类型共有14种:NO_LINE、THIN、MEDIUM、DASHED、DOTTED、THICK、DOUBLE、HAIR、MEDIUM_DASHED、THIN_DASH_DOTTED、MEDIUM_DASH_DOTTED、THIN_DASH_DOT_DOTTED、MEDIUM_DASH_DOT_DOTTED、SLANTED_MEDIUM_DASH_DOTTED。其中NO_LINE为不显示相应的边框,其它值显示对应线形样式的边框,但diag除外。它的left_colour等以_colour结尾的属性是对应的线的颜色的索引。need_diag1、need_diag2设置是否需要对角线:NEED_DIAG1(或2)需要、NO_NEED_DIAG1(或2)不需要。上面的diag属性只是设置对角线的线形,只有设置need_diag属性为NEED才真正显示对角线。

2.5 设置单元格底纹

设置单元格的底纹要通过Pattern对象。

Pattern的pattern属性指示底纹的图案索引,0为实心,1为75%灰色,2为50%灰色,依次类推,可以参考Excel的帮助文档。pattern_fore_colour、pattern_back_colour指示底纹前景色、背景色的颜色索引。

2.6 生成合并的单元格

生成合并的单元格要通过Worksheet的write_merge、merge方法,write_merge的定义:write_merge(r1,r2,c1,c2,label="",style),merge的定义:merge(r1,r2,c1,c2,style),其中r1,r2指示要合并单元格的起始行、终止行(0为第一行);c1、c2指示要合并单元格的起始列、终止列(0为第一列);label是写入的数据内容;style指示合并后单元格的格式。可以看出merge是write_merge的特殊情况,merge只能执行写入内容为空的合并操作。示例代码如下:

2.7 其他操作

pyExcelerator还有其他操作,包括设置数字单元格的格式、插入图片等,可以参考pyExcelerator的例子和文档,这里不做详细介绍。

3 GAE返回Excel报表

3.1 得到Excel二进制流

pyExcelerator库可以方便的生成Excel文件,但GAE环境却不允许文件操作,也就是说,Workbook的save方法是不允许执行的。如果要返回Excel报表文件,可以参照GAE返回图片的方法,直接将Excel的二进制流返回给浏览器。这就需要修改Workbook和CompoundDoc.XlsDoc的代码,仿照save函数加入返回二进制流的函数:savestream。

这样可以通过Workbook的savestream函数最终得到了Excel文件的二进制流。

3.2 返回Excel流

用户在请求Excel报表的时候就可以将上面生成的Excel二进制流返回了,如同请求一个Excel文件一样。但返回流的时候,还要通过设置HTTP报文头,通知浏览器这是个Excel文件。具体代码如下:

4 结束语

本文给出了GAE编程环境下用pyExcelerator库生成Excel报表的方法,着重介绍了产生带格式Excel文件的方法和将生成的Excel二进制流返回给浏览器的方法。由于GAE是新兴的一种网络应用服务架构,在其上开发的应用越来越多,不论是企业信息产品还是网络服务网站,大多都需要产生Excel报表,因此本文给出的方法具有较强的实用价值。

参考文献

完美导出地税税控发票软件明细数据 篇6

万全税控发票软件采用PowerBuilder技术开发, 用读写IC卡控制发票开具, 其数据库采取口令方式加密, 数据内容为明文, 在税控装置已上缴, 无法登录软件的情况下, 我们可以采取以下方法完美导出发票明细数据。

一、准备工作

1. 获取口令

先把税控软件安装目录下的“DATA”文件夹中的INVOICE DB文件改名, 然后运行发票软件就会跳出ODBC配置对话框, 用户名:dba, 用星号密码查看器即可显现*号密码 (见图1) 。

2. 安装驱动

安装从http://download.sybase.com/eval/Win32/SA902_Win32_ZH_Developer.exe下载的SQL Anywhere Studio开发版, 包含了数据库图形化管理工具Sybase Central及Adaptive Server Anywhere9.0驱动, 已到http://response.sybase.com/forms/saschndownload申请注册码:EEPDEANRREAG0027952010531解除60天时限。

二、导出数据

(1) 用Access 2007新建空数据库:发票明细数据.accdb。

(2) 在数据库窗口中, 切换到[外部数据]选项卡, 在[导入]选项组中单击[其他]按钮, 打开下拉菜单, 选择[ODBC数据库]命令, 弹出[获取外部数据—ODBC数据库]对话框, 选中[将源数据导入当前数据库的新表中]单选按钮, 单击[确定]按钮。

(3) 在[选择数据源]对话框, 单击[文件数据源]选项卡, DSN名称输入:发票明细数据, 单击[新建]按钮。

(4) 在[创建新数据源]对话框中选择[Adaptive Server Anywhere 9.0]驱动程序, 单击[下一步]按钮, 输入数据源名称:发票明细数据, 单击[下一步]按钮, 单击[完成]。

(5) 在[连接Adaptive Server Anywhere]对话框的[登录]选项卡, [用户ID]输入:dba, [口令]输入:“727D6A7A69696D836A79477D697167376F7172”, 单击[数据库]选项卡, 单击[浏览]按钮, 选定INVOICE.DB文件后单击[确定]按钮。

(6) 重新出现[选择数据源]对话框, DSN名称已默认发票明细数据, 单击[确定]按钮后, 在[连接Adaptive Server Anywhere]对话框输入口令, 再次单击[确定]按钮。

(7) 在[导入对象]对话框, 单击[全选]按钮, 最后单击[确定], 税控发票软件全部数据被导入至发票明细数据.accdb中。

三、整理数据

1. 分析结构

(1) 税控发票软件前台同数据库存在内外对应关系, 软件功能单一, 数据表较少, 表结构不复杂。

(2) 一般用英文或拼音缩写来命名表和字段, 也有组合使用的, 可参照表字段说明表DBA_pbcatcol, 结合字段的内容去判断含义。

(3) 查看Adaptive Server Anywhere数据库表属性:常规、列的中文注释。

(4) 通过以上分析, 找到中心表DBA_inv_common和关联表DBA_inv_common_item, 关联表对中心表起到补充说明作用。

2. 关联数据

(1) 将中心表DBA_inv_common、关联表DBA_inv_common_item、所开发票表DBA_inv_skfp各字段加注中文说明并定义关系, 见图2。

(2) 根据需求创建查询, 交换数据到Excel进行多角度销售分析。

(3) 万一发票流水号重复, 只需同时定义中心表和关联表中3个字段 (发票字号inv_wordno、发票流水号inv_flowno、发票代码id_fp) 的关系即可。

四、注意事项

(1) 一机多用户, 需分别导出DATA和以invoice打头加阿拉伯数字结尾的所有文件夹下的数据。

(2) 如一个单位多开票点, 分属不同营业场所, 应先进行数据合并, 后导出数据。

(3) 对于使用Access 2003导入发票数据出现的未知错误, 用数据库图形化管理工具Sybase Central删除inv_skfp表属性[常规]选项卡的注释文字:“记录哪些发票需要应用税控系统”, 即可解决。

数据库导出Excel 篇7

在开发基于SQL Server数据库的信息系统过程中会经常遇到SQL Server与其他数据库系统之间数据导入导出的情形。它常见于数据整理、数据上报接收、数据备份恢复等程序模块中, 而大批量数据对常用逐条处理记录的导入导出方法提出了严峻挑战, 数万条以上记录导入导出所消耗的时间足以让人失去耐心, 更不用说百万条以上的海量数据, 这就要求采用一种新的方法解决大批量数据在不同数据库之间的快速导入导出问题。为此, 将介绍一种基于OPENDATASOURCE函数的SQL Server数据库与其他外部数据库数据的快速导入导出方法。

2 概述

2.1 OPENDATASOURCE函数

OPENDATASOURCE是SQL Server 2000提供的一个Transact-SQL函数, 它能够建立当前数据库与外部数据库的连接。通过该函数可访问外部OLE DB数据库的数据表, 是一种使用OLE DB连接访问外部数据库的简便方法。其语法为:OPENDATASOURCE (provider_name, init_string) 。

参数provider_name为用于访问数据源的OLE DB提供程序名, 其数据类型为char, 没有默认值, 不同的数据库有不同提供程序名, SQL Server、Oracle和Access数据库的提供程序名分别为“SQLOLEDB”、“MSDAORA”和“Microsoft.Jet OLEDB.4.0”。

参数init_string为数据库连接字符串, 它被传递给目标提供程序的IDataInitialize接口, 用于建立与参数指定的数据库的连接。提供程序字符串语法是以关键字值对为基础的, 这些关键字值对由分号隔开, 例如:“keyword1=value;keyword2=value”。该参数的主要的关键字包括“Data Source”、“User ID”和“Password”等。其中“Data Source”为要连接数据源的名称, 不同的提供程序用不同的方法对此进行解析, 对于SQL Server OLE DB提供程序来说, 它指明服务器的名称, 对于Jet OLE DB提供程序来说, 则指明.mdb文件或.xls文件的完整路径;“User ID”为用于连接的用户名称;“Password”为用于连接的密码。

OPENDATASOURCE函数引用外部数据库数据表的方法为:OPENDATASOURCE (provider_name, init_string) .DataBaseName.DataBaseOwner.TableName。其中, DataBaseName为外部数据库名称, DataBaseOwner为外部数据库用户, TableName为外部数据库数据表名称。不同类型的外部数据库引用方式又有所不同, 如Oracle没有DataBaseName项, Access和Excel没有DataBaseName和DataBaseOwner项, 当缺少某项时, 该项后的“.”不能省略。

2.2 数据导入导出方法

通过OPENDATASOURCE函数实现数据导入导出的SQL命令通常有以下3种情形:

(1) 当前数据库STable表与外部数据库DTable表都存在, 且结构相同, 其导入方法为:

(2) 当前数据库STable表与外部数据库DTable表都存在, 且结构相同, 其导出方法为:

(3) 当前数据库STable表不存在, 而外部数据库DTable表存在, 其导入方法为:

提示:当外部数据库不存在DTable表, 必须首先创建该表后才能实现从当前数据库STable表导出数据到外部数据库DTable表。

上述三种情形, 数据导入导出涉及的源和目的数据表结构不必完全相同, 可以在SELECT语句中选择部分数据字段导入导出。为了便于描述, 在下面例程中假定源和目的数据表结构完全相同。

3 程序

3.1 实验环境

(1) 操作系统:Windows XP Professional SP2。

(2) 数据库系统:SQL Server 2000、Oracle 8.1.7、Access2003、Excel 2003。

(3) 开发工具:Delphi 7.0。

在Delphi程序界面上创建一个ADO数据库连接MyAdoConn, 其OLE DB提供程序名称为“Microsoft OLE DB Provide for SQL Server”, 并指向当前SQL Server数据库实例, 创建一个AdoQuery数据集MyAdoQuery, 将MyAdoQuery的Connection属性设置为My AdoConn, STable为当前数据库中的数据表, DTable为外部数据库的数据表, 两表结构完全相同。

3.2 SQL Server实例

(1) 从当前数据库STable表导出到另一个外部SQL Server数据库 (以下称“外部数据库”) , 其主要实现语句为:

(2) 从外部数据库DTable表导入到当前数据库STable表时, 其主要实现语句为:

(3) 假若当前数据库不存在STable表, 从外部数据库DTable表导入到当前数据库时, 其主要实现语句为:

在上述3个例子中, “SQLOLEDB”是SQL Server的OLE DB驱动程序标识, “ServerName”是外部SQL Server数据库服务名称, “MyUID”是用户名称, “MyPass”是用户口令, “Northwind”是数据库名。其中, 数据表的引用方法为“.DataBaseName.dbo.TableName”。

与此相似, SQL Server与其他类型的外部数据库的导入导出也有这三种情形, 为了节省篇幅, 以下部分仅列举假设源数据表STable和目的数据表DTable都存在, 且结构相同的情形下, 将STable数据导出到DTable的例子。

3.3 从SQL Server导出到Oracle数据库

假设STable在当前SQL Server数据库中, DTable是在Oracle数据库MyUID用户下的一个数据表, 将数据从源数据表STable导出到目的数据表DTable的主要实现语句为:

在上例中, “MSDAORA”是Oracle8i的OLE DB驱动程序标识, “ServerName”是Oracle数据库服务名, “MyUID”是用户名称, “MyPass”是用户口令。如果赋予用户“MyUID”权限, 也可以导出到其他用户名下的数据表中。其中, 数据表的引用方法为“..UserName.TableName”, 并且用户名和表名要区分大小写。

3.4 从SQL Server导出到Access

假设STable在当前SQL Server数据库中, DTable是在Access数据库中的一个数据表, 将数据从源数据表STable导出到目的数据表DTable的主要实现语句为:

在上例中, “Microsoft.Jet.OLEDB.4.0”是Access的OLE DB驱动程序标识, “D:MYACDB.mdb”是Access数据库文件名和路径, “Admin”是用户名称, 对加密的Access数据库, 只需在“Password=”后面添加一个参数关键值对“;Je OLEDB:Database Password=JMPASS”即可 (“JMPASS”为数据库密码) 。其中, 数据表的引用方法为“...TableName”。

3.5 从SQL Server导出到Excel

假设STable在当前SQL Server数据库中, DTable是Exce表格文件“D:TEST.xls”中的一个工作表, 将数据从源数据表STable导出到Excel的DTable工作表的主要实现语句为:

在上例中, “Microsoft.Jet.OLEDB.4.0”是Excel的OLE DB驱动程序标识, “D:TEST.XLS”是Excel文件名和路径, “Admin”是用户名称。其中, 数据表的引用方法为“..[TableName$]”。

4 结语

主要阐述基于OPENDATASOURCE函数的SQL Server海量数据的快速导入导出方法, 在具备相应的数据库环境条件下, 用例均可在Delphi 7.0环境中正确执行。其中SQL语句可以在SQL Server查询分析器中直接执行, 该方法还可以实现SQL Server与纯文本文件、DBF数据文件等格式的数据文件之间的数据导入导出。经测试, 用该方法从Access 2003将26万条数据导入到SQL Server 2000数据库仅耗时38秒, 能很好解决SQL Server与常用的外部数据库之间海量数据的快速导入导出问题。

参考文献

[1]SQL Server联机丛书.

纯文本数据在VFP中导入导出 篇8

多数应用软件都有文件存储格式,VFP6.0不能直接打开,为了在VFP6.0中使用,就需要使用数据导入功能。可以将纯文本文件导入成为dbf格式的文件,导入纯文本文件可以减少录入的工作量。

1.1 使用菜单

(1)在VFP6.0文件菜单中选择导入命令,弹出的对话框中选择导入向导;(2)执行此向导。

1.2 使用命令

(1)在VFP6.0中打开要导入文本文件的表;(2)执行append from g:shujushuju.txt type sdf命令(其中g:shujushuju.txt为文本文件的路径和文件名)。

1.3 表中备注字段内容的导入

将文本文件中的一行写入一个备注字段中,可以用如图1代码实现,其中如果有addi表示在原有备注字段内容的后面追加内容,否则覆盖原有内容(见图1)。

2 在VFP6.0中导出纯文本数据

导出数据是将表记录的数据转化成其他应用系统可以使用的文件格式,可以备份数据,提高数据库的安全性。导出数据是导入数据的逆操作。这里分两种情况讨论表数据的导出操作。

2.1 在VFP6.0中导出表为纯文本数据

在VFP6.0中导出表为纯文本数据后,文本文件中一行内容为原表中一条记录,执行导出操作之前都需要先将表打开。有如下二种方法:

(1)执行VFP6.0应用程序窗口中文件菜单中的导出命令,设置导出对话框中的类型为Delimited Text格式,另存为保存类型为全部文件,导出文件的名字一定要加上扩展名txt。

(2)在命令窗口执行COPY TO g:shujushu.txt(路径名+文件名.txt)DELIMITED命令。

在某些情况下需要将一条记录或某几条记录导出到一个文件中,比如要求将一条记录导出到一个文件中,这时就需要编写一小段程序代码,见图2。

2.2 在VFP6.0中导出备注字段为纯文本数据

对于带备注字段的表不能直接使用菜单和简单的一条命令来完成导出操作,如果那样会丢失备注字段数据。一般将表中每条记录中的每个备注字段单独保存为一个文本文件,用图3所示代码来实现。

3 结束语

在VFP6.0中导入导出文本文件一般操作比较复杂,需要编写程序来完成,尤其对于备注字段的导入导出需要单独来操作。

参考文献

[1]李加符,邸雪峰,桂敏文,等.Visual Foxpro6.0入门与提高[M].北京:清华大学出版社,2000.

[2]赫峰,何曙光.Visual Foxpro6.0/7.0命令函授大全[M].北京:电子工业出版社,2002.

[3]张洪举.Visual Foxpro6.0开发答疑160问[M].北京:人民邮电出版社,2003.

数据库导出Excel 篇9

在数据库应用系统开发中, 经常需要将Excel中的数据直接导入到SQL Server数据库中;另外, 为了方便地对数据库中的数据进行打印, 有时又需要将数据库中的数据导出到Excel中, 借助Excel自身的打印功能进行报表输出和打印。以导入导出学生信息为例, 讲解在Visual C#2005中实现导入导出数据的方法。

2 数据库及表

学生信息数据库名称为:db_student。数据库中包含student表, 表中包含如下字段, 如表1所示。

3 数据导入

导入数据时, 可先将Excel中的数据导入到窗体的DataGridView控件中, 再将DataGridView控件中的数据存入数据库即可。

Excel数据文件可以看作是一个数据库, 其中的工作表可看作是数据库中的表。通过提供程序“Microsoft.Jet.OLEDB.4.0”连接Excel数据源, 读取其中的数据, 然后再显示到DataGridView控件中。

在Visual C#2005中新建一个项目, 在项目中添加一个Windows窗体, 窗体文件名称为:frm Input Student.cs。

该窗体界面运行效果如图1所示。

(1) 该窗体上包含如下主要控件:

1) 在ToolStrip工具栏上放置3个Button, 名称分别是“tsb Input”、“tsbSave”和“tsbExit”。

2) 1个Label控件, 显示操作说明, 其Text属性设置为图1中所示文字。

3) 1个DataGridView控件, 名称为:dgv Student。用来显示导入的学生信息,

4) 1个OpenFileDialog控件, 名称为“openFileDialog1”, 用来显示打开文件对话框, 选择要打开的Excel文件。

(2) 该窗体代码如下:

在导入学生信息窗体中, 导入Excel数据到数据集的代码放在了一个自定义方法ExcelToDS () 中。在“导入Excel文件”按钮的Click事件方法中, 调用ExcelToDS () 方法, 得到数据集对象, 再将数据集对象的内容显示到表格控件dgv Student中。

4 数据显示

Excel对象模型包括了128个不同的对象, 从矩形、文本框等简单的对象到透视表、图表等复杂的对象。下面介绍一下其中最重要, 也是用得最多的四个对象。

(1) Application Class对象。Application Class对象处于Excel对象模型层次结构的顶层, 表示Excel自身的运行环境。

(2) Workbook对象。Workbook对象直接处于Application Class对象的下层, 表示一个Excel工作簿文件。

(3) Worksheet对象。Worksheet对象包含于Workbook对象, 表示一个Excel工作表。

(4) Range对象。Range对象包含于Worksheet对象, 表示Excel工作表中的一个或多个单元格。

导出数据库中的数据到Excel文件需要首先在项目中添加对COM组件中的“Microsoft Excel 11.0 Object Library”的引用, 在代码中, 引用“Microsoft.Office.Interop.Excel”和“Microsoft.Office.Core”命名空间。

使用下面的步骤可以将数据库中的内容写入Excel文件:

(1) 使用适配器对象执行查询命令, 查询出将要导出的数据。

(2) 将查询结果填充到数据集或数据表对象中。

(3) 创建Excel应用程序对象、工作簿对象和工作表对象。

(4) 依次将数据集或数据表对象中的每条记录写入到Excel工作表对象中。

在项目中再添加一个Windows窗体, 窗体文件名称为:frm Output Student.cs。

该窗体运行效果如图2所示。

导出信息到Excel中的运行效果如图3所示。

(1) 该窗体上包含如下主要控件:

1) 1个Combo Box控件, 提供班级编号的列表值。

2) 2个Button控件, 名称分别为:“btn Output”、“btn Exit|”。

(2) 该窗体代码如下:

5 结语

上一篇:世界体育用品创新之路下一篇:空间翻转