日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

将DW数据窗口导出为EXCEL文件的方法(整理)

發布時間:2023/12/9 编程问答 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 将DW数据窗口导出为EXCEL文件的方法(整理) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
本文為摘自csdn論壇帖子收集整理后匯總版本:

---2004年9月3日整理

---原貼見:

http://community.csdn.net/expert/topic/3328/3328715.xml?temp=8.050799e-04

鑒于現在很多朋友詢問 pb 數據導出到excel 中的問題,導出去后格式和數據
類型不對了,自己寫了幾個用戶對象,
希望能拋磚引玉,加強技術交流,得到大家的支持。

1. nvo_excel 只要是兩個接口函數
導出數據存儲的數據,可以定義 excel 的標題
public function integer uf_toexcel (datastore ads_data, readonly string as_title)

導出數據窗口的數據,可以定義 excel 的標題
public function integer uf_toexcel (datawindow adw_data, readonly string as_title)

2. 下面是兩個用戶對象的 sru 文件,自己導入到工程中
$pbexportheader$uo_ds_base.sru
$pbexportcomments$數據存儲基類
forward
global type uo_ds_base from datastore
end type
end forward

global type uo_ds_base from datastore
string dataobject = "d_expression"
end type
global uo_ds_base uo_ds_base

forward prototypes
public function any uf_getitemvalue (long al_row, string as_colname)
public function string uf_about ()
public function string uf_globalreplace (string as_source, string as_old, string as_new)
end prototypes

public function any uf_getitemvalue (long al_row, string as_colname);
//*************************************************//
//function : 得到任意的列的值
//parm???? :
//???????? 1. al_row?????? : 指定行
//???????? 2. as_colname?? : 指定列的列名
//return?? : -1 is fail or success is value to you
//author?? : hzh
//date???? : 2002.11.05
//************************************************//



string s_tempcoltype
any a_ret
s_tempcoltype = lower(this.describe(as_colname + ".coltype"))

//for string type
if left(s_tempcoltype,4) = "char" or left(s_tempcoltype,4) ="varc"then
a_ret = this.getitemstring(al_row,as_colname)
end if?

//for decimal type
if left(s_tempcoltype,7) = "decimal" then
a_ret = this.getitemdecimal(al_row,as_colname)
end if

//for date type
if s_tempcoltype = "date" then
a_ret = this.getitemdate(al_row,as_colname)
end if

//for datetime type
if s_tempcoltype = "datetime" then
a_ret = this.getitemdatetime(al_row,as_colname)
end if

//for number type
if s_tempcoltype = "number" then
a_ret = this.getitemnumber(al_row,as_colname)
end if

//for time type
if s_tempcoltype = "time" then
a_ret = this.getitemtime(al_row,as_colname)
end if

//for timestamp type
if s_tempcoltype = "timestamp" then
a_ret = this.getitemtime(al_row,as_colname)
end if

//for int or long
if s_tempcoltype = "int" or s_tempcoltype = "long" then
a_ret = this.getitemnumber(al_row,as_colname)
end if

if isnull(a_ret) then
return -1
end if

return a_ret

end function

public function string uf_about ();
string s_func = ""

s_func = " 1. 求得表達式的值 (uf_evaluate) " +&
?? " 2. 根據 sql ,創建數據存儲 (uf_setsqlselect) ~r~n " +&
?? " 3. 得到任意列的值(uf_getitemvalue) ~r~n "
?
//s_func += super :: uf_about()

?
return "uo_ds_base object members functions : ~r~n" + s_func


end function
public function string uf_globalreplace (string as_source, string as_old, string as_new);
//**************************************************************//
//function???????????????? : 用指定的字符串替換指定字符串
//parm???????????????????? :
//???????? 1. as_source??? : 原來的字符串
//???????? 2. as_old?????? : 將要被替換的字符串
//???????? 3. as_new?????? : 用來替換的字符串
//return?? : 新的字符串
//author?? : hzh
//date???? : 2002.11.14
//*************************************************************//

long???? l_newlen, l_oldlen, l_start
string?? s_null, s_source


if isnull(as_source) or isnull(as_old) or isnull(as_new) then
setnull(s_null)
return s_null
else
l_oldlen = len(as_old)
l_newlen = len(as_new)
as_old = lower(as_old)
s_source = lower(as_source)
end if

l_start = pos(s_source, as_old)

do while l_start > 0
as_source = replace(as_source, l_start, l_oldlen, as_new)
s_source = lower(as_source)
l_start = pos(s_source, as_old, (l_start + l_newlen))
loop


return as_source

end function
on uo_ds_base.create
call super::create
triggerevent( this, "constructor" )
end on

on uo_ds_base.destroy
triggerevent( this, "destructor" )
call super::destroy
end on

-----------------------------------------------------------------


$pbexportheader$nvo_excel.sru
$pbexportcomments$和 excel 通訊的功能函數
forward
global type nvo_excel from nonvisualobject
end type
end forward

global type nvo_excel from nonvisualobject
end type
global nvo_excel nvo_excel

type prototypes
private:
function uint getmodulefilenamea(ulong hmodule,ref string lpfilename,ulong nsize) library "kernel32.dll"
end prototypes

type variables

private:
//存儲要導出的數據
uo_ds_base ids_data

//列名
string is_columnname[]

//列的標題
string is_columntitle[]

//列的顯示格式
string is_columnformat[]

//列的類型
string is_columntype[]
end variables

forward prototypes
public function integer uf_toexcel (datastore ads_data, readonly string as_title)
public function integer uf_toexcel (datawindow adw_data, readonly string as_title)
private function integer uf_setdatasource (datawindow adw_data)
private function integer uf_setdatasource (datastore ads_data)
private function integer uf_datatoexcel (string as_title)
public function string uf_about ()
private function integer uf_initcolumn ()
end prototypes

public function integer uf_toexcel (datastore ads_data, readonly string as_title);

/**********************************************************/
//function???????????????? : 轉換數據到 excel
//parm???????????????????? :
//??????? 1. ads_data????? : 包含源數據的對象
//??????? 2. as_title????? :? excel 的標題
//return?????????????????? : 1 is success and -1 is fail
//author?????????????????? : hzh
//date???????????????????? : 2003.12.08
/**********************************************************/

if this.uf_setdatasource(ads_data) <> 1 then return -1

if not isvalid(ids_data) then return -1

if ids_data.rowcount() < 1 then return -1

this.uf_initcolumn()

this.uf_datatoexcel(as_title)


return 1
end function

public function integer uf_toexcel (datawindow adw_data, readonly string as_title);
/**********************************************************/
//function???????????????? : 轉換數據到 excel
//parm???????????????????? :
//??????? 1. adw_data????? : 包含源數據的對象
//??????? 2. as_title????? :? excel 的標題
//return?????????????????? : 1 is success and -1 is fail
//author?????????????????? : hzh
//date???????????????????? : 2003.12.08
/**********************************************************/

if this.uf_setdatasource(adw_data) <> 1 then return -1

if not isvalid(ids_data) then return -1

if ids_data.rowcount() < 1 then return -1


this.uf_initcolumn()

this.uf_datatoexcel(as_title)

return 1
end function

private function integer uf_setdatasource (datawindow adw_data);/**********************************************************/
//function??????????????????? : 設置數據存儲
//parm??????????????????????? : none
//return????????????????????? :
//author????????????????????? : hzh
//date??????????????????????? : 2003.12.08
/**********************************************************/


ids_data.dataobject = adw_data.dataobject
//ids_data.uf_setddobject()
return adw_data.sharedata(ids_data)



end function

private function integer uf_setdatasource (datastore ads_data);
/**********************************************************/
//function??????????????????? : 設置數據存儲
//parm??????????????????????? : none
//return????????????????????? :
//author????????????????????? : hzh
//date??????????????????????? : 2003.12.08
/**********************************************************/

ids_data.dataobject = ads_data.dataobject
//ids_data.uf_setddobject()
return ads_data.sharedata(ids_data)
end function

private function integer uf_datatoexcel (string as_title);
/**********************************************************/
//function???????????????? : 轉換數據到 excel
//parm???????????????????? :
//??????? 1. as_title????? :? excel 的標題
//return?????????????????? : 1 is success and -1 is fail
//author?????????????????? : hzh
//date???????????????????? : 2003.12.08
//modifier???????????????? :
//????????????????????? 1. 2003.12.10 by hzh
//reason?????????????????? :
//????????????????????? 1. 增加對計算列的處理
/**********************************************************/

long l_cnt,l_i,l_cols,l_rows

string s_colnum ,s_colname,s_range

oleobject xlapp , xlsub

//l_cols = long(ids_data.object.datawindow.column.count)
l_cols = upperbound(is_columntitle)


l_rows = ids_data.rowcount()

if not isvalid(xlapp) then
xlapp = create oleobject
end if

if xlapp.connecttonewobject( "excel.application" ) < 0? then
messagebox(ga_app.dwmessagetitle,"不能連接 excel 服務器,請檢查你的計算機中是 ~r~n " +&
"否安裝了ms excel ? 假如安裝,請與程序供應商聯系 !",question!)
??? return -1
end if

//增加空文檔 (excel table)
xlapp.application.workbooks.add()
xlapp.application.visible = true

if not isvalid(xlsub) then
xlsub = create oleobject
end if

//定位到第一格
xlsub = xlapp.application.activeworkbook.worksheets[1]

//取得最后列的字母表達式
if long(l_cols) > 26? then
//aa、ab...還是ba、bb、bc...
int i_colstart,i_colend
i_colstart = mod(l_cols,26)
i_colend = l_cols / 26
s_colnum = "" + char(i_colstart + 96 ) + char(i_colend + 96) + ""
else
//是 a,b,c...格式
s_colnum = char(l_cols + 96)
end if

//標題的設置
xlsub.cells[1,1] = as_title
xlsub.cells[1,1].horizontalalignment = 3
xlsub.cells[1,1].verticalalignment = 3
xlsub.cells[1,1].font.size = 18


//去處格子
xlsub.range("a1:" + s_colnum + "1").merge()

for l_i = 1 to l_cols
//設置標題列的名字
xlsub.cells[2,l_i] = is_columntitle[l_i]
next

----------------------------------------------------


//畫表格線
//數據行從第二行開始
s_range = "a2:" + s_colnum + trim(string(l_rows + 2))
xlsub.range(s_range).borders(1).linestyle = 1
xlsub.range(s_range).borders(2).linestyle = 1
xlsub.range(s_range).borders(3).linestyle = 1
xlsub.range(s_range).borders(4).linestyle = 1

//將數據寫到execl
for l_i = 1 to l_cols
for l_cnt = 1 to l_rows
? if is_columntype[l_i] = column then
?? string s_evaluate
?? s_evaluate = "evaluate(lookupdisplay(" + is_columnname[l_i]
?? s_evaluate += ")," + string(l_cnt) + )
?? xlsub.cells[l_cnt + 2,l_i].formular1c1 = ids_data.describe(s_evaluate)
? else
?? xlsub.cells[l_cnt + 2,l_i].formular1c1 = &
???? ids_data.uf_getitemvalue(l_cnt,is_columnname[l_i])
? end if
? xlsub.cells[l_cnt + 2,l_i].numberformatlocal = is_columnformat[l_i]
?? next
next

xlapp.application.activeworkbook.saved = false

xlapp.disconnectobject()

if isvalid(xlapp) then
destroy xlapp
end if

if isvalid(xlsub) then
destroy xlsub
end if

return 1
end function

public function string uf_about ();

/**********************************************************/
//function??????????????????? : 用戶對象功能介紹
//parm??????????????????????? : none
//return????????????????????? : 介紹的文本和對應的公共函數
//author????????????????????? : hzh
//date??????????????????????? : 2003.12.08
/**********************************************************/


string s_func = ""

//s_func = super :: uf_about()

s_func =? s_func + "~r~nvo_excel object members functions :? ~r~n"

s_func+= "? 1. 用戶對象功能介紹 (uf_about) ~r~n" +&
?? "? 2. 程序數據導出為 excel 表,已經重載 (uf_toexcel) ~r~n"
??

return s_func

end function
private function integer uf_initcolumn ();
/**********************************************************/
//function???????????????? : 初始化列信息
//parm???????????????????? :
//return?????????????????? : of no use
//author?????????????????? : hzh
//date???????????????????? : 2003.12.08
//modifier???????????????? :
//????????????????????? 1. 2003.12.10 by hzh
//reason?????????????????? :
//????????????????????? 1. 增加對計算列的處理
/**********************************************************/

int i_cnt
string s_colname,s_datatype


//清空對象
for i_cnt = 1 to upperbound(is_columnname)
setnull(is_columnname[i_cnt])
setnull(is_columntitle[i_cnt])
setnull(is_columnformat[i_cnt])
setnull(is_columntype[i_cnt])
end for

string s_objects
uo_ds_base ds_excel
if not isvalid(ds_excel) then
ds_excel = create uo_ds_base
end if

ds_excel.dataobject = dw_excel_columns
s_objects = ids_data.describe("datawindow.objects")

// 將 detail 區域內的所有可見目標放到 ds_excel 中,
// 并按照 object.x 屬性大小排序
do while len(s_objects) > 0
?? int i_pos
long l_x
string s_name,s_type,s_band,s_visible,s_objtype
string s_objzw,s_zw

i_pos = pos(s_objects, "~t")
if i_pos <= 0 then i_pos = len(s_objects) + 1
? // object 名字
s_name = left(s_objects,i_pos - 1)
s_objects = mid(s_objects,i_pos + 1, len(s_objects))
?? //object 數據類型
?? s_type = lower(ids_data.describe(s_name + ".coltype"))

// object x 坐標
l_x = long(ids_data.describe(s_name + ".x"))
? // object 所屬區域
s_band = lower(ids_data.describe(s_name + ".band"))
// object 是否可見
s_visible = ids_data.describe(s_name + ".visible")
// object 類別
s_objtype = lower(ids_data.describe(s_name + ".type"))
// 如果 object 在 detail 區,且可見,并且是 column 或 compute column
if s_band = "detail" and s_visible = "1" and &
??? (s_objtype = "column" or s_objtype = "compute" ) then

??? // object 中文標頭,支持標準命名
? s_objzw = s_name + "_t"
? s_zw??? = ids_data.describe(s_objzw + ".text")
??????? // 去掉標題中多余的換行符,空格和引號
? s_zw = ds_excel.uf_globalreplace(s_zw,"~n","")
????? s_zw = ds_excel.uf_globalreplace(s_zw," ","")
? s_zw = ds_excel.uf_globalreplace(s_zw,","")
? long l_newrow
????? l_newrow = ds_excel.insertrow(0)
??? ds_excel.setitem(l_newrow, "colname",s_name)
? ds_excel.setitem(l_newrow, "x",l_x)
? ds_excel.setitem(l_newrow, "coltype",s_type)
? ds_excel.setitem(l_newrow, "coltitle",s_zw)
? ds_excel.setitem(l_newrow, "objtype",s_objtype)
?? end if
loop
//排序,設置到列數組中
ds_excel.setsort("x a")
ds_excel.sort()

for i_cnt = 1 to ds_excel.rowcount()
is_columnname[i_cnt] = lower(ds_excel.getitemstring(i_cnt,colname))
is_columntitle[i_cnt] = ds_excel.getitemstring(i_cnt,coltitle)
is_columntype[i_cnt] = ds_excel.getitemstring(i_cnt,objtype)
s_datatype = left(lower(ds_excel.getitemstring(i_cnt,coltype)),4)
choose case s_datatype
? case char,varc,int,long
?? is_columnformat[i_cnt] = g/通用格式
?
?? //特別指定日期專用格式為 char(10)
?? s_datatype = lower(ds_excel.getitemstring(i_cnt,coltype))
?? if s_datatype = char(10) then
??? is_columnformat[i_cnt] = yyyy""年""m""月""d""日""
?? end if
? case deci
?? is_columnformat[i_cnt] = "0.00_ "
? case date,datetime
?? is_columnformat[i_cnt] = yyyy""年""m""月""d""日""
? case time
?? is_columnformat[i_cnt] = h""時""mm""分""ss""秒""
? case else
?? is_columnformat[i_cnt] = g/通用格式
end choose
next


if isvalid(ds_excel) then
destroy ds_excel
end if

return 1

end function
on nvo_excel.create
call super::create
triggerevent( this, "constructor" )
end on

on nvo_excel.destroy
triggerevent( this, "destructor" )
call super::destroy
end on

event constructor;
if not isvalid(ids_data) then
ids_data = create uo_ds_base
end if
end event

event destructor;

if isvalid(ids_data) then
destroy ids_data
end if
end event

--------------------------------------------


$pbexportheader$dw_excel_columns.srd
$pbexportcomments$臨時得 轉換對象
release 7;
datawindow(units=0 timer_interval=0 color=16777215 processing=1 htmldw=no print.documentname="" print.orientation = 0 print.margin.left = 110 print.margin.right = 110 print.margin.top = 96 print.margin.bottom = 96 print.paper.source = 0 print.paper.size = 0 print.prompt=no print.buttons=no print.preview.buttons=no grid.lines=0 )
header(height=68 color="536870912" )
summary(height=0 color="536870912" )
footer(height=0 color="536870912" )
detail(height=76 color="536870912" )
table(column=(type=char(40) updatewhereclause=no name=coltitle dbname="coltitle" )
column=(type=char(30) updatewhereclause=no name=colname dbname="colname" )
column=(type=long updatewhereclause=no name=x dbname="x" )
column=(type=char(10) updatewhereclause=no name=objtype dbname="objtype" )
column=(type=char(20) updatewhereclause=no name=coltype dbname="coltype" )
)
text(band=header alignment="2" text="coltype" border="2" color="0" x="718" y="4" height="60" width="361"? name=coltype_t? font.face="宋體" font.height="-10" font.weight="400"? font.family="0" font.pitch="2" font.charset="134" background.mode="2" background.color="80269524" )
text(band=header alignment="0" text="coltitle" border="2" color="0" x="1088" y="4" height="60" width="434"? name=t_1? font.face="宋體" font.height="-10" font.weight="400"? font.family="0" font.pitch="2" font.charset="134" background.mode="2" background.color="80269524" )
text(band=header alignment="0" text="objtype" border="2" color="0" x="1531" y="4" height="60" width="320"? name=t_2? font.face="宋體" font.height="-10" font.weight="400"? font.family="0" font.pitch="2" font.charset="134" background.mode="2" background.color="80269524" )
text(band=header alignment="2" text="colname" border="2" color="0" x="9" y="4" height="60" width="457"? name=colname_t? font.face="宋體" font.height="-10" font.weight="400"? font.family="0" font.pitch="2" font.charset="134" background.mode="2" background.color="80269524" )
text(band=header alignment="2" text="x" border="2" color="0" x="475" y="4" height="60" width="233"? name=x_t? font.face="宋體" font.height="-10" font.weight="400"? font.family="0" font.pitch="2" font.charset="134" background.mode="2" background.color="80269524" )
column(band=detail id=1 alignment="0" tabsequence=32766 border="2" color="0" x="1088" y="0" height="72" width="434" format="[general]"? name=coltitle edit.limit=0 edit.case=any edit.autoselect=yes? font.face="宋體" font.height="-10" font.weight="400"? font.family="2" font.pitch="2" font.charset="134" background.mode="2" background.color="16777215" )
column(band=detail id=4 alignment="0" tabsequence=32766 border="2" color="0" x="1531" y="0" height="72" width="320" format="[general]"? name=objtype edit.limit=0 edit.case=any edit.autoselect=yes? font.face="宋體" font.height="-10" font.weight="400"? font.family="2" font.pitch="2" font.charset="134" background.mode="2" background.color="16777215" )
column(band=detail id=2 alignment="0" tabsequence=10 border="2" color="0" x="9" y="0" height="72" width="457" format="[general]"? name=colname edit.limit=0 edit.case=any edit.focusrectangle=no edit.autoselect=yes edit.autohscroll=yes? font.face="宋體" font.height="-10" font.weight="400"? font.family="2" font.pitch="2" font.charset="134" background.mode="1" background.color="536870912" )
column(band=detail id=3 alignment="1" tabsequence=20 border="2" color="0" x="475" y="0" height="72" width="233" format="[general]"? name=x edit.limit=0 edit.case=any edit.focusrectangle=no edit.autoselect=yes edit.autohscroll=yes? font.face="宋體" font.height="-10" font.weight="400"? font.family="2" font.pitch="2" font.charset="134" background.mode="1" background.color="536870912" )
column(band=detail id=5 alignment="0" tabsequence=30 border="2" color="0" x="718" y="0" height="72" width="361" format="[general]"? name=coltype edit.limit=0 edit.case=any edit.focusrectangle=no edit.autoselect=yes edit.autohscroll=yes? font.face="宋體" font.height="-10" font.weight="400"? font.family="2" font.pitch="2" font.charset="134" background.mode="1" background.color="536870912" )
htmltable(border="1" )
htmlgen(clientevents="1" clientvalidation="1" clientcomputedfields="1" clientformatting="0" clientscriptable="0" generatejavascript="1" )

----------------------------------------------------------


上面的程序 bug? 列表 :
1.

/**********************************************************/
//function???????????????? : 轉換數據到 excel
//parm???????????????????? :
//??????? 1. as_title????? :? excel 的標題
//return?????????????????? : 1 is success and -1 is fail
//author?????????????????? : hzh
//date???????????????????? : 2003.12.08
//modifier???????????????? :
//????????????????????? 1. 2003.12.10 by hzh
//reason?????????????????? :
//????????????????????? 1. 增加對計算列的處理
/**********************************************************/

long l_cnt,l_i,l_cols,l_rows

string s_colnum ,s_colname,s_range

oleobject xlapp , xlsub

for l_i = 1 to upperbound(is_columntitle)
if isnull(is_columntitle[l_i]) then exit
l_cols++
next


2.
函數 : uf_initcolumn? 處理 datetime 格式不是很好

case date//,datetime
?? s_datatype = lower(ds_excel.getitemstring(i_cnt,coltype))
?? if s_datatype = datetime then
??? is_columnformat[i_cnt] = yyyy-m-d h:mm
?? else
??? is_columnformat[i_cnt] = yyyy""年""m""月""d""日""
?? end if

3. 這個不是錯誤,可以加強一下功能
//特別指定日期專用格式為 char(10)
?? s_datatype = lower(ds_excel.getitemstring(i_cnt,coltype))
?? if s_datatype = char(10) then
??? is_columnformat[i_cnt] = yyyy""年""m""月""d""日""
?? end if
??
?? //特別指定時間專用格式為 char(8)
?? s_datatype = lower(ds_excel.getitemstring(i_cnt,coltype))
?? if s_datatype = char(8) then
??? is_columnformat[i_cnt] = h""時""mm""分""ss""秒""
?? end if

?? //特別指定日期時間專用格式為 char(19)
?? s_datatype = lower(ds_excel.getitemstring(i_cnt,coltype))
?? if s_datatype = char(19) then
??? is_columnformat[i_cnt] = yyyy-m-d h:mm
?? end if

根據代碼,只有 char(8),10,19 才有啊,這是我設計日期,時間等的專用格式

-----------------------------------------------------------


我再把另外一個帖子當中中國龍的方法也貼過來,那個帖子可能由于csdn歷史帖子管理原因無法成功添加為faq,也很可惜,大家如果有其他好的方法也請一并貼上來:

llitcwl(中國龍):

//====================================================================
// [public] function uf_data2excel 在 u_data2word inherited from nonvisualobject
//--------------------------------------------------------------------
// 說明:將數據倒入excel中,支持計算列及顯示格式,要求在題頭的計算列要寫tag值
//--------------------------------------------------------------------
// 參數1:[value] datawindow adw
//? 說明:數據窗口
//--------------------------------------------------------------------
// 返回: (integer) 成功返回1,不成功返回0
//--------------------------------------------------------------------
// 作者: cwl? 日期: 2002.03.18
//====================================================================
//變更日志:020515加入對交叉表倒出的支持(主要是修改了保存題頭部分)

constant integer pplayoutblank = 12
oleobject ole_object
ole_object = create oleobject

integer li_ret,li_crosstab=0
long ll_colnum,ll_rownum
string ls_value
string ls_objects,ls_obj,ls_objs[],ls_objtag[]
long ll_pos,ll_len,ll_num = 0
//題頭區
long ll_headnum
string ls_head[],ls_headtag[]
//合計區
long ll_sumnum,i=1,startpos=1,endpos,li_pos
string ls_sum[],ls_sumtag[],ls_bind,token[],list,ls_temp,ls_crosstabcol
n_cst_string lu_string //pfc string處理對象

li_ret = ole_object.connecttoobject("","excel.application")
if li_ret <> 0 then
//如果excel還沒有打開,則新建。
li_ret = ole_object.connecttonewobject("excel.application")
if li_ret <> 0 then
? messagebox(ole錯誤,ole無法連接!錯誤號: + string(li_ret))
? return 0
end if
ole_object.visible = false//不可見
end if

if adw.object.datawindow.processing=4 then //交叉表處理
adw.object.datawindow.crosstab.staticmode=true//將數據靜態化
li_crosstab=1
end if

pointer oldpointer
oldpointer = setpointer(hourglass!)

//新增一個工作區
ole_object.workbooks.add



ls_objects = trim(adw.describe(datawindow.objects))
list=ls_objects
endpos = pos(list, ~t, startpos)
//得到對象列表
do while ( endpos > 0 )
token[i] = mid(list, startpos, endpos - startpos)
i ++
startpos = endpos + 1
endpos = pos(list, ~t, startpos)
loop
token[i] = mid(list, startpos)
ll_rownum=upperbound(token)

for i=1 to ll_rownum
ls_obj = token[i]
if ls_obj=title then messagebox(,adw.describe(ls_obj + .type))
if lower(adw.describe(ls_obj + .type)) = column or &
? lower(adw.describe(ls_obj + .type)) = compute then
? ls_bind=lower(adw.describe(ls_obj + .band))
? if ls_bind = detail then
?? ll_num += 1
?? ls_objs[ll_num] = ls_obj
?? if li_crosstab=0 then //一般處理
??? ls_objtag[ll_num] = adw.describe(ls_obj + _t.text)
?? elseif li_crosstab=1 then //交叉表處理
??? li_pos=lu_string.of_lastpos(ls_obj,_,len(ls_obj))//找出最后一次出現_的位置
??? if li_pos=0 or (not isnumber(mid(ls_obj,li_pos+1))) then //不是交叉列
???? ls_objtag[ll_num] = adw.describe(ls_obj + _t.text)
??? else
???? ls_temp=mid(ls_obj,li_pos)
???? ls_crosstabcol=mid(ls_obj,1,li_pos - 1)//取出交叉列名
//???? messagebox(,ls_crosstabcol+,,,,+ls_temp)
???? ls_objtag[ll_num]=adw.describe( ls_crosstabcol + "_t"+ls_temp+".text" )//取出交叉表的題頭
??? end if
?? end if
? elseif (ls_bind = summary) then
?? ll_sumnum += 1
?? ls_sum[ll_sumnum] = ls_obj
?? ls_sumtag[ll_sumnum] = adw.describe(ls_obj + .tag)
? else
?? ll_headnum += 1
?? ls_head[ll_headnum] = ls_obj
?? ls_headtag[ll_headnum] = adw.describe(ls_obj + .tag)
? end if

end if

next

//得到數據窗口數據的列數與行數(行數應該是數據行數 + 2)
ll_colnum = ll_num
ll_rownum = adw.rowcount() + 2

string column_name
string ls_colname
integer j,k
//寫題頭
for i=1 to ll_headnum
ls_value = ls_headtag[i]
if ls_value<>? then
? ole_object.cells(1,(i - 1)*2+1).value = ls_value
end if
column_name = ls_head[i]
ls_value=this.uf_getdata(adw,column_name,1)
ole_object.cells(1,(i)*2).value = ls_value
next
//寫結尾
for i=1 to ll_sumnum
ls_value = ls_sumtag[i]
if ls_value<>? then
? ole_object.cells(ll_rownum+1,(i - 1)*2+1).value = ls_value
end if
column_name = ls_sum[i]
ls_value=this.uf_getdata(adw,column_name,1)
ole_object.cells(ll_rownum+1,(i)*2).value = ls_value
next

//寫標題
for i = 1 to ll_colnum
//得到標題頭的名字
ls_value = ls_objtag[i]
ole_object.cells(2,i).value = ls_value
next
//寫數據
for i = 3 to ll_rownum
for j = 1 to ll_colnum
? column_name = ls_objs[j]
? ls_value=this.uf_getdata(adw,column_name,i - 2)
? ole_object.cells(i,j).value = ls_value
next
next

setpointer(oldpointer)
ole_object.visible = true
ole_object.disconnectobject()
destroy ole_object

return 1



//====================================================================
// [public] function uf_getdata 在 u_data2word inherited from nonvisualobject
//--------------------------------------------------------------------
// 說明:得到一個數據窗口列及計算列的準確顯示值
//--------------------------------------------------------------------
// 參數1:[value] datawindow dw_1
//? 說明:
// 參數2:[value] string col
//? 說明:對象名
// 參數3:[value] integer row
//? 說明:行
//--------------------------------------------------------------------
// 返回: (string) 值
//--------------------------------------------------------------------
// 作者: cwl? 日期: 2002.03.18
//====================================================================
string ls_edittype,ls_value,ls_format
integer id
ls_edittype=lower(dw_1.describe(col+".edit.style"))//得到編緝風格
choose case ls_edittype
case ddlb,dddw//應該得到顯示值
? ls_value=dw_1.describe(? "evaluate(lookupdisplay("+col+") ,"+string(row)+" )")
case else
? id=long(dw_1.describe(col+".id"))
? ls_format=dw_1.describe(col+".format")
? if mid(ls_format,1,1)=[ or ls_format=? or ls_format= then //不作格式處理
?? if id=0 then //計算列
??? ls_value=dw_1.describe("evaluate(~"" + dw_1.describe(col + .expression)&
???? + "~","+string(row)+")")
?? else
??? ls_value=string(dw_1.object.data[row,id])
?? end if
? else
?? if id=0 then //計算列
??? ls_value=string(dw_1.describe("evaluate(" + dw_1.describe(col + .expression)&
???? + ","+string(row)+")"),ls_format)
?? else
??? ls_value=string(dw_1.object.data[row,id],ls_format)
?? end if
? end if
end choose
if isnull(ls_value) then ls_value=
return ls_value


或者直接存成html文件

----------------------------------------------------------


繼續響應,這是以前一位仁兄的代碼:


/**********************************************************/
/* 函數名稱:uf_dwsaveas_excel
功能 :將數據窗口數據導出excel文件,并將excel文件默認英文標題替換成中文。
參數 :datawindow datawin,為用戶要導出數據窗口的數據窗口控件名
返回值:integer 1,success;-1,error
流程描述:先用saveasascii()倒出為excel文件,再替換表頭為中文名
設計人:yanhui 2003年11月
修改人:葉文林 2004.4.8
???????? 原因:為提高程序的可讀性作了少量的修改(如:增加注釋、改變排版風格等)*/
/**********************************************************/

/***************以下程序將導出為excel文檔******************/
integer li_rtn,ii,li_asc
string ls_name,ls_pathname
boolean lb_exist
if datawin.rowcount()<1 then
messagebox("提示信息","請先檢索數據再導出至excel!")
return -1 //error
end if
li_rtn=getfilesavename("保存文件",ls_pathname,ls_name,"xls","excel文件(*.xls),*.xls")

if li_rtn=1 then
lb_exist = fileexists(ls_pathname)
if lb_exist then
? li_rtn = messagebox("保存", ls_pathname+"已經存在,是否覆蓋?",exclamation!, yesno!)
end if
if li_rtn=1 then
//當文件存在用戶選擇覆蓋,或是文件本就不存在時。注意變量li_rtn
? li_rtn=datawin.saveasascii(ls_pathname)
? if li_rtn=1 then
//?? messagebox("提示信息","導出數據成功!")??
? else
?? messagebox("錯誤信息","導出數據失敗!")
?? return -1 //error
? end if
else
? return -1 //error
end if
else
return -1
end if

/**********以下程序將導出的excel英文標題替換為漢字*********/
long numcols , numrows , c, r
oleobject xlapp , xlsub
int ret
numcols = long(datawin.object.datawindow.column.count)
numrows = datawin.rowcount()

// 產生oleobject的實例
xlapp = create oleobject

//連接ole對象
ret = xlapp.connecttonewobject( "excel.sheet" )
if ret < 0? then
messagebox("連接失敗!","連接到excel失敗,請確認您的系統是否已經安裝excel!~r~n"&
+"錯誤代碼:"+string(ret))
??? return -1
end if
// 打開excel文件
xlapp.application.workbooks.open(ls_pathname)
使文件可見
//xlapp.application.visible = true

// 得到活動工作表的引用,改善程序性能
xlsub = xlapp.application.activeworkbook.worksheets[1]
string ls_colname,ls_text,ls_modistr,ls_col
//取字段名更改為對應的文本text值
for c=1 to numcols
ls_col="#"+string(c)+".name"
ls_colname=datawin.describe(ls_col)
ls_modistr=ls_colname+"_t.text"
ls_text=datawin.describe(ls_modistr)
xlsub.cells[1,c]=ls_text
next

xlapp.disconnectobject()
destroy xlapp
messagebox("提示信息","導出數據成功!")
return 1 //success

--------------------------------------------------------------


收藏的一個導出為 excel 的例子  
(支持導出分組帶、合計帶,并且支持多層嵌套報表導出,基本是所見及所得)
///
//
// parameters : ad_dw?? : datawindow
//????? as_file? : file name
// returns? : true/false : boolean
// description : save the datawindow as a excel file.
//
///
// author? : purplekite
// date? : 2003-01-23
///

setpointer(hourglass!)

//declare the local variables
long??? i, j, li_pos
string?? ls_objects, ls_obj, ls_text, ls_err, ls_sql
datastore? lds_saveas //導出數據窗
datastore? lds_sort? //獲得根據 object.x 排序的 (band = detail and visible = 1) 的 column/compute
boolean?? lb_return //返回值
string?? ls_pbver? //pb 版本信息
environment? env?? //環境變量

getenvironment(env)
ls_pbver = string(env.pbmajorrevision)

//創建排序列 datastore
lds_sort = create datastore
ls_sql = column=(type=char(1) name = ztext dbname="ztext" ) + ~r~n + &
?? column=(type=char(1) name = zcol dbname="zcol" ) + ~r~n + &
?? column=(type=long name = zx dbname="zx" ) + ~r~n
ls_sql = release + ls_pbver + ;~r~ntable( + ls_sql + )
lds_sort.create(ls_sql, ls_err)
if len(ls_err) > 0 then
lb_return = false
goto lab1
end if

//準備數據====================================================
//all controls
ls_objects = ad_dw.describe("datawindow.objects")

//按~t位置作判斷開始循環
do while (pos(ls_objects,"~t") > 0)
li_pos = pos(ls_objects,"~t")
ls_obj = left(ls_objects,li_pos - 1)
ls_objects = right(ls_objects,len(ls_objects) - li_pos)
//(column or compute ) at detail and visible
if (ad_dw.describe(ls_obj+".type") = "column" or &
?? ad_dw.describe(ls_obj+".type") = "compute" ) and &
?? (ad_dw.describe(ls_obj+".band") = "detail" ) and &
?? (ad_dw.describe(ls_obj+".visible") = "1" ) then
? ls_text = ad_dw.describe(ls_obj + _t.text)
? if ls_text <> ! and ls_text <> ? then
?? lds_sort.insertrow(0)
?? lds_sort.setitem(lds_sort.rowcount(), ztext, ls_text)
?? lds_sort.setitem(lds_sort.rowcount(), zcol, ls_obj)
?? lds_sort.setitem(lds_sort.rowcount(), zx, long(ad_dw.describe(ls_obj + .x)))
? end if
end if
loop

//the last control
ls_obj = ls_objects
if (ad_dw.describe(ls_obj+".type") = "column" or &
?? ad_dw.describe(ls_obj+".type") = "compute" ) and &
?? (ad_dw.describe(ls_obj+".band") = "detail" ) and &
?? (ad_dw.describe(ls_obj+".visible") = "1" ) then
? ls_text = ad_dw.describe(ls_obj + _t.text)
? if ls_text <> ! and ls_text <> ? then
?? lds_sort.insertrow(0)
?? lds_sort.setitem(lds_sort.rowcount(), ztext, ls_text)
?? lds_sort.setitem(lds_sort.rowcount(), zcol, ls_obj)
?? lds_sort.setitem(lds_sort.rowcount(), zx, long(ad_dw.describe(ls_obj + .x)))
? end if
end if
//如果沒有列則跳出
if lds_sort.rowcount() < 1 then goto lab1
//根據 object.x 排序
lds_sort.setsort(zx a)
lds_sort.sort()

//創建導出 datastore
lds_saveas = create datastore
ls_sql =
for i = 1 to lds_sort.rowcount()
ls_obj = lds_sort.getitemstring(i, zcol)
ls_sql += column=(type=char(1) dbname=" + ls_obj + " ) + ~r~n
next
ls_sql = release + ls_pbver + ;~r~ntable( + ls_sql + )
lds_saveas.create(ls_sql, ls_err)
if len(ls_err) > 0 then
lb_return = false
goto lab1
end if

//向 lds_saveas 中寫數據
for i = 1 to ad_dw.rowcount()
yield()//釋放消息隊列, 如果數據量較大, 可以使用這個函數
lds_saveas.insertrow(0)
for j = 1 to lds_sort.rowcount()
? ls_obj = lds_sort.getitemstring(j, zcol)
? if ad_dw.describe(ls_obj + .type) = column then
?? ls_text = ad_dw.describe(evaluate(~lookupdisplay( + ls_obj + )~, + string(i) + ))
? else
?? ls_text = ad_dw.describe(evaluate(~ + ls_obj + ~, + string(i) + ))
? end if
? lds_saveas.setitem(i, j, ls_text)
next
next

lds_saveas.insertrow(1)
for i = 1 to lds_sort.rowcount()
lds_saveas.setitem(1, i, lds_sort.getitemstring(i, ztext))
next
//準備數據完畢====================================================

//saveas datawindow
lb_return = (lds_saveas.saveas(as_file, excel!, false) = 1)

lab1:
destroy lds_sort
destroy lds_saveas
setpointer(arrow!)
return lb_return

總結

以上是生活随笔為你收集整理的将DW数据窗口导出为EXCEL文件的方法(整理)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

精品视频成人 | 成人黄色毛片视频 | 涩涩伊人| 天天插狠狠插 | 亚洲欧洲精品一区 | 麻豆视频入口 | 88av视频| 欧美91精品国产自产 | 成年人在线观看视频免费 | 精品欧美乱码久久久久久 | 久久久久成 | 成年人免费观看国产 | 免费又黄又爽视频 | 波多野结衣视频一区 | 欧美专区日韩专区 | 国产亚洲精品中文字幕 | 深夜免费福利 | 97在线观看免费观看高清 | 91av在线视频免费观看 | 中文在线免费视频 | 亚洲视频 一区 | 中文字幕精品三区 | 一级电影免费在线观看 | 久久精品视频免费观看 | 成人中心免费视频 | 又爽又黄又无遮挡网站动态图 | 久久久福利影院 | 激情视频久久 | 婷婷色 亚洲 | 成人a在线观看高清电影 | 天天操天天干天天 | 国产精品国产三级国产不产一地 | 精品亚洲网 | 国产精品久久久久永久免费 | 天天干天天在线 | 婷婷丁香自拍 | 国精产品999国精产品视频 | 美女精品在线观看 | 国产午夜免费视频 | 黄色三级网站在线观看 | 日韩区欧美久久久无人区 | 久久久999精品视频 国产美女免费观看 | 黄色美女免费网站 | 亚洲在线精品 | 五月婷婷激情五月 | 久久96国产精品久久99软件 | 亚洲精品乱码久久久久久 | 六月丁香社区 | 日韩精品一区二区三区视频播放 | 免费三级黄 | 亚洲在线综合 | 伊人伊成久久人综合网站 | 狠狠狠狠干 | 黄色一级大片免费看 | 亚洲3级| 18性欧美xxxⅹ性满足 | 亚洲美女视频在线 | 日韩在线网 | 欧美成人xxx | 日本在线视频一区二区三区 | 久久久久久综合网天天 | 国产视频综合在线 | 国产日本高清 | 精品久久久久久亚洲综合网站 | 久久久午夜剧场 | 一区二区三区国 | 色88久久| 国产亚洲精品久久19p | 日本资源中文字幕在线 | www.久久91| 在线观看岛国片 | 在线播放精品一区二区三区 | 欧美一级在线看 | 免费视频网 | 久久99国产综合精品免费 | 久久综合婷婷综合 | 欧美视频一区二 | 亚洲综合激情 | 国产精品3 | 色999五月色 | 国产黄av | www.av中文字幕.com | 国产亚洲精品久久 | 在线视频你懂 | 天天干,狠狠干 | 黄色动态图xx | 亚洲综合小说 | 国产一级淫片免费看 | 日日操操| 成人三级网站在线观看 | 手机看片中文字幕 | 国产精品18久久久久久久久久久久 | 国产高清黄 | 午夜精品久久久99热福利 | 亚洲欧美成人网 | 狠狠狠狠狠狠狠狠 | 探花视频免费在线观看 | 国产色在线 | 亚洲精品日韩一区二区电影 | 成人黄色片在线播放 | 婷婷久久一区 | 97中文字幕 | 久久久精品一区二区 | 午夜少妇一区二区三区 | www.国产视频 | 国产在线2020 | 欧美日韩a视频 | 免费成人在线视频网站 | 福利视频网址 | 日韩大片在线免费观看 | 中文字幕在线观看网 | 亚洲国产午夜 | 麻豆久久| 中文字幕第一页在线视频 | 国产专区视频 | 中文字幕av在线不卡 | aaa黄色毛片| 天天干天天操天天做 | 国产精品久久久久永久免费看 | 黄色一区三区 | 久久色亚洲 | 亚洲永久精品国产 | 日产中文字幕 | av在线一 | 精品一区二区免费 | 午夜精品视频免费在线观看 | 免费看黄色小说的网站 | 伊人狠狠干 | 超碰大片 | 激情视频国产 | 国产亚洲精品久久久久久久久久 | 色综合久久久久综合99 | 国产精品日韩高清 | 91高清完整版在线观看 | 欧美色道| 国产精品一区在线观看 | 99精品免费久久久久久日本 | 天天曰天天爽 | 五月婷婷色| 日本午夜在线观看 | 夜夜操天天干 | 午夜久久| 香蕉在线影院 | 色综合久久中文字幕综合网 | 天天干天天操天天爱 | 久久电影网站中文字幕 | 精品视频不卡 | 中国美女一级看片 | 久久久久女人精品毛片 | 中文字幕在线日本 | 亚洲黄色免费观看 | 日韩电影中文,亚洲精品乱码 | 亚洲免费色| 国产一级片不卡 | 亚洲国产精品一区二区尤物区 | 日韩午夜精品福利 | 天天干天天做 | www,黄视频 | 婷婷午夜天 | 观看免费av | 美女国产 | 日韩av快播电影网 | 日本激情视频中文字幕 | 亚洲一级二级 | 18pao国产成视频永久免费 | 粉嫩高清一区二区三区 | 国产视频网站在线观看 | 天堂网av在线 | 婷婷色综| 亚洲精品国产精品国产 | 国产在线精品区 | 亚州欧美精品 | 九九一级片 | 日本中文字幕在线 | 午夜视频色 | 午夜精品久久 | 亚洲热视频 | 激情综合网在线观看 | 国色综合| 亚洲精品一区二区三区四区高清 | 国产精品a久久 | 国产精品自产拍在线观看中文 | 亚洲国产网址 | 一级电影免费在线观看 | 亚州激情视频 | 日韩高清一二区 | 粉嫩av一区二区三区四区五区 | 亚洲精品国产精品国自 | 高清有码中文字幕 | 天堂va欧美va亚洲va老司机 | 91视频国产免费 | 激情五月婷婷激情 | 91中文字幕在线视频 | 久草在线视频资源 | 婷婷九月激情 | 久久精品网站视频 | 韩国av三级| 日本三级吹潮在线 | 久艹视频在线免费观看 | 亚洲婷婷在线视频 | 日韩网站在线看片你懂的 | 色综合天天综合 | 亚洲国产精品视频 | 国产成本人视频在线观看 | 综合久久一本 | 中文字幕精品视频 | 日本久久久久久久久 | 亚洲欧美日韩在线一区二区 | 精品一二三四视频 | 国产精品夜夜夜一区二区三区尤 | 欧美一级爽 | 欧美精品久久久久 | 欧美日韩国产精品久久 | 久久激情精品 | 日韩精品视频免费专区在线播放 | 97香蕉视频 | 国产字幕在线播放 | 免费在线观看不卡av | 日韩欧美精品在线观看视频 | 日韩av免费观看网站 | 国语久久| 久久久久久久久久久久久国产精品 | av电影在线播放 | 久久最新网址 | 中文字幕日韩一区二区三区不卡 | 欧美在线不卡一区 | 天天天操天天天干 | 色99导航| 男女啪啪网站 | 999国产在线| 日韩啪啪小视频 | 亚洲禁18久人片 | 久久久久久久看片 | 国产精品久久久久aaaa | 亚洲最大成人免费网站 | 手机色站 | 国产精品av一区二区 | 超碰国产人人 | 丰满少妇在线观看 | 国产精品黑丝在线观看 | 欧美日韩久久不卡 | 久久国产精品二国产精品中国洋人 | 国产午夜精品免费一区二区三区视频 | 午夜三级影院 | 久久99亚洲热视 | 91在线网站| 国产精品嫩草影院9 | 免费看wwwwwwwwwww的视频 久久久久久99精品 91中文字幕视频 | 99爱这里只有精品 | 久久久久免费网 | 丁香激情综合国产 | 日韩视频图片 | 日韩一二三区不卡 | 日韩簧片在线观看 | 婷婷网站天天婷婷网站 | 午夜久久影视 | 蜜臀aⅴ国产精品久久久国产 | 久久天堂影院 | 在线观看福利网站 | 五月天激情综合 | 日韩欧美国产精品 | 国内精品毛片 | 国产精品美女久久久久久免费 | 亚洲精品电影在线 | 中文字幕在线日亚洲9 | 黄色在线视频网址 | 国产精品大全 | 天天曰视频 | 一区二区三区国产精品 | 免费视频成人 | 五月网婷婷 | 欧美日韩中文在线视频 | 久久久免费国产 | 一区二区中文字幕在线 | 婷婷激情欧美 | 欧美日韩免费一区二区三区 | 国产福利资源 | 亚洲精品看片 | 欧美xxxxx在线视频 | 国产免费观看高清完整版 | 欧美激情第一页xxx 午夜性福利 | 精品一区二区久久久久久久网站 | 黄色小视频在线观看免费 | 国产剧情一区二区 | av高清在线 | 一区二区欧美在线观看 | 成人羞羞视频在线观看免费 | 91在线最新 | 日韩视频免费在线 | 中文字幕影片免费在线观看 | 久久久精品二区 | 色五月激情五月 | 天天综合在线观看 | 免费男女羞羞的视频网站中文字幕 | 亚洲一级理论片 | 美女在线黄| 九七人人干 | 97在线观看免费观看 | 天天夜夜狠狠操 | 久久久久久久久久久黄色 | 国产精品久久久久久999 | 久久精品国产一区二区电影 | 天天干天天天天 | 欧美久久久久久久久 | 天天操天天干天天爽 | 亚洲精品乱码久久久一二三 | 国产美女在线精品免费观看 | 日韩精品一区二区在线观看 | 久久久久国产成人精品亚洲午夜 | 天堂网在线视频 | 天堂av在线中文在线 | 黄色三级视频片 | 久久视频在线看 | 国产亚洲aⅴaaaaaa毛片 | 五月婷婷免费 | 激情久久婷婷 | 日日综合网 | 五月婷婷毛片 | 日韩欧美一区二区三区在线 | 亚洲午夜精品一区二区三区电影院 | 国产成人精品av在线观 | 中文字幕在线观看不卡 | 91| 午夜精品久久久99热福利 | 国产视频一区精品 | 免费观看性生活大片 | 日韩精品一区二区三区免费观看视频 | 操操日 | 国产在线 一区二区三区 | 97在线免费视频观看 | 国产成人综合精品 | 国产精品一区在线观看你懂的 | 在线观看视频你懂得 | 香蕉视频国产在线观看 | 日本久久久影视 | 日韩免费视频在线观看 | 91在线中文| 西西444www大胆高清视频 | 免费欧美| 亚洲在线视频免费 | 久久久99精品免费观看app | 四虎影视成人永久免费观看视频 | 欧美一区,二区 | 国产精品大尺度 | 在线观看视频你懂的 | 天天操网| 99久久99 | aaa日本高清在线播放免费观看 | 一级做a爱片性色毛片www | 丰满少妇高潮在线观看 | 亚洲狠狠丁香婷婷综合久久久 | 99精品在线免费观看 | 五月天婷亚洲天综合网精品偷 | 成人国产亚洲 | 日韩在观看线 | www.久久久.cum | 欧美日韩精 | 日韩精品一区二区三区中文字幕 | www.xxxx欧美| 国产午夜精品久久 | 国产一区视频导航 | 成人黄色在线播放 | 国产在线永久 | 在线看片视频 | 亚洲经典中文字幕 | 国产高清成人 | 成年人毛片在线观看 | 天天操操操操操 | 久久ww | 中文字幕丝袜 | 热久久99这里有精品 | 97视频总站 | 国产一区二区成人 | 成人三级黄色 | 91视频在线免费下载 | 手机在线视频福利 | 天天插天天干天天操 | 麻豆视频在线看 | 色婷久久 | 亚洲免费资源 | 免费久久久久久 | 日韩视频中文字幕在线观看 | 人人舔人人 | 亚洲精品高清一区二区三区四区 | 天堂av在线免费观看 | 免费欧美精品 | 国产精品久久三 | 国产黄色片久久久 | 97人人模人人爽人人喊中文字 | 色福利网| 免费在线播放av电影 | 亚洲午夜精品福利 | 在线观看免费高清视频大全追剧 | 国产精品丝袜在线 | 国产精品video爽爽爽爽 | 亚洲成人二区 | 中文字幕在线一二 | 久久av在线 | 久久精品一二三区 | 久久久综合电影 | 超碰在线中文字幕 | 欧美性春潮 | 日韩一区视频在线 | 国产精品免费不卡 | 国产美女精品人人做人人爽 | 99精品偷拍视频一区二区三区 | 色综合久久久久综合 | 日韩精品电影在线播放 | 国产亚洲片 | 国内三级在线观看 | 97精品国产91久久久久久 | 日韩mv欧美mv国产精品 | 色中文字幕在线观看 | 日日夜夜精品网站 | 免费高清男女打扑克视频 | 亚洲国产欧美在线人成大黄瓜 | 欧美精品一区二区在线观看 | 在线视频一区观看 | 日韩色一区二区三区 | 国产精品18久久久久久首页狼 | 国产精品美 | 人人舔人人射 | 国产精品午夜av | 99久久er热在这里只有精品15 | 亚洲欧美视屏 | 国产99在线 | 又湿又紧又大又爽a视频国产 | 亚洲一区不卡视频 | 日本不卡一区二区三区在线观看 | 中文字幕在线观看1 | 国产精品伦一区二区三区视频 | 在线有码中文 | 人人看人人爱 | 国产性天天综合网 | 国产亚洲精品福利 | 三级视频国产 | 99热这里只有精品免费 | 亚洲乱码国产乱码精品天美传媒 | 国产亚洲精品久久久久5区 成人h电影在线观看 | 久久在线 | 黄色网大全| 亚洲撸撸 | 九九九九精品 | 久久久久久久久久久久久久av | 毛片无卡免费无播放器 | 最近免费在线观看 | 日日干网址| 国产精品中文 | 国产亚洲一区二区在线观看 | 99国产高清| 97免费视频在线 | 91成人精品在线 | 伊人伊成久久人综合网站 | 国产视频九色蝌蚪 | 韩国精品福利一区二区三区 | 日韩在线一级 | 四虎影视8848dvd| 黄色大片日本免费大片 | 精品一区二区在线免费观看 | 日女人免费视频 | 亚洲日韩精品欧美一区二区 | 天天se天天cao天天干 | 久久精品中文字幕一区二区三区 | 91精品国产成人www | 9999毛片| 天天激情综合 | 韩国中文三级 | 亚洲男模gay裸体gay | 日韩精品中文字幕av | 日本精品午夜 | 久久国产精品一国产精品 | 天天射天天爱天天干 | 国产精品永久免费在线 | 亚洲综合在线播放 | 欧美激情精品久久久久久免费 | 精品久久久久久久久久 | 国产免费观看高清完整版 | 久久天天躁狠狠躁夜夜不卡公司 | 婷婷福利影院 | 久久夜靖品| 日韩高清无线码2023 | 日韩激情视频在线观看 | 亚洲精品三级 | 日韩在线首页 | 国产在线高清精品 | 久久久久久久影视 | 久久免费国产精品 | 日韩亚洲国产精品 | 国产一区二区不卡视频 | 国产黄色免费在线观看 | 国产电影一区二区三区四区 | 精品久久久久久综合日本 | 狠狠色丁香婷婷综合久小说久 | 五月开心六月婷婷 | 久久精品系列 | 99热 精品在线 | 日韩中字在线 | 一区在线观看视频 | 日韩精品久久久久久中文字幕8 | 亚洲精品国产成人av在线 | 中文在线a∨在线 | 啪啪精品 | 成人精品一区二区三区电影免费 | 在线观看日本韩国电影 | 在线中文字幕av观看 | 天天看天天干天天操 | 国产精品美女在线观看 | 午夜久久视频 | 一本到在线 | 久久久久欠精品国产毛片国产毛生 | 91久色蝌蚪| 天天综合在线观看 | 激情小说久久 | 波多野结衣一区 | 久久久久国产一区二区三区 | 91精选在线观看 | 人人澡人人爽 | 色a综合 | 国产精成人品免费观看 | 精品国产乱码久久久久久1区二区 | 97在线公开视频 | 亚洲日韩精品欧美一区二区 | 91污视频在线 | 一区二区三区在线免费 | 国产精品大片免费观看 | 超碰资源在线 | 最近更新好看的中文字幕 | 欧美日韩不卡在线 | 久久高清免费视频 | 婷婷狠狠操 | 国产精品久久久久久久毛片 | 久草在线视频网 | 国产精品一区二区电影 | 中文字幕 在线 一 二 | 99性视频| 久久视频免费观看 | 国产免费小视频 | 亚洲国产精品久久久久久 | 亚洲成人精品影院 | 欧美了一区在线观看 | 久久精品一区二区三区国产主播 | 久久久国产精品网站 | 国产97视频在线 | 91亚洲成人 | 在线免费黄色 | 色多多视频在线观看 | 99这里只有精品视频 | 日韩三级久久 | 四虎成人免费观看 | 久久99精品国产91久久来源 | a v在线观看 | 亚洲精品国久久99热 | 国产尤物在线观看 | 黄色大全免费观看 | 视频三区在线 | 人人干人人草 | 国产精品一区二区三区久久 | 国产永久免费 | 久久天堂影院 | 欧美日韩一区二区三区在线观看视频 | 丁香色婷 | 精品国产一区二区三区四 | av在线之家电影网站 | 丁香六月婷婷开心 | 精品久久久久免费极品大片 | 岛国av在线 | 国产精品破处视频 | 免费看的黄色 | 婷婷中文字幕综合 | 国产综合在线观看视频 | 日韩欧美在线视频一区二区 | 天天夜夜狠狠操 | 成人在线播放视频 | 天天草天天 | 日韩美女黄色片 | 88av视频| 欧美日韩高清一区 | 91av视频免费在线观看 | 久草在线视频网站 | 免费看的黄色小视频 | 亚洲国产成人久久综合 | 国产高清第一页 | 日本性动态图 | 99热精品免费观看 | 天堂av免费观看 | 久久在现 | 国产精品99久久久久久大便 | 国产精品毛片久久久久久 | 国产一级特黄毛片在线毛片 | 国产成人av片 | 少妇搡bbb| 国产黄在线 | 亚洲欧美日韩精品一区二区 | 高清一区二区三区av | 天堂av在线网 | 国产精品久久中文字幕 | 亚洲精品美女久久久久 | 激情欧美一区二区免费视频 | 欧美另类高潮 | 国产精品99精品久久免费 | 久久综合干 | 国产精品高清在线观看 | 婷婷午夜激情 | 99在线免费视频 | 成人黄视频 | 97免费在线观看视频 | 亚洲国产片 | 日日弄天天弄美女bbbb | 国内精品福利视频 | 日韩精品视频网站 | 午夜色性片| 亚洲精品中文字幕在线 | 国产手机在线 | 免费又黄又爽视频 | 亚洲视屏在线播放 | 国产久草在线观看 | 国产91精品一区二区麻豆亚洲 | 国产精品一区二区你懂的 | 国产小视频在线播放 | 国产在线国产 | 国产精品aⅴ | 久国产在线播放 | 久久久久久久久久国产精品 | 五月综合激情婷婷 | 国产无套一区二区三区久久 | 欧美a级免费视频 | 精品亚洲国产视频 | www成人精品| 亚洲一级在线观看 | www.久草视频| 98精品国产自产在线观看 | 婷婷色网视频在线播放 | av在线影视 | 久久国产精品99久久久久久老狼 | 美女久久久 | 四虎欧美 | 天天操天天插 | 精品福利片 | 国产区网址 | 日本久久免费视频 | 国产精品乱码在线 | 亚洲电影免费 | 在线有码中文 | 99精品免费在线 | 2024国产在线 | 天堂在线v | 久久精品久久久久久久 | 青草视频免费观看 | 日韩电影在线一区 | 午夜av在线电影 | 江苏妇搡bbbb搡bbbb | 日日操天天操狠狠操 | 国产经典三级 | 亚洲情婷婷 | 亚洲国产一二三 | 天天艹天天 | 色综合天天色综合 | 日韩精品免费一区 | 久久久久北条麻妃免费看 | 国产99爱| av官网 | 欧美日韩成人 | 亚洲午夜精品福利 | 日日干干 | 深爱婷婷久久综合 | 天天插天天爽 | 亚洲成人国产 | 一区二区三区免费播放 | 久久人人爽人人爽人人 | 国产麻豆精品久久一二三 | av资源免费在线观看 | 九九交易行官网 | 在线国产一区二区 | 四虎影视成人精品国库在线观看 | 日韩精品91偷拍在线观看 | av网站在线观看免费 | 欧美日本啪啪无遮挡网站 | 一区二区 精品 | 91在线一区 | 欧美精品一区二区蜜臀亚洲 | 182午夜在线观看 | 日韩欧美国产激情在线播放 | 国产精品 亚洲精品 | 日韩一片| 五月婷婷狠狠 | 中国一级特黄毛片大片久久 | 丁香花在线视频观看免费 | 外国av网 | 中文字幕乱码在线播放 | 在线观看一级视频 | 日韩高清精品免费观看 | 久草99 | 少妇精69xxtheporn | 国产亚洲综合在线 | 亚洲美女精品 | 亚洲美女在线一区 | av电影一区二区三区 | 天堂网av 在线 | 精品国产伦一区二区三区观看方式 | 日韩电影在线一区 | 91视频黄色 | 午夜精品久久久久久久99热影院 | 91桃色免费观看 | 精品一区二区三区久久久 | 天天干,天天射,天天操,天天摸 | 久草视频手机在线 | 操操操综合 | 精品久久久999| 国产成人一区二区三区电影 | 超碰在线人人草 | 在线观看视频在线观看 | 久久免费视频在线观看30 | 久久成人国产精品 | 成人精品影视 | 国产中文字幕在线播放 | 国产中文欧美日韩在线 | 日本精油按摩3 | 午夜久久久久久久 | 中文字幕精品久久 | 久久精品视频在线播放 | 午夜三级毛片 | 久久这里只有精品23 | 三级黄免费看 | 久久久精品视频成人 | 美女黄频免费 | 久久国产视频网 | 夜夜操网 | 五月天色丁香 | 久久夜靖品 | 91久久国产自产拍夜夜嗨 | 在线小视频你懂的 | 国产亚洲精品bv在线观看 | 日韩高清 一区 | 亚洲国产经典视频 | 亚洲成人中文在线 | 免费的国产精品 | 国产精品24小时在线观看 | 国产91精品看黄网站 | 久久视频在线观看中文字幕 | 91大神精品视频在线观看 | 国产视频二区三区 | 少妇精品久久久一区二区免费 | www色| 国内外成人免费在线视频 | 国产精品淫| www99久久 | 99精品视频一区二区 | 国产精品女视频 | 99r在线 | 久久久精品在线观看 | 国产精品久久久久久久久免费看 | 99久久精品免费视频 | www日韩在线 | 一区在线免费观看 | 精品亚洲二区 | 日日夜夜天天综合 | 日韩视频免费在线观看 | 亚洲第一av在线播放 | 在线观看av麻豆 | 久久午夜鲁丝片 | 国产裸体bbb视频 | 国产视频一区二区在线观看 | 91成人精品国产刺激国语对白 | 欧美精品一区二区三区一线天视频 | 国内精品视频在线 | 香蕉网址 | 9999亚洲| 国产四虎影院 | 日本黄色免费播放 | 日韩视频中文字幕在线观看 | 国产特级毛片aaaaaaa高清 | 久久人人爽av | 人人超碰人人 | 国产五月 | 日韩精品久久久免费观看夜色 | 五月天婷婷在线观看视频 | 午夜体验区 | 婷婷丁香激情综合 | 精品一二三区 | 天堂va在线观看 | 麻豆视频www | www.一区二区三区 | 亚洲免费视频观看 | 国产在线精品一区二区 | 久久久精品欧美一区二区免费 | 天天操综合 | 九色在线视频 | 亚洲最大av在线播放 | 在线91色| 中文字幕888 | 久久久天天操 | 久草在线免费在线观看 | 国产精品久久二区 | 免费看三级 | 色香蕉视频 | 久久综合欧美精品亚洲一区 | 成人毛片100免费观看 | 国产精品一区二区久久精品 | 免费看一级黄色大全 | 麻豆视频免费观看 | 91成版人在线观看入口 | 麻豆视频免费播放 | 操操操夜夜操 | 中文字幕2021 | 一本一本久久aa综合精品 | 天堂网在线视频 | 国产一级免费在线观看 | 亚洲日韩精品欧美一区二区 | 久久精品男人的天堂 | 日韩在线视频网站 | 波多野结衣精品视频 | 日本激情中文字幕 | 久草视频在线免费播放 | 日韩有码中文字幕在线 | 在线观看成人毛片 | 91久久在线观看 | 国产一级性生活 | 不卡日韩av| 天天干 夜夜操 | 波多野结衣一区二区 | 中文区中文字幕免费看 | 婷婷丁香七月 | 日韩视 | 婷婷国产一区二区三区 | 国产婷婷vvvv激情久 | 国产中文字幕亚洲 | 亚洲精品视频在线观看免费视频 | 中文在线字幕免费观 | 2019精品手机国产品在线 | 久久99精品久久久久久久久久久久 | 二区三区毛片 | 亚洲成a人片在线观看网站口工 | 天天摸天天操天天舔 | 天天干天天草天天爽 | 香蕉精品在线观看 | 欧美日韩国产亚洲乱码字幕 | www.天天操.com | 五月婷婷婷婷婷 | 又色又爽又黄高潮的免费视频 | av在线之家电影网站 | 日韩成人免费在线观看 | 亚洲香蕉在线观看 | 91中文字幕视频 | 深爱激情久久 | 久久久久久久网站 | 中文字幕黄色网址 | 少妇性bbb搡bbb爽爽爽欧美 | 午夜精品久久久久久久99 | 亚洲精品 在线视频 | 五月婷婷婷婷婷 | 九九九电影免费看 | 亚洲成人精品av | 天天干天天操天天操 | 亚洲在线看 | 国产高清绿奴videos | 四虎影视www| 91在线看片 | 香蕉视频免费在线播放 | 看片在线亚洲 | 少妇av片 | 一二三区高清 | 美女免费黄网站 | 国产精品自在欧美一区 | av成年人电影 | 国产伦理久久精品久久久久_ | 亚洲国内精品在线 | 亚洲综合网 | 99热精品国产一区二区在线观看 | 久草在线资源观看 | 亚洲精品在线二区 | 国产精品久久麻豆 | 久久福利精品 | 久草在在线 | 精品国偷自产在线 | 午夜视频在线观看一区 | 久久人人爽 | 日韩中文在线观看 | 在线精品视频在线观看高清 | 婷香五月| 高清有码中文字幕 | 91av大全 | 在线免费高清视频 | 国产麻豆精品久久一二三 | 97在线影视| 在线国产精品一区 | 狠狠狠色丁香综合久久天下网 | 在线观看日本韩国电影 | 成人影片在线免费观看 | 日韩欧美久久 | 蜜臀av一区| 91av视频免费观看 | 欧美日韩在线观看一区二区三区 | 在线黄网站 | 怡红院av | 久久99偷拍视频 | 色干综合 | 亚洲精品欧美专区 | 人人爽人人看 | 天天色官网 | 黄色一级性片 | 玖玖玖精品 | 国产日韩精品在线观看 | 国产精品成人一区二区三区 | 最近能播放的中文字幕 | 欧美精品免费视频 | 亚洲精品在线视频播放 | 中文字幕免费播放 | 天堂在线v | 欧美一级爽 | 91精品网站 | 2019中文最近的2019中文在线 | 色诱亚洲精品久久久久久 | 婷婷亚洲最大 | 欧美色图亚洲图片 | 久在线观看视频 | 一区二区三区高清 | 久草在线视频在线 | 婷婷福利影院 | 色综合天天天天做夜夜夜夜做 | 中文字幕在线播放视频 | 国产91精品高清一区二区三区 | av不卡免费在线观看 | 欧美一二三视频 | 亚洲在线视频观看 | 91香蕉视频 | 亚洲精品理论片 | 黄色软件大全网站 | 在线观看av的网站 | 国产馆在线播放 | 欧美一级性生活视频 | av在线成人 | 2021国产视频 | 日韩在线电影 | 啪啪小视频网站 | 四虎成人精品永久免费av九九 | 日韩黄色在线 | 日一日操一操 | 精品久久久久久亚洲综合网站 | 日韩欧美精品一区 | 中文字幕在线中文 | 韩国av免费在线观看 | 免费久久精品视频 | x99av成人免费 | 四川bbb搡bbb爽爽视频 | 久久久精品国产一区二区电影四季 | 亚洲欧洲av在线 | 91麻豆精品国产91久久久久久 | 亚洲aⅴ乱码精品成人区 | 久久综合狠狠综合久久激情 | 欧美日韩综合在线观看 | 精品久久综合 | 成人香蕉视频 | 欧美动漫一区二区三区 | 国产黄色精品在线 | 日韩中文字幕免费在线播放 | 精品一二 | 免费成人av在线 | 久久久精品99 | 操操操夜夜操 | 中文字幕久久久精品 | 国产香蕉av| 国产在线观看午夜 | 99超碰在线播放 | 中文字幕国语官网在线视频 | 国产精品6 | 精品国产伦一区二区三区观看体验 | 美女露久久 | 五月黄色 | 欧美一二区视频 | 日韩电影黄色 | 久久久久久久99精品免费观看 | 日韩高清在线一区二区 | 国产麻豆果冻传媒在线观看 | 久久综合久久综合这里只有精品 | 久久视频国产精品免费视频在线 | 精品久久久久久久久久久久久久久久 | 在线黄av | 91视频在线 | 日韩精品影视 | 欧美成人a在线 | 亚洲精品小视频在线观看 | 久久国产精品色婷婷 | 中文字幕 国产精品 | 九九视频在线播放 | 波多野结衣亚洲一区二区 | 精品国产99国产精品 | 97超碰成人| 国产亚洲成人精品 | 91视频链接 | 国产中文字幕一区二区三区 | 国产手机视频 | 欧美日韩中文字幕视频 | 亚洲精品视频播放 | 久久久黄色av | 91三级视频| 日韩网站一区 | 亚洲精品高清一区二区三区四区 | 久久理论视频 |