当前位置:文档之家› SAP日记-ABAP导出EXCEL的两种方式(OLE_DOI)

SAP日记-ABAP导出EXCEL的两种方式(OLE_DOI)

SAP日记-ABAP导出EXCEL的两种方式(OLE_DOI)
SAP日记-ABAP导出EXCEL的两种方式(OLE_DOI)

SAP日记——ABAP导出EXCEL的两种方法

提到OLE&DOI,我们不得不先说说两者这间的关系。

OLE是SAP早期与微软Office集成的工具,而DOI是它的替代技术。在实际项目中使用到OLE&DOI的场合多是EXCEL表格的读入或是填制。有些需要自动画表格及填数据,有的只是要求在原有的模版上填制数据。根据不同的场合可以选用不同的技术。(有些公司用EXCEL的打印来替代FORM)

下面主要讲一下,OLE&DOI关于EXCEL的处理。

OLE实际上是类EXCEL中VBA的一种写法。有一种简单的方法,就是你可

以在EXCEL中把要实现的动作录制成宏,然后根据宏的代码把它改成OLE。OLE同时也支持直接调用EXCEL宏程序(没有禁宏的前提下)。

DOI完全用类实现。特点是,你不用再去记那些繁琐的VBA语言了,DOI都

给你包装成类的方法了。同时作为一个控件,已经集成在了SAP的GUI中了,你就可以在SAP的屏幕中写Office的东西了,不用再跳出一个窗口来了,减少一些误操作。当然DOI也是支持调用EXCEL宏程序的,前提是宏没有被禁。

两种方法在实际项目中都有使用,有时候就要看实施顾问擅长于那个了,当然本人还是推荐用新的,但也不要丢了老的(有时候要维护一些老程序或许用得着)。因为两种在技术上并没有什么难点,只有熟练度的差别。我可记不住那么多的方法和类名,一般常备两份模版两份手册在身,边写边查,在项目进度之内完工就OK。

我读取EXCEL还是比较简单的,这里不再讲了。既然,EXCEL的填制有自

动画表格和填制模版之分,而自动画表格,显然就是什么都要自己写,工程量比较大,需要大量的调试(字体、表格宽度、颜色等),没有什么捷径,捧着手册慢慢写吧!对于填制模版,那自然要将模版上传到服务器,程序执行的时候再下载使用。我使用的一般有3中:

1. FTP

2. T-code SMW0

3. T-code OAOR

FTP顾名思义,就是把文件传到FTP上,然后在运行的时候,直接输入文件

服务器的路径,把模版在本地打开填制。

T-code SMW0。实际上这是用于Web的一种文件存储,不过我们也可以借用来存储模版。当然建立之前要维护相应的MIME types(先把文件的类型要注册),方可上传此类型的文件。

一、OLE

ABAP通过OLE的方式导出EXCEL,由于数据时一条一条的生成,速度较慢,不适合内表数据较多的场景使用,但是其实现起来比较简单。

REPORT ZTEST1.

TABLES: ZWYM.“自定义的一张表

TYPE-POOLS:SLIS,ole2.“需要用到OLE2

DATA: excel TYPE ole2_object,

workbook TYPE ole2_object,

sheet TYPE ole2_object,

cell TYPE ole2_object.

DATA: application TYPE ole2_object,

book TYPE ole2_object,

books TYPE ole2_object.

DATA: ole_book TYPE ole2_object.

DATA: FILENAME(100) TYPE C VALUE 'D:\data\test.xls'.“定义文件导出的路径

"DATA: GT_ITAB LIKE TABLE OF ZWYM WITH HEADER LINE.

DATA:BEGIN OF GT_ITAB OCCURS 0,“定义内表

INCLUDE STRUCTURE ZWYM.

END OF GT_ITAB.

SELECTION-SCREEN:BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-001.“查询条件

SELECT-OPTIONS:S_MATNR FOR ZWYM-MATNR.

SELECTION-SCREEN:END OF BLOCK B1.

START-OF-SELECTION.

PERFORM GET_DATA.

END-OF-SELECTION.

PERFORM gen_excel.

FORM GET_DATA.

SELECT * INTO CORRESPONDING FIELDS OF TABLE GT_ITAB FROM ZWYM W HERE MATNR IN S_MATNR.

ENDFORM.“GET_DATA.

FORM gen_excel.

CREATE OBJECT excel 'EXCEL.APPLICATION'.

IF sy-subrc NE 0 .

MESSAGE '不能生成EXCEL对象,检查系统是否安装 MS EXCEL。' TYPE 'E'. STOP.

ENDIF.

SET PROPERTY OF excel 'DisplayAlerts' = 0.

CALL METHOD OF excel 'WORKBOOKS' = workbook .

* Put Excel in background

SET PROPERTY OF excel 'VISIBLE' = 1.

* Create worksheet

SET PROPERTY OF excel 'SheetsInNewWorkbook' = 1.

CALL METHOD OF workbook 'ADD'.

PERFORM gen_item.“此处调用form gen_item显示EXCEL明细

GET PROPERTY OF excel 'ActiveSheet' = sheet.

FREE OBJECT sheet.

FREE OBJECT workbook.

GET PROPERTY OF excel 'ActiveWorkbook' = workbook.

CALL METHOD OF workbook 'SAVEAS'

EXPORTING

#1 = filename“保存路径

#2 = 1.

FREE OBJECT sheet.

FREE OBJECT workbook.

FREE OBJECT excel.

ENDFORM. "gen_excel

FORM gen_item.

CALL METHOD OF excel 'WORKSHEETS' = sheet.

CALL METHOD OF sheet 'ADD'.

FREE OBJECT sheet.

CALL METHOD OF excel 'WORKSHEETS' = sheet

EXPORTING

#1 = 1.

CALL METHOD OF sheet 'ACTIVATE'.

SET PROPERTY OF sheet 'NAME' = 'btdata'.“导出的EXCEL表单名

FREE OBJECT sheet. "OK

DEFINE c_cell.

call method of excel 'CELLS' = cell“定义在excel的位置 1为行 2为列

EXPORTING

#1 = &1

#2 = &2.

END-OF-DEFINITION.

DEFINE s_cell.

set property of cell &1 = &2.“填充值 1为VALUE 2为填充内容

END-OF-DEFINITION.

* 写标题行

c_cell 1 1. s_cell 'VALUE' '物料号'.

c_cell 1 2. s_cell 'VALUE' '工厂'.

c_cell 1 3. s_cell 'VALUE' '网格值'.

c_cell 1 4. s_cell 'VALUE' '产品名称'.

c_cell 1 5. s_cell 'VALUE' '颜色'.

c_cell 1 6. s_cell 'VALUE' '尺码'.

DATA: line TYPE i VALUE 1.

* 写内容行

LOOP AT GT_ITAB.

line = line + 1.

c_cell line 1. s_cell:'NumberFormatLocal' '@','VALUE' GT _ITAB-matnr.

c_cell line 2. s_cell:'NumberFormatLocal' '@','VALUE' G T_ITAB-werks.

c_cell line 3. s_cell:'NumberFormatLocal' '@','VALUE' G T_ITAB-J_3ASIZE.

c_cell line 4. s_cell 'VALUE' GT_ITAB-MAKTX.

c_cell line 5. s_cell:'NumberFormatLocal' '@','VALUE' G T_ITAB-J_3AKORD1.

c_cell line 6. s_cell:'NumberFormatLocal' '@','VALUE' G T_ITAB-J_3AKORD2.

ENDLOOP.

ENDFORM.

二、DOI

ABAP 通过DOI可以处理对EXCEL有特殊要求格式的需求。DOI的功能很强大,关于OLE 和DOI的区别可以参考https://www.doczj.com/doc/b812445692.html,/ecathy@126/blog/static/1651261562010529103946880/的博客内容。DOI实现起来分为两步

1.上载EXCEL模板

TCODE:OAOR

下面的可以不用填写

进去之后如下图:左下角点击“创建”选项卡—>“标准文档类型”—>“Table template”

双击“Table template”弹出文旦导航选择文件

之后在主界面左上角3 会显示上载的模板

excel模板如下

之后就是代码

以下是网上下载的代码

可以运行(需要在SE51上面创建一个编号100的屏幕屏幕里面建一个CONTAINER,SE41创建STATUS “SA1”)

REPORT ZTEST2.

TABLES: T001.

TYPE-POOLS: SLIS,VRM, SBDST, SOI."引入必要的类型组

CONSTANTS DOCUMENT_NAME(30) VALUE 'temp'."模板名字

CONSTANTS INPLACE VALUE 'X'."控制参数,在GUI中显示Excel

DATA: FLAG .

DATA:CONTAINER TYPE REF TO CL_GUI_CUSTOM_CONTAINER,"容器实例CONTROL TYPE REF TO I_OI_CONTAINER_CONTROL,"控制器实例

DOCUMENT TYPE REF TO I_OI_DOCUMENT_PROXY,"文档操作对象

SPREADSHEET TYPE REF TO I_OI_SPREADSHEET,"分隔符对象

ERROR TYPE REF TO I_OI_ERROR,"错误信息

ERRORS TYPE REF TO I_OI_ERROR OCCURS 0 WITH HEADER LINE."错误信息

* spreadsheet interface structures for Excel data input

DATA: RANGEITEM TYPE SOI_RANGE_ITEM.

DATA: RANGES TYPE SOI_RANGE_LIST.

DATA: EXCEL_INPUT TYPE SOI_GENERIC_TABLE.

DATA: EXCEL_INPUT_WA TYPE SOI_GENERIC_ITEM.

DATA: INITIALIZED(1), RETCODE TYPE SOI_RET_STRING.

DATA: ITEM_URL(256)."存放模板的Url

DATA DOCUMENT_TYPE(80)."文档类型

DATA: EXCEL(80) VALUE 'Excel.Sheet'.

DATA: LINE_COUNT TYPE I,

COLUMN_COUNT TYPE I.

DATA: OK_CODE TYPE SY-UCOMM,

SAVE_OK TYPE SY-UCOMM.

CLASS C_OI_ERRORS DEFINITION LOAD.

DATA: BEGIN OF ITAB OCCURS 0.

INCLUDE STRUCTURE T001.

DATA: END OF ITAB.

SELECT-OPTIONS BUKRS FOR T001-BUKRS.

START-OF-SELECTION.

PERFORM GETDATA.

CALL SCREEN 100.

*&---------------------------------------------------------------------*

*& Form getdata

*&---------------------------------------------------------------------*

* text

*----------------------------------------------------------------------*

* --> p1 text

* <-- p2 text

*-------------------------------------------------------------

---------*

FORM GETDATA .

SELECT *

FROM T001

INTO TABLE ITAB

WHERE BUKRS IN BUKRS.

ENDFORM. " getdata

*&------------------------------------------------------------

---------*

*& Module STATUS_0100 OUTPUT

*&------------------------------------------------------------

---------*

* text

*-------------------------------------------------------------

---------*

MODULE STATUS_0100 OUTPUT.

SET PF-STATUS 'SA1'.

IF FLAG = SPACE .

PERFORM CREATE_BASIC_OBJECTS USING '' '' '' '' DOCUMENT_NAME. PERFORM OUTPUT_TO_EXCEL.

ENDIF.

ENDMODULE. "STATUS_0100 OUTPUT

*&------------------------------------------------------------

---------*

*& Module USER_COMMAND_0100 INPUT

*&------------------------------------------------------------

---------*

* text

*-------------------------------------------------------------

---------*

MODULE USER_COMMAND_0100 INPUT.

FLAG = 'X'.

SAVE_OK = OK_CODE.

CLEAR OK_CODE.

CASE SAVE_OK.

WHEN 'CANCLE' .

IF NOT DOCUMENT IS INITIAL.

CALL METHOD DOCUMENT->CLOSE_DOCUMENT."关闭文档

FREE DOCUMENT.

ENDIF.

IF NOT CONTROL IS INITIAL.

CALL METHOD CONTROL->DESTROY_CONTROL.

FREE CONTROL.

ENDIF.

LEAVE PROGRAM.

WHEN 'BACK' .

IF NOT DOCUMENT IS INITIAL.

CALL METHOD DOCUMENT->CLOSE_DOCUMENT.

FREE DOCUMENT.

ENDIF.

IF NOT CONTROL IS INITIAL.

CALL METHOD CONTROL->DESTROY_CONTROL.

FREE CONTROL.

ENDIF.

SET SCREEN 0. " quit the program

"set screen 1000.

ENDCASE.

ENDMODULE. " USER_COMMAND_0100 INPUT

*&---------------------------------------------------------------------*

*& Form CREATE_BASIC_OBJECTS

*&---------------------------------------------------------------------*

* text

*----------------------------------------------------------------------*

* -->P_APP_NAME text

* -->P_CLASSNAME text

* -->P_CLASSTYPE text

* -->P_OBJ_KEY text

* -->P_DOCNAME text

*----------------------------------------------------------------------*

FORM CREATE_BASIC_OBJECTS USING P_APP_NAME

P_CLASSNAME

P_CLASSTYPE

P_OBJ_KEY

P_DOCNAME.

CHECK INITIALIZED IS INITIAL.

* 获取SAP DOI的控制器接口

CALL METHOD

C_OI_CONTAINER_CONTROL_CREATOR=>GET_CONTAINER_CONTROL IMPORTING

CONTROL = CONTROL

ERROR = ERROR.

* check no errors occured

CALL METHOD ERROR->RAISE_MESSAGE

EXPORTING

TYPE = 'E'.

"实例化容器实例

CREATE OBJECT CONTAINER

EXPORTING

CONTAINER_NAME = 'CONTAINER'.

DATA L_APP_NAME(200).

IF P_APP_NAME IS INITIAL.

L_APP_NAME = 'TEST'.

ELSE.

L_APP_NAME = P_APP_NAME.

ENDIF.

"初始化控制器的接口

CALL METHOD CONTROL->INIT_CONTROL

EXPORTING

R3_APPLICATION_NAME = L_APP_NAME

INPLACE_ENABLED = INPLACE

INPLACE_SCROLL_DOCUMENTS = 'X'

PARENT = CONTAINER

REGISTER_ON_CLOSE_EVENT = 'X'

REGISTER_ON_CUSTOM_EVENT = 'X'

NO_FLUSH = 'X'

IMPORTING

ERROR = ERRORS.

* save error object in collection

APPEND ERRORS.

CLEAR ITEM_URL.

"定义BDS实例变量,用于设置文档信息

DATA: BDS_INSTANCE TYPE REF TO CL_BDS_DOCUMENT_SET.

DATA: DOC_SIGNATURE TYPE SBDST_SIGNATURE,

WA_DOC_SIGNATURE LIKE LINE OF DOC_SIGNATURE,

DOC_COMPONENTS TYPE SBDST_COMPONENTS,

DOC_URIS TYPE SBDST_URI,

WA_DOC_URIS LIKE LINE OF DOC_URIS.

*以下三个值为Tcode:OAOR里面新建模板文件的参数

DATA: DOC_CLASSNAME TYPE SBDST_CLASSNAME VALUE 'HRFPM_EXCEL_ST ANDARD',

DOC_CLASSTYPE TYPE SBDST_CLASSTYPE VALUE 'OT',

DOC_OBJECT_KEY TYPE SBDST_OBJECT_KEY VALUE 'TEMP'.

WA_DOC_SIGNATURE-PROP_NAME = 'DESCRIPTION'.

DOCUMENT_TYPE = EXCEL.

WA_DOC_SIGNATURE-PROP_VALUE = P_DOCNAME."赋给文档名字

APPEND WA_DOC_SIGNATURE TO DOC_SIGNATURE."DOC_SIGNATURE存储了文档信息

CREATE OBJECT BDS_INSTANCE.

CALL METHOD BDS_INSTANCE->GET_INFO"获取文档信息

EXPORTING

CLASSNAME = DOC_CLASSNAME

CLASSTYPE = DOC_CLASSTYPE

OBJECT_KEY = DOC_OBJECT_KEY

CHANGING

COMPONENTS = DOC_COMPONENTS

SIGNATURE = DOC_SIGNATURE.

CALL METHOD BDS_INSTANCE->GET_WITH_URL"获取文档的url地址放到DOC_URIS中

EXPORTING

CLASSNAME = DOC_CLASSNAME

CLASSTYPE = DOC_CLASSTYPE

OBJECT_KEY = DOC_OBJECT_KEY

CHANGING

URIS = DOC_URIS

SIGNATURE = DOC_SIGNATURE.

FREE BDS_INSTANCE."释放该对象

READ TABLE DOC_URIS INTO WA_DOC_URIS INDEX 1.

ITEM_URL = WA_DOC_URIS-URI."获取对象的地址

* 告诉SAP DOI容器开辟一个Excel策略

CALL METHOD CONTROL->GET_DOCUMENT_PROXY

EXPORTING

DOCUMENT_TYPE = 'Excel.Sheet'

NO_FLUSH = 'X'

IMPORTING

DOCUMENT_PROXY = DOCUMENT

ERROR = ERRORS.

APPEND ERRORS.

* 根据模板地址打开Excel文件

CALL METHOD DOCUMENT->OPEN_DOCUMENT

EXPORTING

OPEN_INPLACE = INPLACE

DOCUMENT_URL = ITEM_URL.

DATA: HAS TYPE I.

CALL METHOD DOCUMENT->HAS_SPREADSHEET_INTERFACE

EXPORTING

NO_FLUSH = ''

IMPORTING

IS_AVAILABLE = HAS

ERROR = ERRORS.

APPEND ERRORS.

"获取模板文档的表格分割器接口给SPREADSHEET

CALL METHOD DOCUMENT->GET_SPREADSHEET_INTERFACE

EXPORTING

NO_FLUSH = ' '

IMPORTING

SHEET_INTERFACE = SPREADSHEET

ERROR = ERRORS.

APPEND ERRORS.

*激活第一个sheet

CALL METHOD SPREADSHEET->SELECT_SHEET

EXPORTING

NAME = '表整理'

* NO_FLUSH = ' '

IMPORTING

ERROR = ERRORS.

* RETCODE =

.

APPEND ERRORS.

" LOOP AT ERRORS.

" CALL METHOD ERRORS->RAISE_MESSAGE

" EXPORTING

" TYPE = 'E'.

"ENDLOOP.

FREE ERRORS.

INITIALIZED = 'X'.

ENDFORM. "CREATE_BASIC_OBJECTS

*&---------------------------------------------------------------------*

*& Form output_to_excel

*&---------------------------------------------------------------------*

* fill the EXCEL sheet

*-------------------------------------------------------------

---------*

FORM OUTPUT_TO_EXCEL.

DATA NUM TYPE I VALUE 0.

LOOP AT ITAB.

NUM = SY-TABIX + 2.

PERFORM FILL_CELL USING NUM 1 ITAB-BUKRS."行列值

PERFORM FILL_CELL USING NUM 2 ITAB-SPRAS.

PERFORM FILL_CELL USING NUM 3 ITAB-BUTXT.

ENDLOOP.

ENDFORM. "output_to_excel

*&---------------------------------------------------------------------*

*& Form FILL_CELL

*&---------------------------------------------------------------------*

* text

*----------------------------------------------------------------------*

* -->I text

* -->J text

* -->VAL text

*----------------------------------------------------------------------*

FORM FILL_CELL USING I J VAL.

DATA: COLUMNS_NUMBER TYPE I,

ROWS_NUMBER TYPE I.

COLUMNS_NUMBER = 1.

ROWS_NUMBER = 1.

CALL METHOD SPREADSHEET->INSERT_RANGE_DIM

EXPORTING

NAME = 'cell'

NO_FLUSH = 'X'

TOP = I

LEFT = J

ROWS = ROWS_NUMBER

COLUMNS = COLUMNS_NUMBER

IMPORTING

ERROR = ERRORS.

APPEND ERRORS.

REFRESH: RANGES, EXCEL_INPUT.

RANGEITEM-NAME = 'cell'.

RANGEITEM-COLUMNS = 1.

RANGEITEM-ROWS = 1.

APPEND RANGEITEM TO RANGES.

EXCEL_INPUT_WA-COLUMN = 1.

EXCEL_INPUT_WA-ROW = 1.

EXCEL_INPUT_WA-VALUE = VAL.

APPEND EXCEL_INPUT_WA TO EXCEL_INPUT.

* set data

CALL METHOD SPREADSHEET->SET_RANGES_DATA EXPORTING

RANGES = RANGES

CONTENTS = EXCEL_INPUT

NO_FLUSH = 'X'

IMPORTING

ERROR = ERRORS.

APPEND ERRORS.

CALL METHOD SPREADSHEET->FIT_WIDEST EXPORTING

NAME = SPACE

NO_FLUSH = 'X'.

REFRESH: RANGES, EXCEL_INPUT. ENDFORM. "fill_cell

最后显示结果

相关参考:

1.https://www.doczj.com/doc/b812445692.html,/s/blog_4d1570de0100rsxp.html

2.https://www.doczj.com/doc/b812445692.html,/link?url=SrSs_HPDwgVDw4l7p_YoO21bEymUKxDxQlxQ59

M80QWj6P4-OyJtEHhGB-0hxahXI8HiL_OKTi6gDfK1uHiSRstKwPHDYbsobyt7dZQGdU e

3https://www.doczj.com/doc/b812445692.html,/uid-9308264-id-2005222.html

4 https://www.doczj.com/doc/b812445692.html,/VerySky/articles/3040097.html

Java实现Excel数据导入和导出的研究与应用

Java实现Excel数据导入导出的研究与应用 王晶晶 北京邮电大学网络教育学院(100088) E-mail:bolalisi_double@https://www.doczj.com/doc/b812445692.html, 摘要:Excel能够通过功能强大的工具将杂乱的数据组织成有用的信息,然后分析、交流和共享所得到的结果。很多系统由于存在着大量需要处理的数据,Excel本身强大的功能使得它成为处理分析这些数据首选的工具。随着Java语言成为越来越多系统的开发语言,利用Java进行Excel的数据导入导出在很多系统中都发挥着重要的作用,本文主要介绍了Jxl API的主要功能,并结合实例探讨了利用Jxl API操作Excel数据的导入和导出。 关键字:Java;Excel; Jxl API;数据导入导出 中图分类号:TP312文献标识码:A 1. 引言 MS的电子表格(Excel)是Office的重要成员,是保存统计数据的一种常用格式。在一个Java应用中,将一部分数据生成Excel格式,是与其他系统无缝连接的重要手段。在远程网络教学系统中,利用Excel表格统计学生的作业考试情况信息,便于老师了解学生的学习情况,分析教学效果,制定教学计划。所以,用Java操作Excel表格,导出相关的信息对于远程网络教育系统有着的很重要的意义。 在开源世界中,有两套比较有影响的API提供Excel数据导入导出的功能,一个是POI,一个是jExcelAPI。本文结合基于J2EE开发的多媒体教学系统中提供的将学生作业信息导出到Excel表格中的实例,详细阐述了利用JAVA开发的jExcelAPI操作excel的方法。 2. Jxl 简介 2.1 Java语言简介 Java语言具有面向对象、与平台无关、安全、稳定和多线程等优良特性,是目前软件设计中极为强大的编程语言[1]。它具有以下一些特点[2]:简单,面向对象,分布式,解释执行,鲁棒,安全,体系结构中立,可移植,高性能,多线程以及动态性。 2.2什么是Jxl Java Excel是一开放源码项目,通过它Java开发人员可以读取Excel文件的内容、创建新的Excel文件、更新已经存在的Excel文件。使用该 API非Windows操作系统也可以通过纯Java应用来处理Excel数据表。因为是使用Java编写的,所以我们在Web应用中可以通过JSP、 Servlet来调用API实现对Excel数据表的访问。 Jxl发布的稳定版本是V2.0,提供以下功能: 从Excel 95、97、2000等格式的文件中读取数据[3]; 读取Excel公式(可以读取Excel 97以后的公式)[3];

图解把EXCEL数据导入到SQL SERVER 2008

实验环境:WIN XP,MS Office Excel2007,Sql Server2008 准备数据:Excel文档:D:\test\重复出修率.xlsx 方法一: 第一步:打开SSMS: 【开始】→【所有程序】→【Microsoft Sql Server2008】→【Sql Server Management Studio】

第二步:连接数据库: 在’对象资源管理器’中点击【连接】→【数据库引擎】登陆服务器 (P.S:如果没有看到’对象资源管理器’,点击左上角的【视图】→【对象管理器】) 第三步:登陆成功后,右击你要导入数据的数据库名,我这里数据库名是’TEST’ 右击【TEST】→【任务】→【导入数据】

这时候会出现一个向导:点击【下一步】 在弹出的窗口中,【数据源】选择:Microsoft Excel; 【Excel文件路径】就选择你本地电脑存放Excel文档的路径,我这里是D:\test\重复出修率.xlsx 【Excel版本】选择Excel2007(可以根据你office的版本,选择其他如Excel2003等等。)选中【首行包含列名称】框,最后点击【下一步】 “首行包含列名称”是指Excel中的首行数据插入数据库后将作为新建表的列名.

在弹出窗口中,【目标】可以采取默认的,【服务器名称】也是一样可以选择身份验证,最后选择你要插入数据到哪个数据库中。 如我这里选的是’TEST’,选好后点击【下一步】

如果就把Excel数据插入一个新表,就选择【复制一个或多个表或视图的数据】 如果想把Excel数据插入到已存在的一张表中,则选择下面的【编写查询以指定要传输的数据】 我这里是选择上面一个,然后点击【下一步】 接着会弹出Excel表中的sheet表名字,如果你没有修改过sheet表名字,则可能显示的是’shee1$’,’shee2$’,’shee3$’等等. 然后你选中你想要导入的哪张表的数据,我这里导入的是【’aug$’】 选中后,右边的【目标】栏位中会出现内容, dbo是指数据库的架构名,aug$只是新建的表名,如果你想修改表明,双击就可以表明进入编辑状态就可以修改了。我这里修改的表名称为:aug_info

导出数据到EXCEL

Private Sub Command1_Click() Dim 文件名称As String 文件名称= "C:\Documents and Settings\Administrator\桌面\Hellod.Doc " Dim uObjDoc As Word.Document Set uObjWord = New Word.Application uObjWord.Documents.Add "Normal", IIf(iMode = 1, True, False) '1、根据"Normal"模板添加一个新的文档[1-创建一个模板,0-创建一个文件] uObjWord.Documents.Save NoPrompt:=True, OriginalFormat:=wdWordDocument '2、设置Word对象为自动保存模式 uObjWord.ActiveDocument.SaveAs 文件名称'3、保存Word文档到文件名称 Set uObjDoc = Nothing End Sub EXCEL用法 Public Function ExporToExcel(strOpen As String) '********************************************************* '* 名称:ExporToExcel '* 功能:导出数据到EXCEL '* 用法:ExporToExcel(sql查询字符串) '********************************************************* Dim Rs_Data As New ADODB.Recordset Dim Irowcount As Integer Dim Icolcount As Integer Dim xlApp As New Excel.Application Dim xlBook As Excel.Workbook Dim xlSheet As Excel.Worksheet Dim xlQuery As Excel.QueryTable With Rs_Data If .State = adStateOpen Then .Close End If .ActiveConnection = Cn .CursorLocation = adUseClient .CursorType = adOpenStatic .LockType = adLockReadOnly .Source = strOpen .Open End With

Excel 数据导入教程

Excel模板数据导入教程 Excel模板数据导入教程 Excel导入模板中的数据既可以直接在我们提供的模板文件中录入,列标题中有红色“(必填)”文字的列必须要填写,其它列根据实际需求可以不填写,换算比率、销售价格、库存数量、成本价这些数字列如果要导入的话,一定是纯数字格式,必须要填写而且不能包括任何汉字或字母。 库存数量与成本价必须是以基本计量单位核算录入,也就是以最小计量单位核算录入。 如果从管家婆、速达等进销存软件中导出到Excel文件,一定要修改导出的Excel文件格式,否则肯定不能正常识别和导入,修改的要求如下: 1、Excel导入模板文件扩展名必须为xls,如果为其它扩展名,必须双击打开模板文件,然后另存为“Excel97-2003工作簿(*.xls)”格式的文件; 2、窗口左下角的工作薄名称必须为“Sheet1”,管家婆或速达导出来的工作薄名称一般为其它名称,必须要修改为Sheet1,请见以下截图; 3、第一行必须为列名,第二行开始必须为要导入的正式数据,请见以下截图;

附上一张标准的导入模板数据截图 本教程只演示怎么导入在我们提供的Excel导入模板中录入的数据,如果从管家婆或速达等进销存软件导出来的数据,导入方式大同小异,只是列名或列的数量不一致而已; 在导入之前一定要关闭要导入的Excel模板文件,否则因为独占模式导致导入时无法识别模板文件中的数据。 产品资料导入 产品资料模板中包括“产品资料基础信息、销售价格、库存记录”3部分内容,需要将同一个产品资料模板文件分3步分别导入,如果有辅助计量单位的销售价格也需要导入,那么需要分4步分别导入。 在导入的模板中如果包括软件中已存在的产品资料记录,一定要在导入窗口将 下拉框选择,这样就不会将相同的记录重复导入到软件中。 第一步:既可以在软件初次使用向导窗口中点击“产品资料导入”按钮,也可以在“基础数据----产品资料”列表窗口点击“Excel导入”菜单,弹出产品资料导入窗口,先选择要导入的Excel模板文件,然后根据要导入的列,按照以下截图设置要导入的列,在第一步中只能导入产品资料的基础数据,销售价格和库存记录在以下步骤中导入。

ABAP_EXCEL导出数据

使用EXCEL导出数据 要完成使用EXCEL导出数据,基本分为两布: 1 建立excel模版 2 在程序中整理要输出的数据,并完成最终的输出 1 建立excel模版 1.1 在本地建立一个excel 设置模版的格式,在本例中,模版格式如下: 1.2 使用Tcode:OROA,将模版导入SAP系统1. 2.1 输入Tcode:OROA

注:其他字段可以不填 1.2.2 导入模版 1.2.2.1 导入模版 Create——>standard.doc.types ——> table template 1.2.2.2 选择要导入的模版

1.2.2.3 输入模版信息——描述和语言 1.2.2.5 导入模版之后,在屏幕左上角会添加模版 2. 程序中整理数据,并调用模版输出2.1 整理数据,并调用屏幕 SELECT * FROM zlhjtest INTO CORRESPONDING FIELDS OF TABLE l_itab_stu. CALL SCREEN0100.

2.2 输出屏幕 2.2.1 输出屏幕之前,调用模版 SET PF-STATUS 'STAN1'. PERFORM create_basic_objects USING'''''''' document_name. PERFORM output_to_excel. 2.2.2 输出屏幕之后,根据用户选择做出反应 实现这些功能的的代码,如下: REPORT zlhjtest_abavn. TYPE-POOLS:slis,vrm,soi. TYPES:BEGIN OF l_hh, BSART LIKE T161-BSART, batxt TYPE t161t-batxt, END OF l_hh. DATA: ok_code TYPE sy-ucomm, save_ok TYPE sy-ucomm. DATA: flag TYPE c, initialized TYPE c, item_url(256) TYPE c, app TYPE vrm_id, excel(80) VALUE'Excel.Sheet', v_title1(60) TYPE c VALUE'制作人:李红娟'. DATA: rangeitem TYPE soi_range_item, ranges TYPE soi_range_list. DATA: excel_input TYPE soi_generic_table, excel_input_wa TYPE soi_generic_item. DATA: document_type(80) TYPE c, container TYPE REF TO cl_gui_custom_container, control TYPE REF TO i_oi_container_control, document TYPE REF TO i_oi_document_proxy, spreadshee TYPE REF TO i_oi_spreadsheet, error TYPE REF TO i_oi_error, errors TYPE REF TO i_oi_error OCCURS0WITH HEADER LINE. DATA: l_itab_stu TYPE TABLE OF t161t, l_wa_stu TYPE t161t.

将IList数据导出至Excel(亲测成功)

将IList数据导出至Excel(亲测成功)public static class ListExportToExcel where T : class { public static Excel.Application m_xlApp = null; private static string filePath = string.Empty; public static void ExportExcel(List list,string savepath,bool isbatch) { if (EmptyJudgment.IListIsData(list)) { if (ValueHelp.IsNullOrEmptyBool(savepath)) { SaveFileDialog s = new SaveFileDialog { Title = "保存Excel文件", Filter = "Excel文件(*.xls)|*.xls", FilterIndex = 1 }; if (s.ShowDialog() == DialogResult.OK) filePath = s.FileName; else return; } else { filePath = savepath; } ListToExcel(list,isbatch); } else { MessM.PromptInfo("无数据可导出!"); return; } } private static void ListToExcel(List list,bool IsBatch) { Excel.Application m_xlApp = new Excel.Application { DisplayAlerts = false,//不显示更改提示 Visible = false };

网页数据如何简单导出excel

https://www.doczj.com/doc/b812445692.html, 网页数据如何简单导出excel 在浏览网页时,遇到我们需要的网页数据时,如文字、图片等,如何能简单的导出到Excel 中,方便在本地电脑中查看和编辑呢?当然是有办法的啦!下面就为大家介绍几种简单快速的将网页数据导出到Excel的方法,大家可以灵活运用。 一、通过浏览器导出网页数据 具体操作:打开某网页后,右键点击网页空白处,在下拉列表中选择“另存为”,然后在弹出的保存窗口中选择保存类型为“网页全部”。选择保存位置后确定,保存后就会自动保存两个文件,一个是网址,另一个是保存网页内容元素。 如何导出网页数据,以赶集网采集为例图1

https://www.doczj.com/doc/b812445692.html, 二、通过网页数据采集器导出网页数据 先通过网页数据采集器,将网页数据采集下来,然后再导出为需要的格式即可。本文使用的是操作简单、功能强大的八爪鱼采集器。以下是一个八爪鱼采集并导出网页数据的完整示例。示例中采集的是赶集网上房产-商铺-深圳-南山分类下的所有商铺信息。 示例网站:https://www.doczj.com/doc/b812445692.html,/fang6/nanshan/ 步骤1:创建采集任务 1)进入主界面,选择“自定义模式” 如何导出网页数据,以赶集网采集为例图2 2)将要采集的网址URL,复制粘贴到网址输入框中,点击“保存网址”

https://www.doczj.com/doc/b812445692.html, 如何导出网页数据,以赶集网采集为例图3 步骤2:创建翻页循环 1)在页面右上角,打开“流程”,以展现出“流程设计器”和“定制当前操作”两个板块。将页面下拉到底部,点击“下一页”按钮,在右侧的操作提示框中,选择“循环点击下一页”

C#中数据库数据如何导出至Excel表格

C#中数据库数据如何导出至Excel表格 有时候需要将数据库的数据导出至Excel表格表格,以便进行查看和分析,那么如何导出呢?下面用代码来实现。 首先,新建一个工程,需要添加引用Microsoft.Office.Interop.Excel.dll,以Oracle数据库为例(只要读出DataTable或DataSet就行了,哪种数据库没关系)。 1、创建一个表格,并插入如下数据。 [sql]view plaincopyprint? 1.drop table TABLETESTEXCEL; 2.create table TABLETESTEXCEL 3.( 4.col_id NUMBER not null, 5.col_name VARCHAR2(32), 6.col_age NUMBER, 7.col_sex VARCHAR2(4), 8.col_work VARCHAR2(32), 9.col_mony FLOAT 10.); 数据: [sql]view plaincopyprint? 1.insert into TABLETESTEXCEL(col_id,col_name,col_age,col_sex,col_work, col_mony) 2.values(1,'吴一',25,'男','.NET',5000); 3. 4.insert into TABLETESTEXCEL(col_id,col_name,col_age,col_sex,col_work, col_mony) 5.values(2,'孙二',24,'男','JAVA',4999); 6. 7.insert into TABLETESTEXCEL(col_id,col_name,col_age,col_sex,col_work, col_mony) 8.values(3,'张三',25,'男','PHP',5001);

数据导入excel表格

package https://www.doczj.com/doc/b812445692.html,; import java.io.File; import java.io.FileOutputStream; import java.io.OutputStream; import java.util.ArrayList; import java.util.Date; import jxl.Cell; import jxl.CellType; import jxl.Sheet; import jxl.Workbook; import jxl.WorkbookSettings; import jxl.format.Alignment; import jxl.format.Border; import jxl.format.BorderLineStyle; import jxl.format.Colour; import jxl.format.VerticalAlignment; import jxl.write.Formula; import https://www.doczj.com/doc/b812445692.html,bel; import jxl.write.NumberFormat; import jxl.write.WritableCellFeatures; import jxl.write.WritableCellFormat; import jxl.write.WritableFont; import jxl.write.WritableSheet; import jxl.write.WritableWorkbook; import jxl.write.WriteException; public class JExcelUtils { /** * 生成Excel文件 * @param path 文件路径 * @param sheetName 工作表名称 * @param dataTitles 数据标题 */ public void createExcelFile(String path,String sheetName,String[] dataTitles){ WritableWorkbook workbook; try{ OutputStream os=new FileOutputStream(path); workbook=Workbook.createWorkbook(os); WritableSheet sheet = workbook.createSheet(sheetName, 0); //添加第一个工作表 initialSheetSetting(sheet);

用EXCEL数据导出CAD道路断面图示

1 引言 传统横断面测量方法有水准仪皮尺法、横断面仪法和经纬仪视距法等,简而言之就是根据地形的变化对与道路轴线方向相垂直的断面进行测量,其中直线段所测断面方向与道路中线方向垂直,而曲线路段与测点的切线方向垂直。在对横断面测量以后,为计算道路工程土方量,我们紧接着就要绘制道路横断面图。在实际工作中,横断面图的绘制通常是采用手工在米格纸上按照一定比例用卡规和复式比例尺按照横向是距离、纵向是高程刺点,用小钢笔连接刺点绘制闭合图形。然后把每一个断面的横断面图分成若干个梯形用复式比例尺和卡规量出每一个梯形的上底、下底和高,计算出每一个梯形的面积,然后把所有的梯形面积相加才得到一个断面面积。 通常道路横断面施测要求每20m测一个断面。在地形变化较大的位置要加测横断面,这样每1km道路至少要绘制50多个横断面图。可见如果用传统的方法绘制一条50km的道路断面图工作量是非常巨大的,而且由于是手工绘制,修改起来很麻烦,在实际工作中返工的情况是经常发生的。由此可见快速高效地绘制出道路横断面图是非常重要的。 笔者根据实际情况发现如果能对Auto CAD系统进行二次开发,运用AutoLISP语言和Visual LISP开发环境进行编程,创建Auto CAD的新命令或重新定义原有的标准命令,提供系统自动执行重复性的计算与绘图任务,此类问题就迎刃而解了,但这要求道路施工人员具备专业性很强的编程知识。在绘制了大量的横断面图后,笔者总结出一个非常便捷的方法,这种方法不需要道路工程人员具备很强的编程知识,只要具备常规的Excel和Auto CAD 知识,就可以自动、精确和快速绘制道路横断面图,并且此方法可以推广至重复性较强的绘图工作。下面以一个实例进行详细说明。 2 对横断面数据的处理 2.1确定边桩位置和高程 倾斜地面高等级道路施工测量中的边桩定位一般用逐渐趋近法。该方法无论采用经纬仪或全站仪都不能直接给出边桩位置,只能通过重复多次测量和计算,才能确定边桩的位置,这种方法的野外工作量较大。本文给出了由横断面测量数据直接计算中桩到边桩的水平距离和边桩高程的方法,利用这种新方法可一次性标定边桩位置(如图1所示)。 图1确定边桩位置和高程示意图

EXCEL数据导出

VB: 怎样将查询结果导出到Excel 如果你想将查询结果导出到Excel另存,以便日后查看或打印的话,那么我这里说的就是怎样将查询结果导出到Excel。先来写一个函数 FillDataArray,该函数的主要作用是将查询语句中的字段名和查到的记录导入到Excel中。 Public Function FillDataArray(asArray(), adoRS As ADODB.Recordset) As Long '将数据送Excel 函数 Dim nRow As Integer Dim nCol As Integer On Error GoTo FillError ReDim asArray(100000, adoRS.Fields.Count) nRow = 0 For nCol = 0 To adoRS.Fields.Count - 1 asArray(nRow, nCol) = adoRS.Fields(nCol).name Next nCol nRow = 1 Do While Not adoRS.EOF For nCol = 0 To adoRS.Fields.Count - 1 asArray(nRow, nCol) = adoRS.Fields(nCol).Value Next nCol adoRS.MoveNext nRow = nRow + 1 Loop nRow = nRow + 1 FillDataArray = nRow Exit Function FillError: MsgBox Error$ Exit Function Resume End Function 然后再来写一个过程PrintList,来调用前面的这个函数。 Private Sub PrintList() Dim strSource, strDestination As String Dim asTempArray() Dim INumRows As Long

excel vba从excel中导出表格数据和图表到新word文档

excel vba从excel中导出表格数据和图表到 新word文档 office应用程序是可以相互访问的,比如可以把excel的数据导出到wordzhong step1: 首先要引用word工程对象,在excelvba中依次点击工具——》引用——》microsoft word 11.0 library 如果是2007版本,应该选择12。0 step2: 准备excel数据

step3: 添加模块,写入代码 Sub xxx() '定义WORD应用程序变量 Dim objWordApp As Word.Application '定义word文档变量 Dim objWord As Word.Document Dim objSel As Word.Selection Dim strTitle As String On Error GoToerrHandle '错误处理 Sheet1.Select strTitle = Sheet1.Cells(1, 1) '标题 '选择表格区域 Sheet1.Range(Cells(2, 1), Cells(28, 7)).Select Selection.Copy '复制 Set objWordApp = New Word.Application Set objWord = objWordApp.Documents.Add objWord.Application.Visible = True Set objSel = objWord.Application.Selection With objSel .InsertAfter Text:=strTitle&vbCrLf .ParagraphFormat.Alignment = wdAlignParagraphCenter .Font.Size = 16 .InsertAfter Text:=vbCrLf .EndKey Unit:=wdStory .PasteExcelTable False, False, False Application.CutCopyMode = False ThisWorkbook.Activate Sheet1.Select

数据导出到Excel(或Word)源代码大全

数据导出到Excel(或Word)源代码大全 在日常工作中,大家都习惯Office作为办公软件,因此,在开发软件的时,常常会有把数据导出到Excel等Office软件的需求。在此,收集一些常用的导出文件的源程序,希望给大家带来方便。(不断更新) 一、DataSet数据集内数据转化为Excel 1.// 作用:把DataSet数据集内数据转化为Excel、Word文件 2.// 描述:这些关于Excel、Word的导出方法,基本可以实现日常须要, 其中有些方法可以把数据导出后 3.// 生成Xml格式,再导入数据库!有些屏蔽内容没有去掉, 保留下来方便学习参考用之。 4.// 备注:请引用Office相应COM组件,导出Excel对象的一个方法要 调用其中的一些方法和属性。 5.public void DataSetToExcel(DataSet ds,string FileName) 6.{ 7.try 8.{ 9.//Web页面定义 10. //System.Web.UI.Page mypage=new System.Web.UI.Pag e(); 11. 12. HttpResponse resp; 13. resp=HttpContext.Current.Response; 14. resp.ContentEncoding=System.Text.Encoding.GetEncodi ng("GB2312"); 15. resp.AppendHeader("Content-disposition","attachment ;filename="+FileName+".xls"); 16. resp.ContentType="application/ms-excel"; 17. 18. //变量定义 19. string colHeaders=null; 20. string Is_item=null; 21. 22. //显示格式定义//////////////// 23. 24. 25. //文件流操作定义 26. //FileStream fs=new FileStream(FileName,FileMode. Create,FileAccess.Write); 27. //StreamWriter sw=new StreamWriter(fs,System.Text .Encoding.GetEncoding("GB2312")); 28.

数据库导出Excel的3种方法

数据库数据用Excel导出的3种方法 分类:.Net 2008-06-30 11:07 192人阅读评论(2) 收藏举报将数据库数据用Excel导出主要有3种方法:用Excel.Application接口、用OleDB、用HTML 的Tabel标签 方法1——Excel.Application接口: 首先,需要要Excel.dll这个文件,确保自身机器上装有MS Office,在Office安装目录(../Microsoft Office/OFFICE11/,具体目录取决于自己的安装)中找到Excel.exe,然后放在(../Microsoft Visual Studio 8/SDK/v2.0/Bin)目录中,在CMD中输入“CD C:/Program Files/Microsoft Visual Studio 8/SDK/v2.0/Bin(具体目录取决于自己的安装)”,然后输入“TlbImp EXCEL.EXE Excel.dll”。然后在Bin这个文件夹中就能找到Excel.dll这个文件。用到时候在项目中引用就可以。 要使用命名空间 using Excel; 具体代码: ///

///将SQLServer中的数据导出到Excel(使用Excel类,在没装Office时无效) /// ///要导出的数据集 ///输出到的文件目录 public static void SQLServerToExcel(DataSet ExelDt, string fileName) { int colIndex = 1, rowIndex = 1; Excel.Application excel; Workbook wBook; Worksheet wSheet; try { excel = new Excel.Application(); wBook = excel.Application.Workbooks.Add(true); wSheet = wBook.Worksheets[1] as Worksheet; //excel.Visible = true; } catch { Win32.MsgBox(0, "您可能没有安装Office,请安装再使用该功能", "", 0);

5种从Excel数据导入Oracle方法

最近同事遇到了每天手工导入Excel数据到Oracle的问题,他目前的操作是使用PL/SQL Developer中的复制粘贴方法,这样每天都需要进行手工的操作,很明显长期下来的工作量是比较大的,于是找了几种可供使用的导入方法: 一、直接使用SQL*Loader导入 SQL*Loader是Oracle自带的数据加载工具,其数据导入比较专业,有各种参数及选项可供选择,经常是作为数据仓库中大型数据的导入方法选择。 优点: 1、可将导入命令写入BAT文件直接批量处理 2、导入处理比较专业,提供各种参数选择 3、无需操作Oracle所在服务器 缺点: 1、Excel文件需要另存为txt或csv格式(似乎没有自动完成的方法) 总得来说这种方法是最值得采用的,可以自动建立操作系统的批处理文件执行SQLLDR命令,将数据导入原始接收表,并在数据库中设置触发器进行精细操作。 二、使用外部表直接更新Excel数据 Oracle的外部表其实也可以满足将外部数据读入数据库的功能,但是其可操作性相比SQL*Loader还是要小很多 优点: 1、无需执行导入操作,更新外部文本文件后可直接查询数据 2、仅在查询时操作一次数据,对系统资源占用较小 缺点:

1、需要建立directory ,一是要有权限,二是文件必须放到Oracle服务器上(似乎不能远程) 2、需要上传文件,而且无法进行多表导入等复杂的操作 3、同样需要将Excel文件存储为txt或csv格式 这种方法对于权限要求高,操作性弱,仅针对于简单的数据导入时使用。 三、PL/SQL Developer粘贴法 这种方法就比较简单易用了,每次复制粘贴就行,只限于偶尔的导入使用,要是每天导入就累死人了。 优点: 1、操作便捷,简单直接 2、仅需要最简单的update/insert/delete table权限 缺点: 1、只能对一张表进行操作,多表操作会十分复杂 2、需要手动操作的工作量较大 3、所有数据需在Excel中处理完毕,导入时无法进行任何简单操作 具体操作方法: 1、在PL/SQL Developer中选择需要操作的表,右键-Edit Data; <也可以在查询窗口中输入select * from table_name for update;然后点击打开那个锁> 2、可以直接在数据窗口中修改或粘贴新的数据(注意格式); 3、点击那个钩(Post Change); 4、提交数据;

C#_将数据导出到Excel汇总(cs,bs)

C# 将数据导出到Execl汇总(C/S和B/S) 一、https://www.doczj.com/doc/b812445692.html,中导出Execl的方法: 在https://www.doczj.com/doc/b812445692.html,中导出Execl有两种方法,一种是将导出的文件存放在服务器某个文 件夹下面,然后将文件地址输出在浏览器上;一种是将文件直接将文件输出流写 给浏览器。在Response输出时,t分隔的数据,导出execl时,等价于分列,n 等价于换行。 1、将整个html全部输出execl 此法将html中所有的内容,如按钮,表格,图片等全部输出到Execl中。 Response.Clear(); Response.Buffer= true; Response.AppendHeader("Content-Disposition","attachment;filename=" +DateTime.Now.ToString("yyyyMMdd")+".xls"); Response.ContentEncoding=System.Text.Encoding.UTF8; Response.ContentType = "application/vnd.ms-excel"; this.EnableViewState = false; 这里我们利用了ContentType属性,它默认的属性为text/html,这时将输出为 超文本,即我们常见的网页格式到客户端,如果改为ms-excel将将输出excel 格式,也就是说以电子表格的格式输出到客户端,这时浏览器将提示你下载保存。ContentType的属性还包括: image/JPEG;text/HTML;image/GIF;vnd.ms-excel/msword 。同理,我们也可以 输出(导出)图片、word文档等。下面的方法,也均用了这个属性。 2、将DataGrid控件中的数据导出Execl 上述方法虽然实现了导出的功能,但同时把按钮、分页框等html中的所有输出 信息导了进去。而我们一般要导出的是数据,DataGrid控件上的数据。 System.Web.UI.Control ctl=this.DataGrid1; //DataGrid1是你在窗体中拖放的控件 HttpContext.Current.Response.AppendHeader("Content-Disposition","atta chment;filename=Excel.xls"); HttpContext.Current.Response.Charset ="UTF-8"; HttpContext.Current.Response.ContentEncoding =System.Text.Encoding.Default; HttpContext.Current.Response.ContentType ="application/ms-excel"; ctl.Page.EnableViewState =false; System.IO.StringWriter tw = new System.IO.StringWriter() ; System.Web.UI.HtmlTextWriter hw = new System.Web.UI.HtmlTextWriter (tw); ctl.RenderControl(hw);

vb导出数据到Excel

vb导出数据到Excel Public Function ExporToExcel(strOpen As String) '入参为SQL查询语句 '********************************************************* '* 名称:ExporToExcel '* 功能:导出数据到EXCEL '* 用法:ExporToExcel(sql查询字符串) '********************************************************* Dim Rs_Data As New ADODB.Recordset Dim Irowcount As Integer Dim Icolcount As Integer Dim FILENAME As String Dim xlApp As New Excel.Application Dim xlBook As Excel.Workbook Dim xlSheet As Excel.Worksheet Dim xlQuery As Excel.QueryTable With Rs_Data If .State = adStateOpen Then .Close End If .ActiveConnection = Cn .CursorLocation = adUseClient .CursorType = adOpenStatic .LockType = adLockReadOnly .Source = strOpen .Open End With With Rs_Data If .RecordCount < 1 Then MsgBox ("没有记录!") Exit Function End If '记录总数 Irowcount = .RecordCount '字段总数 Icolcount = .Fields.Count End With Set xlApp = CreateObject("Excel.Application") Set xlBook = Nothing Set xlSheet = Nothing Set xlBook = xlApp.Workbooks().Add

数据库中数据导出到EXCEL

private void navBarItem24_LinkClicked(object sender, DevExpress.XtraNavBar.NavBarLinkEventArgs e) { SqlDataAdapter adpt1 = new SqlDataAdapter("Select * from tb_Area",db.conn); SqlDataAdapter adpt2 = new SqlDataAdapter("Select * from tb_User", db.conn); DataSet ds1 = new DataSet(); DataSet ds2 = new DataSet(); adpt1.Fill(ds1); adpt2.Fill(ds2); Excel.ApplicationClass excel = new Excel.ApplicationClass(); Excel.Workbooks books = (Excel.Workbooks)excel.Workbooks; Excel.Workbook book = (Excel.Workbook)books.Add(Missing.Value); excel.Visible = true; WriteToWorkSheet(excel, ds1, book, "区域信息表"); WriteToWorkSheet(excel, ds2, book, "用户表");

//System.Reflection.Missing miss = System.Reflection.Missing.Value; book.SaveAs("E:\\导出数据.xls", Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Excel.XlSaveAsAccessMode.xlNoChange, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value); book.Close(false,Missing.Value,Missing.Value); books.Close(); excel.Quit(); //https://www.doczj.com/doc/b812445692.html,mandText = "Select * from tb_Area"; //adpt1.SelectCommand.Connection = db.conn; } private void WriteToWorkSheet(Excel.ApplicationClass excel,DataSet ds,Excel.Workbook book,string SheetName) { Excel.Worksheet sheet = (Excel.Worksheet)book.Sheets.Add(Missing.Value, Missing.Value, Missing.Value, Missing.Value); sheet = (Excel.Worksheet)book.ActiveSheet; https://www.doczj.com/doc/b812445692.html, = SheetName; for (int i = 0; i < ds.Tables[0].Columns.Count; i++) { excel.Cells[1, i + 1] = ds.Tables[0].Columns[i].ColumnName.ToString(); } for (int i = 0; i < ds.Tables[0].Rows.Count; i++)

相关主题
文本预览
相关文档 最新文档