文件导出dbf功能实现

功能要求

网站后台需增加一个导出功能,导出文件格式及说明见附件。(需要导出的字段在现有数据库中全部包含,不需要新增内容)

要求:

1、包含第二天要送货的订单内容,可以选择送货日期再导出
2、一天可以多次导出,已经导出过的订单,不需要重复导出
3、导出文件需要上传到指定的FTP目录

 

附件Need.dbf(导出格式) 

PROTCODE

DEPTCODE

DEPTNAME

GOODSCODE

GOODSNAME

CLASSIFY

CLANAME

CLASSI

CLASSINAME

RES

WAREFNO

MARK

AAAAAAAAAAAA

901         

罗湖中转站A9

5508001     

6寸抹茶蜜豆 

55

网络蛋糕类  

5508        

网络蛋糕类  

1           

 

0           

 

REALFRAME

BUYQUAN

BUYDAY

NEEDQUAN

NEEDTOTAL

NEEDBOX

REALQUAN

REALTOTAL

REALBOX

0.0000

0.0000

0.0000

4.0000

0.0000

0.0000

0.0000

0.0000

901         

TYPE

DDATE1

DDATE2

OPERATE

BILLNO

JUDGE

RELA_SHIP

WORKDATE

0.0000

2011-6-2

2011-6-3

就爱族      

001A01106020

0

20110602    

20110602    

 

 

导出文件字段及格式.xls(数据字段说明)

 

AAAAAAAAAAAA

901         

罗湖中转站A9

5508001     

6寸抹茶蜜豆 

55

网络蛋糕类  

5508        

网络蛋糕类  

1           

字段名

字段内容示例

字段格式

字段说明

PROTCODE

AAAAAAAAAAAA

文本

固定(12个大写A)

DEPTCODE

901

文本

中转站编号(901、902、903)

DEPTNAME

罗湖中转站A901

文本

中转站名称+编号

GOODSCODE

5508001

文本

产品编号

GOODSNAME

6寸抹茶蜜豆蛋糕

文本

产品名称

CLASSIFY

55

文本

大类(产品编号前两位)

CLANAME

网络蛋糕类

文本

固定

CLASSI

5508

文本

小类(产品编号前4位)

CLASSINAME

网络蛋糕类

文本

固定

RES

1

文本

固定

WAREFNO

 

文本

MARK

0

文本

固定

REALFRAME

0.0000

数字

固定

BUYQUAN

0.0000

数字

固定

BUYDAY

0.0000

数字

固定

NEEDQUAN

4.0000

数字

产品数量

NEEDTOTAL

0.0000

数字

固定

NEEDBOX

0.0000

数字

固定

REALQUAN

0.0000

数字

固定

REALTOTAL

0.0000

数字

固定

REALBOX

901

文本

中转店编号

TYPE

0.0000

数字

固定

DDATE1

2011-6-2

日期

订单日期

DDATE2

2011-6-3

日期

送货日期

OPERATE

就爱族

文本

固定

BILLNO

001A01106020001

文本

订单编号

JUDGE

0

数字

固定

RELA_SHIP

20110602

文本

订单日期

WORKDATE

20110602

文本

导出日期

 

 

实现过程

后台添加一文件导出菜单

dbf文件可以使用dbfview软件打开 

php.ini中需要启用 
extension=php_dbase.dll 

注意:dbf文件编码要设置成GB2312 否则乱码

 

 

程序实现

后台文件修改:

 

添加文件\almc\export.php文件   编码需要设置为GB2312

<?php

//导出.dbf文件

 

header("Content-Type: text/html; charset=GB2312");

 

//   database   "definition "

$def = array(

    array("PROTCODE", "C", 12), //固定(12个大写A)

    array("DEPTCODE", "C", 3), //中转站编号(901、902、903)

    array("DEPTNAME", "C", 255), //中转站名称+编号

    array("GOODSCODE", "C", 7), //产品编号

    array("GOODSNAME", "C", 255), //产品名称

 

    array("CLASSIFY", "C", 2), //大类(产品编号前两位)

    array("CLANAME", "C", 255), //固定

    array("CLASSI", "C", 4), //小类(产品编号前4位)

    array("CLASSINAME", "C", 255), //固定

    array("RES", "C", 1), //固定

 

    array("WAREFNO", "C", 255), //空

    array("MARK", "C", 255), //固定

    array("REALFRAME", "N", 20, 4), //固定

    array("BUYQUAN", "N", 20, 4), //固定

    array("BUYDAY", "N", 20, 4), //固定

 

    array("NEEDQUAN", "N", 20, 4), //产品数量

    array("NEEDTOTAL", "N", 20, 4), //固定

    array("NEEDBOX", "N", 20, 4), //固定

    array("REALQUAN", "N", 20, 4), //固定

    array("REALTOTAL", "N", 20, 4), //固定

 

    array("REALBOX", "C", 255), //中转店编号

    array("TYPE", "N", 20, 4), //固定

    array("DDATE1", "D"), //订单日期

    array("DDATE2", "D"), //送货日期

    array("OPERATE", "C", 255), //固定

 

    array("BILLNO", "C", 255), //订单编号

    array("JUDGE", "N", 20, 4), //固定

    array("RELA_SHIP", "C", 255), //订单日期

    array("WORKDATE", "C", 255), //导出日期

);

 

//   creation

if (!dbase_create('dbf/test.dbf ', $def)) {

    echo "Error,   can 't   create   the   database\n ";

}

 

//   open   in   read-write   mode

$db = dbase_open('dbf/test.dbf', 2);

 

if ($db) {

    dbase_add_record($db, array(

        'AAAAAAAAAAAA', '901', '罗湖中转站A9', '5508001', '6寸抹茶蜜豆',

        '55', '网络蛋糕类', '5508', '网络蛋糕类', '1',

        '', '0', '0.0000', '0.0000', '0.0000',

        '4.0000', '0.0000', '0.0000', '0.0000', '0.0000',

        '901', '0.0000', '2011-6-2', '2011-6-3', '就爱族',

        '001A01106020', '0', '20110602', '20110602'

    ));

    dbase_add_record($db, array(

        'AAAAAAAAAAAA', '901', '罗湖中转站A9', '5508001', '6寸抹茶蜜豆',

        '55', '网络蛋糕类', '5508', '网络蛋糕类', '1',

        '', '0', '0.0000', '0.0000', '0.0000',

        '4.0000', '0.0000', '0.0000', '0.0000', '0.0000',

        '901', '0.0000', '2011-6-2', '2011-6-3', '就爱族',

        '001A01106020', '0', '20110602', '20110602'

));

    

}

//var_dump(dbase_get_record($db, 1));

 

dbase_close($db);

?>

原文地址:https://www.cnblogs.com/ybbqg/p/2399661.html