数据导出申请书

2025-01-20

数据导出申请书(10篇)

1.数据导出申请书 篇一

挑战

----PDMS数据导出模块开发过程小结

开发部副经理 郑旭

PDMS数据导出模块已经基本完成了,能够顺利地导出元件库、等级库。对于设计库、属性库等其它库的导出,只要按照已有的框架编写代码就可以很容易的完成了。这个模块能够顺利完成,还依赖大家的相互协作,在此,我感谢在开发过程中给予过我帮助的所有的人。

因为已经完成,这篇应该算是回忆录了,但将思绪转到从前,却又无从整理出一个头绪,很难用一些合适的文字来表述这段时间我所学到的东西。

还记得刚下达任务的时候,我已经将底层熟悉了,并且对底层做了应用的维护和拓展,正打算进一步熟悉等级库和元件库持久层访问模式,以求与设计库达到统一。对于突然到来的任务,我有点措手不及。对于PDMS的数据库,我几乎是什么都不懂,不知道它是以什么形式来存储,也不知道它到底是一种怎样的结构?难道就仅仅是我们目前所看到的那种层次数据库吗?很茫然,根本找不到任何突破口,摆在我面前的就是那些不知名格式的文件,一大堆,尽管想用办法显示它的内容,一切都是徒劳。

突然听同事说PDMS有它自己的DARs(Data Access Routines),并且前辈们已经用这些接口读到过某些元件的属性,我喜出望外,有救了!于是在同事的指导下找到了这些动态库以及接口声明,结合相关文档的阅读,很快有了结论:PDMS有它自己的数据库存储文件,它对外部提供了一些接口,用以读取数据表中某个字段的值,这些函数是FORTRAN语言实现的,但它提供了 C/C++接口,接下来的工作就好安排了。

测试接口是一件很麻烦的事,也是具有挑战性的。本来以为可以很顺利地试验成功,但现实却给我们制造了不小的麻烦。首先是并没有环境配置这种概念,直接拷贝了库中的一个例程进行测试,并抱着必胜的信心,结果事与愿违,使用那些访问接口根本就无法启动PDMS软件,那么就无法用这些访问接口访问PDMS的数据库了。还好,有同事一眼就认出PDMS平台需要配置自己的环境。还是很纳闷,对环境这个概念好像是一无所知。也并不知道应该配置些什么。还好,偶然中发现了安装目录下PDMS的环境配置文件,继而了解了启动时所需的环境配置,在同事的帮助下,写了个启动时的批处理文件,这样,PDMS的启动问题得到了解决。

接下来就是对接口的无数次测试。虽然能够访问PDMS了,经过试验能够打开PDMS了,可是当想要定位到具体的某个数据库时却又出现了问题,尽管输入了正确的数据库名,尽管对打开时的批处理文件做了相应的修改,错误提示始终是找不到数据库。相关的英文文档我也看了,可就是找不出个所以然。可我一想,既然能提供出这种接口,那么肯定不会有错的,难道我对英文的理解有误?我再仔细阅读,然而始终就是那几个例子。“DESI/GN”、“CAT/ALOGUE”,“CAT/PIPE”,„„,而我的写法就是数据库名,忽然想起PDMS中有这样一种约定,名字前必须要用“/”,于是随便试了下,果然,这招成功了。有点欣喜若狂,前面那些例子似乎也逐渐明朗起来,前面部分应该是表示模块,后面部分就是数据库组的名字了。在此之后,测试工作有了很大的进展。(其实到后来才发现,参考文献的后半部分有说明,只是为了争取时间,所以没有阅读参考文献的后面部分,但在后续接口功能及参数的查询中起到了至关重要的作用。)

测试了所有的接口,对其含义和命名规则都熟悉了,接下来的事便是要合理的设计这个模块的架构,希望它能成为一个独立的功能添加到我们的软件当中。还好,在接受这个任务以前是做底层分析与维护的,因此对我们整个软件的架构还是比较熟悉,再加上对重用代码有浓厚的兴趣,因而这边没有太多的难点。经过考虑,觉得写数据库部分可以重用我们软件的逻辑,而在模块的域领域中不能涉及我们软件的域逻辑。而对于数据库模式,决定用广度优先遍历的方式对数据库进行访问。一切进展得很顺利,在几个工作日后,PDMS的ANSI标准元件库终于展现在我们眼前,看到成果了,心情当然激动。

在设计架构以前考虑过由于数据库与等级库、元件库访问数据库的方式有所不同,由于设计库的特殊性,在数据库中维护了领域中的逻辑(这可能是数据库设计的一个瑕疵),从而导致潜在的风险,架构对设计库不起作用,而事实证明,确实存在这样的问题。当时的想法就是有两种解决方案:一:数据库仍然维护领域层中的逻辑,但是维护方式改变,使得这种关系是由节点自己维护,而无须通过其他域对象;二:改变数据导出模块中的领域层,是之对设计库逻辑和元件库等其他库的逻辑都使用。虽然有了方案,但各有利弊,不好取舍。在综合了多方面考虑之后,最终还是采取了第二种实现方式,使得各个库的导出逻辑得到了统一。

在整个设计过程中,虽然遇到了不小的挑战,但我总是以一种乐观的心态去面对这些,虽然有时候也曾低落过,而心中那种必胜的信念从没有减弱。我相信,既然能发现问题,那么就肯定有一种合理的方法来解决它,那只是时间的问题。

完成了,重担似乎卸下了,便有更轻松的心情去迎接新的挑战!

(2007.06.04供稿)

2.数据导出申请书 篇二

1 利用DDE将数据导入Excel

DDE(Dynamic Data Exchange),即动态数据交换技术,是Microsoft公司开发的基于Windows信息传递的共享机制。动态数据交换发生在两个运行的Windows程序之间,请求服务的一方称作客户应用程序,提供服务的一方称为服务器应用程序。客户应用程序和服务器应用程序是相互独立的,它们之间会话由通道来完成,整个会话过程由程序控制,不需要用户干涉。Developer 2000中加入了DDE客户应用程序,用户可以通过PL/SQL程序包来实现该技术。

DDE技术的实现过程是:启动服务器应用程序;由客户端发出初始请求,建立与服务器端的连接会话;客户端与服务器进行数据交换;结束DDE会话。

在Forms Builder表单应用程序中通过DDE技术将数据导出到Excel文档的步骤如下:

(1)建立连接会话,开启客户端程序与服务器应用程序之间的连接

上面代码中第一段是建立DDE客户应用程序与服务器应用程序Excel的连接会话,并打开指定即将接收导入数据的Excel文档。C:Microsoft OfficeOFFICE10excel.exe为PC机中Excel的安装路径,d:abc.xls为接收数据导入的Excel文档所在的文件路径,DDE.App_Mode_Maximized则为导出之前最大化打开该Excel文档。

第二段代码则是在打开相应Excel文档之后,开启客户端程序与服务器应用程序之间的连接。

(2)进行数据交换,导出数据至Excel文档

通过定义存储过程PC用来实现向服务器应用程序Exce发送数据,以便于后面程序的调用。存储过程的入口参数RC和C_TEXT分别为Excel文档中对应单元的位置和导入到该位置的数据。DDE.Poke函数实现向服务器应用程序中发送数据,除了存储过程中的入口参数外,AppID由建立连接会话时定义,DDE.CF_TEXT声明导出数据类型为文本型,5000则为超时时间。如在一个循环语句中加入:

则可以循环分别向Excel从第一行开始逐行向一、二三列导入变量pro_no、bl_no、fee_no对应的值(其中R,C的初值都定义为1)。

(3)数据导出完毕,用DDE.Terminate函数结束DDE会话

DDE.Terminate(AppID);

通过实际验证,在导出数据量不是很大时,通过DDE技术能快速有效地将Forms Builder表单中的数据导入指定的Excel文档,并且程序结构简单容易实现。但是该方法也有其自身的一些缺陷:

1)交互数据量比较大时,导出速度比较慢;

2)由于要确保程序中Excel的路径与PC机中Excel的安装路径一致,因此如果Excel的安装路径发生改变,相应的程序也得进行同步更新,这在客户机比较多的信息管理系统中操作起来不方便;

3)由于每次导出至Excel的数据会覆盖上一次导出的数据,因此导出数据在Excel中进行保存时只能选择另存为并进行重命名,操作起来比较复杂。

4)当PC机版本系统发生变化,比如由Win98升级至WinXP时,通过DDE进行数据导出有时会出现不稳定,导不出数据的情况。

2 利用Text_IO将数据导入Excel

Text_IO是Forms Builder组件中的自带内建程序包,在表单应用程序中通过调用程序包中的存储过程可以实现与外部文件的数据交互。Text_IO程序包可以实现的功能包括如下几个方面:

(1)对外部文档的操作:定义文档变量、打开/关闭文档、检查指定文档当前状态等;

(2)数据导出操作:通过程序包中的存储过程可以向已打开的外部文档导出数据;

(3)数据导入操作:通过程序包中的存储过程从已打开的外部文档中读取数据。

在Forms Builder表单应用程序中通过Text_IO程序包将数据导出到Excel文档的步骤如下:

(1)通过Text_IO.File_Type定义一个局部变量,代表接收Forms表单导出数据的文件:

Out_File Text_IO.File_Type;

以上的Out_File即为接收数据导出的文档变量名;

(2)创建并打开文档,对文档布局参数及显示的字体等进行设置,并准备接收数据导入:

上述代码中首先通过Text_IO.fopen指令创建并打开Excel文档abc.xls,在打开文档之前删除文档abc.xls上原有内容;然后通过Text_IO.Put和Text_IO.New_Line指令对Excel单元格的格式和单元格中显示的字体等进行初始化设置。

(3)进行数据交换,导出数据至Excel文档

I:=3;

GO_BLOCK('test');

FIRST_RECORD;

LOOP

END LOOP;

Text_IO.Fclose(OUT_FILE);

上述代码中通过定义的变量I来定位导出数据在Excel文档中的所在行并设置其初值为3,即导入Excel的数据从该文档的第三行开始排列。LOOP…END LOOP循环体中则是将FORMS表单中test数据块的数据逐行的导入Excel文档中指定位置。数据导出完毕通过Text_IO.Fclose关闭该文档。

Text_IO程序包作为FormsBuilder组件自带的内建程序包,能有效地实现表单应用程序与外部文件的数据交互。与DDE技术相比,在交互数据量比较大时,该方法的导出速度比较快,并且避免了必须在程序中给出PC机中Excel安装路径所带来的不方便。不过该方法的程序结构比较繁琐,尤其是对接收数据的Excel单元格格式的设置比较复杂。

3 结语

本文通过实例介绍了Oracle Developer 2000中常用的两种读写外部文件的方法:基于DDE技术的数据导出方法和基于Text_IO内建程序包的导出方法,并对这两种方法的特点及数据交互过程中常见的问题进行了分析。两种方法各有利弊,开发人员可以根据实际要求选择合适的数据导出方法。

参考文献

[1]王海亮等.Oracle10g Forms Builder Web数据开发与应用.北京:中国水利水电出版社,2005.

3.数据导出申请书 篇三

・若要将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中使用这些数据:

4.数据导出申请书 篇四

/******* 导出到excel

EXEC master..xp_cmdshell ’bcp SettleDB.dbo.shanghu out c:temp1.xls -c -q -S”GNETDATA/GNETDATA“ -U”sa“ -P”“’

/*********** 导入Excel

SELECT *

FROM OpenDataSource( ’Microsoft.Jet.OLEDB.4.0’,

’Data Source=”c:test.xls“;User ID=Admin;Password=;Extended properties=Excel 5.0’)...xactions

SELECT cast(cast(科目编号 as numeric(10,2)) as nvarchar(255))+’ ’ 转换后的别名

FROM OpenDataSource( ’Microsoft.Jet.OLEDB.4.0’,

’Data Source=”c:test.xls“;User ID=Admin;Password=;Extended properties=Excel 5.0’)...xactions

/** 导入文本文件

EXEC master..xp_cmdshell ’bcp ”dbname..tablename“ in c:DT.txt -c -Sservername -Usa -Ppassword’

/** 导出文本文件

EXEC master..xp_cmdshell ’bcp ”dbname..tablename“ out c:DT.txt -c -Sservername -Usa -Ppassword’

EXEC master..xp_cmdshell ’bcp ”Select * from dbname..tablename“ queryout c:DT.txt -c -Sservername -Usa -Ppassword’

导出到TXT文本,用逗号分开

exec master..xp_cmdshell ’bcp ”库名..表名“ out ”d:tt.txt“ -c -t ,-U sa -P password’

BULK INSERT 库名..表名

FROM ’c:test.txt’

WITH (

FIELDTERMINATOR = ’;’,

ROWTERMINATOR = ’n’

)

--/* dBase IV文件

select * from

OPENROWSET(’MICROSOFT.JET.OLEDB.4.0’

,’dBase IV;HDR=NO;IMEX=2;DATABASE=C:’,’select * from [客户资料4.dbf]’)

--*/

--/* dBase III文件

select * from

OPENROWSET(’MICROSOFT.JET.OLEDB.4.0’

,’dBase III;HDR=NO;IMEX=2;DATABASE=C:’,’select * from [客户资料3.dbf]’)

--*/

--/* FoxPro 数据库

select * from openrowset(’MSDASQL’,

’Driver=Microsoft Visual FoxPro Driver;SourceType=DBF;SourceDB=c:’,

’select * from [aa.DBF]’)

--*/

/**************导入DBF文件****************/

select * from openrowset(’MSDASQL’,

’Driver=Microsoft Visual FoxPro Driver;

SourceDB=e:VFP98data;

SourceType=DBF’,

’select * from customer where country != ”USA“ order by country’)

go

/***************** 导出到DBF ***************/

如果要导出数据到已经生成结构(即现存的)FOXPRO表中,可以直接用下面的SQL语句

insert into openrowset(’MSDASQL’,

’Driver=Microsoft Visual FoxPro Driver;SourceType=DBF;SourceDB=c:’,

’select * from [aa.DBF]’)

select * from 表

说明:

SourceDB=c: 指定foxpro表所在的文件夹

aa.DBF       指定foxpro表的文件名.

/*************导出到Access********************/

insert into openrowset(’Microsoft.Jet.OLEDB.4.0’,

’x:A.mdb’;’admin’;’’,A表) select * from 数据库名..B表

/*************导入Access********************/

insert into B表 selet * from openrowset(’Microsoft.Jet.OLEDB.4.0’,

’x:A.mdb’;’admin’;’’,A表)

********************* 导入 xml 文件

DECLARE @idoc int

DECLARE @doc varchar(1000)

--sample XML document

SET @doc =’

Customer was very satisfied

white red”>

Important

Happy Customer.

-- Create an internal representation of the XML document.

EXEC sp_xml_preparedocument @idoc OUTPUT, @doc

-- Execute a SELECT statement using OPENXML rowset provider.

SELECT *

FROM OPENXML (@idoc, ’/root/Customer/Order’, 1)

WITH (oid    char(5),

amount float,

comment ntext ’text’)

EXEC sp_xml_removedocument @idoc

/********************导整个数据库*********************************************/

用bcp实现的存储过程

/*

实现数据导入/导出的存储过程

根据不同的参数,可以实现导入/导出整个数据库/单个表

调用示例:

--导出调用示例

----导出单个表

exec file2table ’zj’,’’,’’,’xzkh_sa..地区资料’,’c:zj.txt’,1

----导出整个数据库

exec file2table ’zj’,’’,’’,’xzkh_sa’,’C:docman’,1

--导入调用示例

----导入单个表

exec file2table ’zj’,’’,’’,’xzkh_sa..地区资料’,’c:zj.txt’,0

----导入整个数据库

exec file2table ’zj’,’’,’’,’xzkh_sa’,’C:docman’,0

*/

if exists(select 1 from sysobjects where name=’File2Table’ and objectproperty(id,’IsProcedure’)=1)

drop procedure File2Table

go

create procedure File2Table

@servername varchar(200) --服务器名

,@username varchar(200)  --用户名,如果用NT验证方式,则为空’’

,@password varchar(200)  --密码

,@tbname varchar(500)  --数据库.dbo.表名,如果不指定:.dbo.表名,则导出数据库的所有用户表

,@filename varchar(1000) --导入/导出路径/文件名,如果@tbname参数指明是导出整个数据库,则这个参数是文件存放路径,文件名自动用表名.txt

,@isout bit     --1为导出,0为导入

as

declare @sql varchar(8000)

if @tbname like ’%.%.%’ --如果指定了表名,则直接导出单个表

begin

set @sql=’bcp ’+@tbname

+case when @isout=1 then ’ out ’ else ’ in ’ end

+’ “’+@filename+’” /w’

+’ /S ’+@servername

+case when isnull(@username,’’)=’’ then ’’ else ’ /U ’+@username end

+’ /P ’+isnull(@password,’’)

exec master..xp_cmdshell @sql

end

else

begin --导出整个数据库,定义游标,取出所有的用户表

declare @m_tbname varchar(250)

if right(@filename,1)’’ set @filename=@filename+’’

set @m_tbname=’declare #tb cursor for select name from ’+@tbname+’..sysobjects where xtype=’’U’’’

exec(@m_tbname)

open #tb

fetch next from #tb into @m_tbname

while @@fetch_status=0

begin

set @sql=’bcp ’+@tbname+’..’+@m_tbname

+case when @isout=1 then ’ out ’ else ’ in ’ end

+’ “’+@filename+@m_tbname+’.txt ” /w’

+’ /S ’+@servername

+case when isnull(@username,’’)=’’ then ’’ else ’ /U ’+@username end

+’ /P ’+isnull(@password,’’)

exec master..xp_cmdshell @sql

fetch next from #tb into @m_tbname

end

close #tb

deallocate #tb

end

go

/**********************Excel导到Txt****************************************/

想用

select * into opendatasource(...) from opendatasource(...)

实现将一个Excel文件内容导入到一个文本文件

假设Excel中有两列,第一列为姓名,第二列为很行帐号(16位)

且银行帐号导出到文本文件后分两部分,前8位和后8位分开,

(MS SQL Server)SQL语句导入导出大全数据库教程

如果要用你上面的语句插入的话,文本文件必须存在,而且有一行:姓名,银行账号1,银行账号2

然后就可以用下面的语句进行插入

注意文件名和目录根据你的实际情况进行修改.

insert into

opendatasource(’MICROSOFT.JET.OLEDB.4.0’

,’Text;HDR=Yes;DATABASE=C:’

)...[aa#txt]

--,aa#txt)

--*/

select 姓名,银行账号1=left(银行账号,8),银行账号2=right(银行账号,8)

from

opendatasource(’MICROSOFT.JET.OLEDB.4.0’

,’Excel 5.0;HDR=YES;IMEX=2;DATABASE=c:a.xls’

--,Sheet1$)

)...[Sheet1$]

如果你想直接插入并生成文本文件,就要用bcp

declare @sql varchar(8000),@tbname varchar(50)

--首先将excel表内容导入到一个全局临时表

select @tbname=’[##temp’+cast(newid() as varchar(40))+’]’

,@sql=’select 姓名,银行账号1=left(银行账号,8),银行账号2=right(银行账号,8)

into ’+@tbname+’ from

opendatasource(’’MICROSOFT.JET.OLEDB.4.0’’

,’’Excel 5.0;HDR=YES;IMEX=2;DATABASE=c:a.xls’’

)...[Sheet1$]’

exec(@sql)

--然后用bcp从全局临时表导出到文本文件

set @sql=’bcp “’+@tbname+’” out “c:aa.txt” /S“(local)” /P“” /c’

exec master..xp_cmdshell @sql

--删除临时表

exec(’drop table ’+@tbname)

用bcp将文件导入导出到数据库的存储过程:

/*--bcp-二进制文件的导入导出

支持image,text,ntext字段的导入/导出

image适合于二进制文件;text,ntext适合于文本数据文件

注意:导入时,将覆盖满足条件的所有行

导出时,将把所有满足条件的行也出到指定文件中

此存储过程仅用bcp实现

邹建 2003.08-----------------*/

/*--调用示例

--数据导出

exec p_binaryIO ’zj’,’’,’’,’acc_演示数据..tb’,’img’,’c:zj1.dat’

--数据导出

exec p_binaryIO ’zj’,’’,’’,’acc_演示数据..tb’,’img’,’c:zj1.dat’,’’,0

--*/

if exists (select * from dbo.sysobjects where id = object_id(N’[dbo].[p_binaryIO]’) and OBJECTPROPERTY(id, N’IsProcedure’) = 1)

drop procedure [dbo].[p_binaryIO]

GO

Create proc p_binaryIO

@servename varchar (30),--服务器名称

@username varchar (30), --用户名

@password varchar (30), --密码

@tbname varchar (500), --数据库..表名

@fdname varchar (30), --字段名

@fname varchar (1000), --目录+文件名,处理过程中要使用/覆盖:@filename+.bak

@tj varchar (1000)=’’, --处理条件.对于数据导入,如果条件中包含@fdname,请指定表名前缀

@isout bit=1  --1导出((默认),0导入

AS

declare @fname_in varchar(1000) --bcp处理应答文件名

,@fsize varchar(20)  --要处理的文件的大小

,@m_tbname varchar(50) --临时表名

,@sql varchar(8000)

--则取得导入文件的大小

if @isout=1

set @fsize=’0’

else

begin

create table #tb(可选名 varchar(20),大小 int

,创建日期 varchar(10),创建时间 varchar(20)

,上次写操作日期 varchar(10),上次写操作时间 varchar(20)

,上次访问日期 varchar(10),上次访问时间 varchar(20),特性 int)

insert into #tb

exec master..xp_getfiledetails @fname

select @fsize=大小 from #tb

drop table #tb

if @fsize is null

begin

print ’文件未找到’

return

end

end

--生成数据处理应答文件

set @m_tbname=’[##temp’+cast(newid() as varchar(40))+’]’

set @sql=’select * into ’+@m_tbname+’ from(

select null as 类型

union all select 0 as 前缀

union all select ’+@fsize+’ as 长度

union all select null as 结束

union all select null as 格式

) a’

exec(@sql)

select @fname_in=@fname+’_temp’

,@sql=’bcp “’+@m_tbname+’” out “’+@fname_in

+’” /S“’+@servename

+case when isnull(@username,’’)=’’ then ’’

else ’” /U“’+@username end

+’” /P“’+isnull(@password,’’)+’” /c’

exec master..xp_cmdshell @sql

--删除临时表

set @sql=’drop table ’+@m_tbname

exec(@sql)

if @isout=1

begin

set @sql=’bcp “select top 1 ’+@fdname+’ from ’

+@tbname+case isnull(@tj,’’) when ’’ then ’’

else ’ where ’+@tj end

+’” queryout “’+@fname

+’” /S“’+@servename

+case when isnull(@username,’’)=’’ then ’’

else ’” /U“’+@username end

+’” /P“’+isnull(@password,’’)

+’” /i“’+@fname_in+’”’

exec master..xp_cmdshell @sql

end

else

begin

--为数据导入准备临时表

set @sql=’select top 0 ’+@fdname+’ into ’

+@m_tbname+’ from ’ +@tbname

exec(@sql)

--将数据导入到临时表

set @sql=’bcp “’+@m_tbname+’” in “’+@fname

+’” /S“’+@servename

+case when isnull(@username,’’)=’’ then ’’

else ’” /U“’+@username end

+’” /P“’+isnull(@password,’’)

+’” /i“’+@fname_in+’”’

exec master..xp_cmdshell @sql

--将数据导入到正式表中

set @sql=’update ’+@tbname

+’ set ’+@fdname+’=b.’+@fdname

+’ from ’+@tbname+’ a,’

+@m_tbname+’ b’

+case isnull(@tj,’’) when ’’ then ’’

else ’ where ’+@tj end

exec(@sql)

--删除数据处理临时表

set @sql=’drop table ’+@m_tbname

end

--删除数据处理应答文件

set @sql=’del ’+@fname_in

exec master..xp_cmdshell @sql

go

/** 导入文本文件

EXEC master..xp_cmdshell ’bcp “dbname..tablename” in c:DT.txt -c -Sservername -Usa -Ppassword’

改为如下,不需引号

EXEC master..xp_cmdshell ’bcp dbname..tablename in c:DT.txt -c -Sservername -Usa -Ppassword’

/** 导出文本文件

EXEC master..xp_cmdshell ’bcp “dbname..tablename” out c:DT.txt -c -Sservername -Usa -Ppassword’

5.Excel导出多种方法总结 篇五

方法一:XML拼接导出

通过stringbuild,将要导出的数据拼接为XML,然后导出。

步骤:

1. 获取数据源

2. 拼xml文件头,给定输出文件格式和编码格式

3. 通过table拼接数据源到xml中

4. 获取导出路径

5. 通过IO流将xml写入,并输出到指定位置

该方法最为简单,但是导出后无法把握内容输出格式(一般为常规格式—HTML)。方法二:Excel对象方法

通过Vs自带的microsoft.Office类创建Excel

步骤:

1. 初始化Excel对象,实例化Excel

2. 定义Application对象,Workbook对象,Worksheet 对象,Range对象

3. 初始化Application对象

4. 创建sheet表,给定表内容格式,5. 绑定数据源,将数据遍历到Excel单元格

6. 给定导出路径导出

7. 异常判断,清空对象,杀掉进程

该方法最为复杂,但是可以直接操作Excel对象,功能丰富,最大却点是创建完成后要处理进程,最大难点是存在Com权限,这对于没有管理员权限的用户难以使用,设置麻烦

方法三:Dataset直接导出

通过Dataset获取数据源,然后拼接到stringbuild可以直接输出

步骤:

1.2.

3.4. 获取数据源 给定输出类型,编码类型 遍历数据 向HTTP输出流中写入取得的数据信息并输出

该方法思路编码都简单,但是在遍历数据时不易处理单元格之间格式而导致,所有数据成一个string输出,并且效率低

方法四:GridView/DataGrid绑定导出

通过GridView或者DataGrid的数据源直接导入到IO中输出

步骤:

1. 初始化GridView、DataGrid

2. 给定GridView、DataGrid样式

3. 绑定GridView、DataGrid数据源

4. 给定输出文件类型和编码类型,文本格式

5. 向HTTP输出流中写入取得的数据信息并输出

6.数据导出申请书 篇六

Microsoft Word和Excel是日常使用的最频繁的办公软件 ,Excel可以用来存储、管理、计算、 分析各种数据文件 , Word则是编辑和管理各种文档的最常用工具, 都拥有着极大的用户群体。在信息系统的使用过程中, 用户经常会要求将在Excel中保存的各种格式的数据导入到数据库中, 或将数据库中的数据导出到Excel表格中, 也会遇到将数据导出成固定Word格式的报表文档的需求。这就需要在应用程序中添加这些常用功能来满足用户的需求。

在C# 中, Ado.net是与数据源交互的.net技术。它是一组用于与数据源进行交互的面向对象的类库。通常情况下, 数据源是数据库, 但它同样也能够是文本文件、Excel表格或者XML文件。有许多的Data Provider, 它将允许与不同的数据源交流———取决于它们所使用的协议或者数据库。然而无论使用什么样的Data Provider, 开发人员将使用相似的对象与数据源进行交 互。SqlConnection对象管理 与数据源 的连接。SqlCommand对象允许开发人员与数据源交流并发送命令给它。还有读取数据的SqlDataReader等。

此外, 对Excel和Word的操作也是必不可少的一部分。一方面, 在C# 里, Microsoft.Office.Interop.Excel命名空间提供了一整套使用C# 语言操作Excel表格的接口和类, 使用它, 程序员可以通过C# 语言来创建Excel文件, 并能够读取、写入和更新Excel中的内容。因此, 基于此可以实现对数据库中数据导入导出的操作。另一方面, Microsoft.Office.Interop.Word命名空间提供了一整套使用C# 语言操作Word文档的接口和类, 使用它, 程序员可以通过C# 语言来创建Word文件, 并能够读取、写入和更新Word中的内容。因此, 基于此可以实现对Word模板填充数据和动态导出的功能。

在飞机维修保障信息系统 (Msiss) 中经常遇到导入导出大量数据和制作固定模板的Word报表的需求, 因此实现这两个功能成为完善系统所必须完成的工作。下面介绍实现这些功能的具体方法。

2Excel 中数据导入 SQL-Server 数据库

在进行数据导入操作时, Excel表格的第一行是与数据库所对应的各字段名, 需要导入的数据是从第二行开始的具体数据。首先, 为了确定导入的数据对应的是数据库中的哪张表, 需要校验文件名参数。在此对用户规定Excel文件的名称必须以数据库中的表名来命名。如飞机机件表对应的Excel文件的名称为: Ctlg_Part.xls。然后, 要取得与Excel表格的连接:

其次, 需要加载目标源信息, 即将数据库中对应表的数据读到Datatable中, 此处用到Ado.net的相关技术:

紧接着, 需要加载导入源信息, 即将Excel文件中的数据读到Datatable中:

有了两部分数据的内容就可以在导入时进行查重的操作。在进行插入数据库操作前, 需要先判断插入的数据是否重复, 如果重复, 则可以将覆盖或者不覆盖已经存在的数据作为系统配置项供用户自行设置。判断的方法是判断数据项的主键记录是否与Excel中对应的数据重复, 如果相同则修改数据库中的记录, 否则直接插入数据。这里讨论不覆盖的方法:

3SQL-Server 数据库中数据导出到 Excel

将数据库中的数据导出到Excel中, 除了将数据导出至Excel, 还需要将字段名导出放在表格中的第一列。

查询表中的数据:

执行查询 语句 , 并返回一 个用于查 看查询结 果的SelectedData对象:

若要将数据库中的数据导出到Excel表, 需要先根据导出路径创建Excel workbook (工作簿) 和sheet (工作表), 使用Microsoft.Office.Interop.Excel中的Application, Workbooks和Worksheet接口来创建Excel Workbook和Worksheet:

创建好工作表后就可以对Excel表格的格式进行设置:

最后就是将从数据库中查询的数据导入到Excel表格中, 限于篇幅, 在此只给出一行典型代码:

显然, 要完成Word模板的动态数据导出, 难点就在于如何将从数据库中读取到的数据填充到Word文件中, 以什么样的方式和格式至关重要。主要讨论的包含两部分内容, 第一, 是设置Word文档的属性集合, 所谓的属性集合, 通俗点来讲, 就是每个被填充的部分前面都有一个名字与之一一对应。这样, 只需要将数据一一填充到与之对应的属性名之后即可。第二, 便是日常经常用到的表格的内容, 通过设置表格的行数, 列数, 将与之对应的数据填充到对应的位置即可。

在这两种填充过程中需要用到的关键技术分别是C# 中的Hashtable和Datatable。前者将键映射到相应的值 , 而后者则是直接将从数据库中读取出来的数据放在一个数据表中。

在系统中定义一个“TaskCardExporter.cs”文件, 在其中定义两个C# 类, 分别是: “TaskCardExporter”和“WordBroker”, 如表1所示。限于篇幅, 只给出其中核心的代码。

类WordBroker的核心代码包含了它的几个核心的方法, 分别如下:

类TaskCardExporter的核心代码如下:

4结语

通过以上方法, 使用C# 语言, 在.Net开发环境下, 实现了数据库中的数据与Excel文件的导入导出以及利用Word模板动态导出数据, 其中Excel表格各单元格的格式也可以做相应的调整, 而Word文档也能根据相关API对字体和格式作相应的调整, 关键是对相关API的熟练运用。

摘要:在信息系统的日常使用过程中,常常需要将数据库中的数据进行导入导出处理。Excel和Word是最常用的两种载体。一方面,将具有固定格式的数据通过Excel表格与数据库进行交互将大大节省手工录入的时间,另一方面,将数据库中的数据填充Word模板动态输出数据也满足了各种不同的报表需求。介绍在C#中实现这两大常用功能的思路和方法,同时给出了主要的程序代码,及其在飞机维修保障信息系统中的应用。

关键词:数据导入导出,Word模板,Excel软件,数据库

参考文献

[1]张明辉,王清心,王正玉.基于Java Excel API的数据库数据导入导出方法研究与实现[J].现代电子技术,2012,35(4):45-47.

[2]刘永立,周莉.Java操作Word模板实现动态数据输出[J].电脑编程技巧与维护,2010,11:46-51.

7.数据导出申请书 篇七

点击“主菜单→联系人→导入好友列表”,或在好友列表空白处点击鼠标右键,在菜单中选择“导入好友列表”,打开导入好友列表向导(图1)。

图1导入好友列表向导

一、从飞信通讯录导入

1. 选择从飞信通讯录导入,系统将自动为您导入通讯录中带有手机号信息的联系人。选择需要导入的联系人(图2),点击“下一步”。

图2选择联系人

输入您的姓名,选择将联系人添加到的组,输入验证字符(图3),点击“下一步”。

图3填写申请

导入完毕,显示导入结果。点击“完成”按钮,关闭导入好友向导。

二、从Outlook联系人信息导入

选择从Outlook联系人信息导入,点击“下一步”按钮,开始读取联系人信息。选择想要导入的联系人,点击“下一步”按钮(图4)。

图4

输入您的姓名,选择将联系人添加到的组,输入验证字符(图5),点击“下一步”。

图5发送添加好友申请

导入完毕,显示导入结果,

点击“完成”(图6),关闭导入好友列表向导。

图6导入结果

三、从包含联系人信息文件导入。

支持从CSV,VCF、Fetion联系人格式文件导入。打开导入好友向导,首先选择“从包含联系人信息的文件导入”,再选择导入的文件,点击“下一步”按钮即可(图7)。

图7选择导入文件

导出好友

您可以将自己的好友列表导出为CSV文件或Fetion联系人文件:

点击“主菜单→联系人→导出好友列表”,或在好友列表空白处点击鼠标右键,在菜单中选择“导出好友列表”,打开导出好友列表向导(图8)。

图8导出好友列表

选择导出格式,选择要导出的联系人,点击“下一步”(图9)。

图9选择要导出的联系人

选择您要保存的路径,点击“下一步”开始导出(图10)。

图10选择导出的路径

导出完成,点击“完成”关闭导出向导(图11)。

8.数据导出申请书 篇八

GridView控件以表格的形式显示数据,并能对数据的排序、分页、选择、编辑和删除等功能。如果用SqlDataSource作用数据源控件,几乎不用写任何代码就可以完成这些功能。也可以用代码提供数据源。

将GridView控件的列转换成模板,完成用户自定义数据的显示,结合事件模型,可以完成用户自定义的复杂的事件。同时系统还提供了数据显示的“自动套用格式”,系统内置了十几种内部格式,当然用户也可以自定义格式。

2 GridView控件绑定数据

GridView控件可以显示数据源中的数据。通过SqlDataSourcer控件提供数据源或者用代码的方式获取数据源,GridView控件可以自动的显示数据源中数据,也可以按用户指定的方式或格式显示数据。

利用SQL Server 2005数据库管理系统完成数据库的新建和数据的录入,用GridView控件进行显示数据,最后将GridView控件中的数据导出到Excel。

2.1新建数据库

新建student数据库,在student数据库中新建stuExam数据表,stuExam数据表包括学生的学号、班级、姓名、语文、数学、英语成绩,并录入几条记录。)

2.2设计页面

在页上添加一个GridView控件和一个Button控件。设置GridView控件的ID为grvStu。设置Button控件Text=“导出到Excel”,ID为btnToExcel。

2.3在web.config配置文件中配置连接字符串

页面要访问数据库,先在web.config配置文件<connectionStrings>节点中

配置连接字符串。

2.4编写代码

在页面的后台cs文件中编写代码,获取student数据库stuExam表中的数据,并对GridView控件进行绑定。代码如下。

2.5数据的编辑

GridView控件按数据表中定义数据字段的顺序显示数据。如果自定义显示的字段,则设置GridView的Auto GenerateColumns=“False”。通过编辑列,将数据列重新绑定。“源”视图代码如下。

3将GridV iew中的数据导出到Excel

给按钮btnToExcel添加单击事件,编写代码实现将数据导出到Excel,并重写Page对象的VerifyRendering InServerForm方法。

3.1给btnToExcel添加Click事件,并编写事件代码

3.2改写VerifyRenderingInServerForm方法

VerifyRenderingInServerForm()中虽然不写任何代码,要一定重写,才能保证数据正确的导出。

3.3实现导出数据功能

保存页面并运行,单击按钮打开“打开对话框”。即可完成数据的导出功能。

4结语

在实际应用中将GridView控件中的数据导出到Excel文件的应用很多。本文介绍了GridView控件的基本使用方法,以及用代码的方式实现数据的绑定,并将数据导出到Excel文件中的方法与详细步骤。

参考文献

[1]ASP.NET从入门到精通.明日科技清华大学出版社出版时间:2012年9月.

[2]张正礼.ASP.NET 4.0网站开发与项目实战.清华大学出版出版时间:2012-04-01.

9.数据导出申请书 篇九

偶然间, 笔者想到既然能用Microsoft Excel 2007电子表格处理XML文件, 那么也许Microsoft Access 2007数据库也能处理XML数据, 于是试了一下, 果然成功, 且过程十分简单, 现将该方法介绍如下。

一、利用Microsoft Access2 0 0 7 数据导入功能将被审计单位提供的XML格式财务数据导入Access, 还原成一个完整的财务数据库

1.在Microsoft Access 2007中新建一个Access数据库XXGA.accdb, 鼠标右键点击右边“表1:表”→“导入 (M) ”→“XML文件 (M) ”, 选择要导入的XML文件“公共档案类”, 将其包含的文件全部导入Access数据库XXGA.accdb。

2.点击“创建”→“表”新建表, 按 (一) 步骤导入“总账类”全部文件。

二、Microsoft Access 2007数据库升迁

XML数据转换完成后, 利用Microsoft Access 2007据库升迁功能, 将Microsoft Access 2007数据库XXGA.accdb升迁到SQL Server 2008 R2中。具体步骤如下:

1.更改安全设置。点击“安全警告已禁用了数据库的某些内容”后的“选项”按钮, 点击“启用此内容”更改安全设置。

2.点击工具栏上的“SQL Server”按钮, 启动数据库升迁向导。

3.选择 (或输入) SQL数据库服务器名称、登录账户、密码和升迁后的SQL Server数据库名称 (XXGA2014) 。

4.按>>按钮, 将可用表全部选择到“导出SQL Server”中, 点击“下一步”完成数据升迁。

需要注意的是, 在升迁Microsoft Acess 2007数据库前要关闭所有已打开的数据表, 否则会出现“任何数据库对象处于打开状态时’升迁向导’均无法运行。请关闭打开的对象并重试”如下错误提示信息:

三、SQL数据整理与AO数据采集

完成Access数据库升迁后, 即可启动SQL Server 2008 R2, 对升迁后的数据库XXGA2014进行数据整理, 重点检查科目表、科目余额表有无编码重复情况, 科目余额表各级科目余额是否齐全, 凭证表、余额表借贷是否平衡;以及时间、金额等字段类型是否正确。

科目编码重复与各级科目余额不全, 是造成AO账表重建失败的主要原因之一。如果各级科目余额不全, 需要按照末级科目→一级科目的顺序逐级汇总。有关数据整理语句如下:

(一) 科目表

select科目编号, 科目名称, 余额方向into XXGA2014.dbo.审计_会计科目表from XXGA2014.dbo.会计科目

(二) 凭证表

SELECT会计年度, 会计期间号as会计期间, left (记账凭证日期, 4) +'-'+substring (记账凭证日期, 5, 2) +'-'+right (记账凭证日期, 2) as凭证日期, case when记账凭证类型编号='JZ'then'记账'end as凭证类型, 记账凭证编号as凭证编号, 记账凭证行号as分录号, 记账凭证摘要as摘要, 科目编号, 辅助项1编号as辅助核算代码, cast (借方本币金额as decimal (18, 2) ) as借方金额, cast (贷方本币金额as decimal (18, 2) ) as贷方金额, 附件数, 制单人, 审核人, 记账人, 记账标志, 作废标志into XXGA2014.dbo.审计_会计凭证表FROM XXGA2014.dbo.记账凭证where记账标志=1 and作废标志=0 order by会计年度, 会计期间号, left (记账凭证日期, 4) +'-'+substring (记账凭证日期, 5, 2) +'-'+right (记账凭证日期, 2)

(三) 余额表

1. 原始数据转换

SELECT会计年度, 会计期间号as会计期间, 科目编号, case when期初余额方向='借'then cast (期初本币余额as decimal (18, 2) ) else'0.00'end as期初借方余额, case when期初余额方向='贷'then abs (cast (期初本币余额as decimal (18, 2) ) ) else'0.00'end as期初贷方余额into#科目余额FROM XXGA2014.dbo.科目余额及发生额where会计期间号='1'order by会计年度, 会计期间号, 科目编号

2. 查看科目编码长度及重复情况

select distinct会计年度, LEN (科目编号) as码长from#科目余额group by会计年度, 科目编号order by会计年度, LEN (科目编号) ---科长分别为目6、8、10、12共4级, 无1级科目

select distinct会计年度, 科目编号, count (科目编号) as次数from#科目余额group by会计年度, 科目编号having count (科目编号) >1 order by会计年度, 科目编号

(1) 查询末级明细科目, 生成5级科目余额

SELECT会计年度, 科目编号, sum (期初借方余额) as期初借方余额, sum (期初贷方余额) as期初贷方余额into XXGA2014.dbo.审计_科目余额表FROM#科目余额group by会计年度, 科目编号order by会计年度, 科目编号

(2) 汇总5级科目, 生成4级科目余额

insert into XXGA2014.dbo.审计_科目余额表select会计年度, left (科目编号, 10) as科目编号, sum (期初借方余额) as期初借方余额, sum (期初贷方余额) as期初贷余额from XXGA2014.dbo.审计_科目余额表where len (科目编号) =12group by会计年度, left (科目编号, 10) order by会计年度, left (科目编号, 10)

(3) 汇总4级科目, 生成3级科目余额

insert into XXGA2014.dbo.审计_科目余额表select会计年度, left (科目编号, 8) as科目编号, sum (期初借方余额) as期初借方余额, sum (期初贷方余额) as期初贷余额from XXGA2014.dbo.审计_科目余额表where len (科目编号) =10group by会计年度, left (科目编号, 8) order by会计年度, left (科目编号, 8)

(4) 汇总3级科目, 生成2级科目余额

insert into XXGA2014.dbo.审计_科目余额表select会计年度, left (科目编号, 6) as科目编号, sum (期初借方余额) as期初借方余额, sum (期初贷方余额) as期初贷余额from XXGA2014.dbo.审计_科目余额表where len (科目编号) =8group by会计年度, left (科目编号, 6) order by会计年度, left (科目编号, 6)

(5) 汇总2级科目, 生成1级科目余额

insert into XXGA2014.dbo.审计_科目余额表select会计年度, left (科目编号, 4) as科目编号, sum (期初借方余额) as期初借方余额, sum (期初贷方余额) as期初贷余额from XXGA2014.dbo.审计_科目余额表where len (科目编号) =6group by会计年度, left (科目编号, 4) order by会计年度, left (科目编号, 4)

(四) 辅助核算信息

由于各单位辅助核算设置不一致, 因此难形成统一的转换脚本。以下脚本仅供参考。

1. 辅助信息

SELECT distinct档案名称as辅助类别, 档案值编码as辅助代码, 档案值名称as辅助名称into XXGA2014.dbo.审计_辅助信息表FROM XXGA2014.dbo.自定义档案项a left join XXGA2014.dbo.自定义档案值b on a.档案编码=b.档案编码order by档案值编码。

2. 辅助余额表

SELECT会计年度, 会计期间号, 科目编号, 辅助项编号as辅助代码, 期初余额方向, cast (期初本币余额as decimal (18, 2) ) as期初余额into辅助余额表FROM XXGA2014.dbo.科目余额及发生额。

3. 辅助凭证

SELECT会计年度, 会计期间号, cast (substring (记账凭证日期, 1, 4) +'-'+substring (记账凭证日期, 5, 2) +'-'+substring (记账凭证日期, 7, 2) as DATE) as记账凭证日期, 记账凭证类型编号, 记账凭证编号, 记账凭证行号, 科目编号, 记账凭证摘要, 辅助项编号, cast (借方本币金额as decimal (18, 2) ) as借方金额, cast (贷方本币金额as decimal (18, 2) ) as贷方金额, 附件数, 制单人, 审核人, 记账人into辅助凭证表FROM XXGA2014.dbo.记账凭证where记账标志=1 and作废标志=0

10.何为导入导出仪及其使用感受 篇十

现代社会忙碌的生活节奏,令女性承担着巨大的压力。随着年纪的增加,岁月的痕迹慢慢的爬上了脸部,护肤品摆满了梳妆台,可还是改善不了皮肤,每天化妆又浪费很多的时间,这可怎么办呢? 很多人都会选择快捷的美容方式,光子嫩肤紧致肌肤、整容等等。对于我们普通人来说,经常能看到接触到的美容法就是光子嫩肤,光子嫩肤让肌肤变得清爽、年轻、健康有光泽。可是,其价位都比较高少则一两千一次、多则五六千,实在让我们这些爱美的普通女性望而生畏!

在我正苦恼的时候卡酷尚离子导入导出美容仪出现啦!它满足了我总是觉得洗脸卸妆不彻底不干净,皮肤毛孔不够清透,护肤品吸收效果都不太理想的需要。它的两种功能,导入、导出、性价比相对去美容院来说是不错,自己动手在家就可以导入光疗。

先来说说导出的功能吧,往上推就会亮起红灯,现在导出模式开启哦!平时我们洗脸无法做到彻底清洁,特别是那些彩妆重金属残留物质。它的导出功能正好满足了彻底清洁脸部的需求。诸位美女要注意一个小细节哦,导出一般要配合的不是卸妆油,因为油性的护肤品和电离子无法分解,是产生不了作用的。最好是配合卸妆水或者爽肤水,这样才能把脸上的脏东西全部导出来!

下面介绍导入方式,往下推就亮起绿灯了,现在是深层渗透式的导入,可以导入至皮肤的深层组织。使用导入的过程,感觉温温的,非常舒服,保养品的吸收也确实比平时好。除此之外的其他功能和作用我还在慢慢摸索中,希望发挥她的极致功效!皮肤更新周期是28天,希望用28天后,皮肤变得更好!

值得注意的是:

1、使用中会若感到微微针刺感觉,这是正常现象。

2、使用前后请清洁接触头。

3、若长时间不用,请把电池取出,并妥善保管。注意事项:

1、皮肤有外伤或组织发炎的部位请勿按摩。

2、不要让幼小儿童按摩或按摩于幼小儿童身体部位。

上一篇:庆六一班级活动方案下一篇:31政府的职能导学案