~hexmode/+junk/main

« back to all changes in this revision

Viewing changes to install-files/apps/phpmyadmin2.10.1/libraries/export/xls.php

  • Committer: Mark A. Hershberger
  • Date: 2008-01-05 19:38:56 UTC
  • Revision ID: hershberger@spawn-xp-20080105193856-6rnzgwa4nehue3qj
initial commit

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
<?php
 
2
/* $Id: xls.php 9438 2006-09-21 14:28:46Z cybot_tm $ */
 
3
// vim: expandtab sw=4 ts=4 sts=4:
 
4
 
 
5
// Check if we have native MS Excel export using PEAR class Spreadsheet_Excel_Writer
 
6
if (!empty($GLOBALS['cfg']['TempDir'])) {
 
7
    @include_once('Spreadsheet/Excel/Writer.php');
 
8
    if (class_exists('Spreadsheet_Excel_Writer')) {
 
9
        $xls = TRUE;
 
10
    } else {
 
11
        $xls = FALSE;
 
12
    }
 
13
} else {
 
14
    $xls = FALSE;
 
15
}
 
16
 
 
17
if ($xls) {
 
18
 
 
19
    if (isset($plugin_list)) {
 
20
        $plugin_list['xls'] = array(
 
21
            'text' => 'strStrucNativeExcel',
 
22
            'extension' => 'xls',
 
23
            'mime_type' => 'application/vnd.ms-excel',
 
24
            'force_file' => true,
 
25
            'options' => array(
 
26
                array('type' => 'text', 'name' => 'null', 'text' => 'strReplaceNULLBy'),
 
27
                array('type' => 'text', 'name' => 'columns', 'text' => 'strPutColNames'),
 
28
                array('type' => 'hidden', 'name' => 'data'),
 
29
                ),
 
30
            'options_text' => 'strStrucNativeExcelOptions',
 
31
            );
 
32
    } else {
 
33
 
 
34
/**
 
35
 * Set of functions used to build MS Excel dumps of tables
 
36
 */
 
37
 
 
38
/**
 
39
 * Outputs comment
 
40
 *
 
41
 * @param   string      Text of comment
 
42
 *
 
43
 * @return  bool        Whether it suceeded
 
44
 */
 
45
function PMA_exportComment($text)
 
46
{
 
47
    return TRUE;
 
48
}
 
49
 
 
50
/**
 
51
 * Outputs export footer
 
52
 *
 
53
 * @return  bool        Whether it suceeded
 
54
 *
 
55
 * @access  public
 
56
 */
 
57
function PMA_exportFooter()
 
58
{
 
59
    global $workbook;
 
60
    global $tmp_filename;
 
61
 
 
62
    $res = $workbook->close();
 
63
    if (PEAR::isError($res)) {
 
64
        echo $res->getMessage();
 
65
        return FALSE;
 
66
    }
 
67
    if (!PMA_exportOutputHandler(file_get_contents($tmp_filename))) {
 
68
        return FALSE;
 
69
    }
 
70
    unlink($tmp_filename);
 
71
 
 
72
    return TRUE;
 
73
}
 
74
 
 
75
/**
 
76
 * Outputs export header
 
77
 *
 
78
 * @return  bool        Whether it suceeded
 
79
 *
 
80
 * @access  public
 
81
 */
 
82
function PMA_exportHeader()
 
83
{
 
84
    global $workbook;
 
85
    global $tmp_filename;
 
86
 
 
87
    if (empty($GLOBALS['cfg']['TempDir'])) {
 
88
        return FALSE;
 
89
    }
 
90
    $tmp_filename = tempnam(realpath($GLOBALS['cfg']['TempDir']), 'pma_xls_');
 
91
    $workbook = new Spreadsheet_Excel_Writer($tmp_filename);
 
92
 
 
93
    return TRUE;
 
94
}
 
95
 
 
96
/**
 
97
 * Outputs database header
 
98
 *
 
99
 * @param   string      Database name
 
100
 *
 
101
 * @return  bool        Whether it suceeded
 
102
 *
 
103
 * @access  public
 
104
 */
 
105
function PMA_exportDBHeader($db)
 
106
{
 
107
    return TRUE;
 
108
}
 
109
 
 
110
/**
 
111
 * Outputs database footer
 
112
 *
 
113
 * @param   string      Database name
 
114
 *
 
115
 * @return  bool        Whether it suceeded
 
116
 *
 
117
 * @access  public
 
118
 */
 
119
function PMA_exportDBFooter($db)
 
120
{
 
121
    return TRUE;
 
122
}
 
123
 
 
124
/**
 
125
 * Outputs create database database
 
126
 *
 
127
 * @param   string      Database name
 
128
 *
 
129
 * @return  bool        Whether it suceeded
 
130
 *
 
131
 * @access  public
 
132
 */
 
133
function PMA_exportDBCreate($db)
 
134
{
 
135
    return TRUE;
 
136
}
 
137
 
 
138
/**
 
139
 * Outputs the content of a table in CSV format
 
140
 *
 
141
 * @param   string      the database name
 
142
 * @param   string      the table name
 
143
 * @param   string      the end of line sequence
 
144
 * @param   string      the url to go back in case of error
 
145
 * @param   string      SQL query for obtaining data
 
146
 *
 
147
 * @return  bool        Whether it suceeded
 
148
 *
 
149
 * @access  public
 
150
 */
 
151
function PMA_exportData($db, $table, $crlf, $error_url, $sql_query)
 
152
{
 
153
    global $what;
 
154
    global $workbook;
 
155
 
 
156
    $worksheet =& $workbook->addWorksheet($table);
 
157
    $workbook->setTempDir(realpath($GLOBALS['cfg']['TempDir']));
 
158
 
 
159
    // Gets the data from the database
 
160
    $result      = PMA_DBI_query($sql_query, null, PMA_DBI_QUERY_UNBUFFERED);
 
161
    $fields_cnt  = PMA_DBI_num_fields($result);
 
162
    $col         = 0;
 
163
 
 
164
    // If required, get fields name at the first line
 
165
    if (isset($GLOBALS['xls_columns']) && $GLOBALS['xls_columns'] == 'yes') {
 
166
        $schema_insert = '';
 
167
        for ($i = 0; $i < $fields_cnt; $i++) {
 
168
            $worksheet->write(0, $i, stripslashes(PMA_DBI_field_name($result, $i)));
 
169
        } // end for
 
170
        $col++;
 
171
    } // end if
 
172
 
 
173
    // Format the data
 
174
    while ($row = PMA_DBI_fetch_row($result)) {
 
175
        $schema_insert = '';
 
176
        for ($j = 0; $j < $fields_cnt; $j++) {
 
177
            if (!isset($row[$j]) || is_null($row[$j])) {
 
178
                $worksheet->write($col, $j, $GLOBALS['xls_null']);
 
179
            } elseif ($row[$j] == '0' || $row[$j] != '') {
 
180
                /**
 
181
                 * @todo we should somehow handle character set here!
 
182
                 */
 
183
                $worksheet->write($col, $j, $row[$j]);
 
184
            } else {
 
185
                $worksheet->write($col, $j, '');
 
186
            }
 
187
        } // end for
 
188
        $col++;
 
189
    } // end while
 
190
    PMA_DBI_free_result($result);
 
191
 
 
192
    return TRUE;
 
193
}
 
194
 
 
195
    }
 
196
}
 
197
?>