热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

php+excel通用成绩查询系统手机网页sae版-PHP源码

php+excel通用成绩查询系统手机网页sae版

1. index.php












返回

" id="Codes" OnClick="this.src='inc/code.php?t='+new Date();"/>

说明:【+验证码】都输入正确才显示相应结果。

'; echo $shujus; echo '

&#39;; } $data = new Spreadsheet_Excel_Reader(); $data->setOutputEncoding(&#39;UTF-8&#39;); $data->read($files); for ($i = 1; $i <= $data->sheets[0][&#39;numRows&#39;]; $i++) { if($i=="1"){ $iaa=""; for ($j = 1; $j <= $data->sheets[0][&#39;numCols&#39;]; $j++) { $taba = &#39;&#39;.$data->sheets[0][&#39;cells&#39;][$i][$j].&#39;&#39;; $io++; if($taba==$tiaojian1){ $iaa=$io-1; } } }else{ $Excelx=$data->sheets[0][&#39;cells&#39;][$i][$iaa+1]; if("_".$shuru1=="_".$Excelx){ $iae++; echo &#39;&#39;; echo &#39;&#39;; echo &#39;&#39;; for ($j = 1; $j <= $data->sheets[0][&#39;numCols&#39;]; $j++) { $tabe = &#39;&#39;.$data->sheets[0][&#39;cells&#39;][&#39;1&#39;][$j].&#39;&#39;; $tabu = &#39;&#39;.$data->sheets[0][&#39;cells&#39;][$i][$j].&#39;&#39;; echo &#39;&#39;; echo &#39;&#39;; echo &#39;&#39;; echo &#39;&#39;; } echo &#39;&#39;; echo &#39;
查询结果&#39; . $iae . &#39;
&#39;.$tabe.&#39;&#39;.$tabu.&#39;
&#39;; } } } if($iae<1){ echo &#39;&#39;; echo ""; echo &#39;
没有查询到 $shujus 中 $shuru1 相关信息哦
&#39;; } echo &#39;&#39;; fclose($filer); ?>

© 技术支持


2. conn.php

&#39;;
 //traverse($sub_dir);
 } else {    //如果是文件,直接输出
 // echo &#39;File in Directory &#39; . $path . &#39;: &#39; . $file . &#39;
&#39;; $file = str_replace($filephp,"",$file); //文件名除了后缀,不要包含.php echo &#39;&#39;; } } } function fileline1($path = &#39;.&#39;) { $data = new Spreadsheet_Excel_Reader(); $data->setOutputEncoding(&#39;UTF-8&#39;); $data->read($path); for ($j = 1; $j <= $data->sheets[0][&#39;numCols&#39;]; $j++) { $str .= &#39;&#39;.$data->sheets[0][&#39;cells&#39;][&#39;1&#39;][$j].&#39;&#39;; } $str = iconv(&#39;UTF-8&#39;, &#39;GB2312&#39;, $str); return $str; } function get_file_line( $file_name, $line ){ $n = 0; $handle = fopen($file_name,&#39;r&#39;); if ($handle) { while (!feof($handle)) { ++$n; $out = fgets($handle, 4096); if($line==$n) break; } fclose($handle); } if( $line==$n) return $out; return false; } ?>

3. excel.php

=4294967294) {
        $value=-2;
    }
    return $value;
}

function gmgetdate($ts = null){
    $k = array(&#39;seconds&#39;,&#39;minutes&#39;,&#39;hours&#39;,&#39;mday&#39;,&#39;wday&#39;,&#39;mon&#39;,&#39;year&#39;,&#39;yday&#39;,&#39;weekday&#39;,&#39;month&#39;,0);
    return(array_comb($k,split(":",gmdate(&#39;s:i:G:j:w:n:Y:z:l:F:U&#39;,is_null($ts)?time():$ts))));
}

// Added for PHP4 compatibility
function array_comb($array1, $array2) {
    $out = array();
    foreach ($array1 as $key => $value) {
        $out[$value] = $array2[$key];
    }
    return $out;
}

function v($data,$pos) {
    return ord($data[$pos]) | ord($data[$pos+1])<<8;
}

class OLERead {
    var $data = &#39;&#39;;
    function OLERead(){    }

    function read($sFileName){
        // check if file exist and is readable (Darko Miljanovic)
        if(!is_readable($sFileName)) {
            $this->error = 1;
            return false;
        }
        $this->data = @file_get_contents($sFileName);
        if (!$this->data) {
            $this->error = 1;
            return false;
        }
        if (substr($this->data, 0, 8) != IDENTIFIER_OLE) {
            $this->error = 1;
            return false;
        }
        $this->numBigBlockDepotBlocks = GetInt4d($this->data, NUM_BIG_BLOCK_DEPOT_BLOCKS_POS);
        $this->sbdStartBlock = GetInt4d($this->data, SMALL_BLOCK_DEPOT_BLOCK_POS);
        $this->rootStartBlock = GetInt4d($this->data, ROOT_START_BLOCK_POS);
        $this->extensiOnBlock= GetInt4d($this->data, EXTENSION_BLOCK_POS);
        $this->numExtensiOnBlocks= GetInt4d($this->data, NUM_EXTENSION_BLOCK_POS);

        $bigBlockDepotBlocks = array();
        $pos = BIG_BLOCK_DEPOT_BLOCKS_POS;
        $bbdBlocks = $this->numBigBlockDepotBlocks;
        if ($this->numExtensionBlocks != 0) {
            $bbdBlocks = (BIG_BLOCK_SIZE - BIG_BLOCK_DEPOT_BLOCKS_POS)/4;
        }

        for ($i = 0; $i <$bbdBlocks; $i++) {
            $bigBlockDepotBlocks[$i] = GetInt4d($this->data, $pos);
            $pos += 4;
        }


        for ($j = 0; $j <$this->numExtensionBlocks; $j++) {
            $pos = ($this->extensionBlock + 1) * BIG_BLOCK_SIZE;
            $blocksToRead = min($this->numBigBlockDepotBlocks - $bbdBlocks, BIG_BLOCK_SIZE / 4 - 1);

            for ($i = $bbdBlocks; $i <$bbdBlocks + $blocksToRead; $i++) {
                $bigBlockDepotBlocks[$i] = GetInt4d($this->data, $pos);
                $pos += 4;
            }

            $bbdBlocks += $blocksToRead;
            if ($bbdBlocks <$this->numBigBlockDepotBlocks) {
                $this->extensiOnBlock= GetInt4d($this->data, $pos);
            }
        }

        // readBigBlockDepot
        $pos = 0;
        $index = 0;
        $this->bigBlockChain = array();

        for ($i = 0; $i <$this->numBigBlockDepotBlocks; $i++) {
            $pos = ($bigBlockDepotBlocks[$i] + 1) * BIG_BLOCK_SIZE;
            //echo "pos = $pos";
            for ($j = 0 ; $j bigBlockChain[$index] = GetInt4d($this->data, $pos);
                $pos += 4 ;
                $index++;
            }
        }

        // readSmallBlockDepot();
        $pos = 0;
        $index = 0;
        $sbdBlock = $this->sbdStartBlock;
        $this->smallBlockChain = array();

        while ($sbdBlock != -2) {
            $pos = ($sbdBlock + 1) * BIG_BLOCK_SIZE;
            for ($j = 0; $j smallBlockChain[$index] = GetInt4d($this->data, $pos);
                $pos += 4;
                $index++;
            }
            $sbdBlock = $this->bigBlockChain[$sbdBlock];
        }


        // readData(rootStartBlock)
        $block = $this->rootStartBlock;
        $pos = 0;
        $this->entry = $this->__readData($block);
        $this->__readPropertySets();
    }

    function __readData($bl) {
        $block = $bl;
        $pos = 0;
        $data = &#39;&#39;;
        while ($block != -2)  {
            $pos = ($block + 1) * BIG_BLOCK_SIZE;
            $data = $data.substr($this->data, $pos, BIG_BLOCK_SIZE);
            $block = $this->bigBlockChain[$block];
        }
        return $data;
    }

    function __readPropertySets(){
        $offset = 0;
        while ($offset entry)) {
            $d = substr($this->entry, $offset, PROPERTY_STORAGE_BLOCK_SIZE);
            $nameSize = ord($d[SIZE_OF_NAME_POS]) | (ord($d[SIZE_OF_NAME_POS+1]) <<8);
            $type = ord($d[TYPE_POS]);
            $startBlock = GetInt4d($d, START_BLOCK_POS);
            $size = GetInt4d($d, SIZE_POS);
            $name = &#39;&#39;;
            for ($i = 0; $i <$nameSize ; $i++) {
                $name .= $d[$i];
            }
            $name = str_replace("\x00", "", $name);
            $this->props[] = array (
                &#39;name&#39; => $name,
                &#39;type&#39; => $type,
                &#39;startBlock&#39; => $startBlock,
                &#39;size&#39; => $size);
            if ((strtolower($name) == "workbook") || ( strtolower($name) == "book")) {
                $this->wrkbook = count($this->props) - 1;
            }
            if ($name == "Root Entry") {
                $this->rootentry = count($this->props) - 1;
            }
            $offset += PROPERTY_STORAGE_BLOCK_SIZE;
        }

    }


    function getWorkBook(){
        if ($this->props[$this->wrkbook][&#39;size&#39;] __readData($this->props[$this->rootentry][&#39;startBlock&#39;]);
            $streamData = &#39;&#39;;
            $block = $this->props[$this->wrkbook][&#39;startBlock&#39;];
            $pos = 0;
            while ($block != -2) {
                $pos = $block * SMALL_BLOCK_SIZE;
                $streamData .= substr($rootdata, $pos, SMALL_BLOCK_SIZE);
                $block = $this->smallBlockChain[$block];
            }
            return $streamData;
        }else{
            $numBlocks = $this->props[$this->wrkbook][&#39;size&#39;] / BIG_BLOCK_SIZE;
            if ($this->props[$this->wrkbook][&#39;size&#39;] % BIG_BLOCK_SIZE != 0) {
                $numBlocks++;
            }

            if ($numBlocks == 0) return &#39;&#39;;
            $streamData = &#39;&#39;;
             $block = $this->props[$this->wrkbook][&#39;startBlock&#39;];
            $pos = 0;
            while ($block != -2) {
                $pos = ($block + 1) * BIG_BLOCK_SIZE;
                $streamData .= substr($this->data, $pos, BIG_BLOCK_SIZE);
                $block = $this->bigBlockChain[$block];
            }
            return $streamData;
        }
    }

}

define(&#39;SPREADSHEET_EXCEL_READER_BIFF8&#39;,          0x600);
define(&#39;SPREADSHEET_EXCEL_READER_BIFF7&#39;,          0x500);
define(&#39;SPREADSHEET_EXCEL_READER_WORKBOOKGLOBALS&#39;,   0x5);
define(&#39;SPREADSHEET_EXCEL_READER_WORKSHEET&#39;,       0x10);
define(&#39;SPREADSHEET_EXCEL_READER_TYPE_BOF&#39;,         0x809);
define(&#39;SPREADSHEET_EXCEL_READER_TYPE_EOF&#39;,         0x0a);
define(&#39;SPREADSHEET_EXCEL_READER_TYPE_BOUNDSHEET&#39;,   0x85);
define(&#39;SPREADSHEET_EXCEL_READER_TYPE_DIMENSION&#39;,  0x200);
define(&#39;SPREADSHEET_EXCEL_READER_TYPE_ROW&#39;,         0x208);
define(&#39;SPREADSHEET_EXCEL_READER_TYPE_DBCELL&#39;,    0xd7);
define(&#39;SPREADSHEET_EXCEL_READER_TYPE_FILEPASS&#39;,    0x2f);
define(&#39;SPREADSHEET_EXCEL_READER_TYPE_NOTE&#39;,       0x1c);
define(&#39;SPREADSHEET_EXCEL_READER_TYPE_TXO&#39;,         0x1b6);
define(&#39;SPREADSHEET_EXCEL_READER_TYPE_RK&#39;,       0x7e);
define(&#39;SPREADSHEET_EXCEL_READER_TYPE_RK2&#39;,         0x27e);
define(&#39;SPREADSHEET_EXCEL_READER_TYPE_MULRK&#39;,     0xbd);
define(&#39;SPREADSHEET_EXCEL_READER_TYPE_MULBLANK&#39;,    0xbe);
define(&#39;SPREADSHEET_EXCEL_READER_TYPE_INDEX&#39;,     0x20b);
define(&#39;SPREADSHEET_EXCEL_READER_TYPE_SST&#39;,         0xfc);
define(&#39;SPREADSHEET_EXCEL_READER_TYPE_EXTSST&#39;,    0xff);
define(&#39;SPREADSHEET_EXCEL_READER_TYPE_CONTINUE&#39;,    0x3c);
define(&#39;SPREADSHEET_EXCEL_READER_TYPE_LABEL&#39;,     0x204);
define(&#39;SPREADSHEET_EXCEL_READER_TYPE_LABELSST&#39;,    0xfd);
define(&#39;SPREADSHEET_EXCEL_READER_TYPE_NUMBER&#39;,    0x203);
define(&#39;SPREADSHEET_EXCEL_READER_TYPE_NAME&#39;,       0x18);
define(&#39;SPREADSHEET_EXCEL_READER_TYPE_ARRAY&#39;,     0x221);
define(&#39;SPREADSHEET_EXCEL_READER_TYPE_STRING&#39;,    0x207);
define(&#39;SPREADSHEET_EXCEL_READER_TYPE_FORMULA&#39;,      0x406);
define(&#39;SPREADSHEET_EXCEL_READER_TYPE_FORMULA2&#39;,    0x6);
define(&#39;SPREADSHEET_EXCEL_READER_TYPE_FORMAT&#39;,    0x41e);
define(&#39;SPREADSHEET_EXCEL_READER_TYPE_XF&#39;,       0xe0);
define(&#39;SPREADSHEET_EXCEL_READER_TYPE_BOOLERR&#39;,      0x205);
define(&#39;SPREADSHEET_EXCEL_READER_TYPE_FONT&#39;,     0x0031);
define(&#39;SPREADSHEET_EXCEL_READER_TYPE_PALETTE&#39;,      0x0092);
define(&#39;SPREADSHEET_EXCEL_READER_TYPE_UNKNOWN&#39;,      0xffff);
define(&#39;SPREADSHEET_EXCEL_READER_TYPE_NINETEENFOUR&#39;, 0x22);
define(&#39;SPREADSHEET_EXCEL_READER_TYPE_MERGEDCELLS&#39;,  0xE5);
define(&#39;SPREADSHEET_EXCEL_READER_UTCOFFSETDAYS&#39; ,  25569);
define(&#39;SPREADSHEET_EXCEL_READER_UTCOFFSETDAYS1904&#39;, 24107);
define(&#39;SPREADSHEET_EXCEL_READER_MSINADAY&#39;,         86400);
define(&#39;SPREADSHEET_EXCEL_READER_TYPE_HYPER&#39;,       0x01b8);
define(&#39;SPREADSHEET_EXCEL_READER_TYPE_COLINFO&#39;,         0x7d);
define(&#39;SPREADSHEET_EXCEL_READER_TYPE_DEFCOLWIDTH&#39;,  0x55);
define(&#39;SPREADSHEET_EXCEL_READER_TYPE_STANDARDWIDTH&#39;, 0x99);
define(&#39;SPREADSHEET_EXCEL_READER_DEF_NUM_FORMAT&#39;,  "%s");


/*
* Main Class
*/
class Spreadsheet_Excel_Reader {

    // MK: Added to make data retrieval easier
    var $colnames = array();
    var $colindexes = array();
    var $standardColWidth = 0;
    var $defaultColWidth = 0;

    function myHex($d) {
        if ($d <16) return "0" . dechex($d);
        return dechex($d);
    }

    function dumpHexData($data, $pos, $length) {
        $info = "";
        for ($i = 0; $i <= $length; $i++) {
            $info .= ($i==0?"":" ") . $this->myHex(ord($data[$pos + $i])) . (ord($data[$pos + $i])>31? "[" . $data[$pos + $i] . "]":&#39;&#39;);
        }
        return $info;
    }

    function getCol($col) {
        if (is_string($col)) {
            $col = strtolower($col);
            if (array_key_exists($col,$this->colnames)) {
                $col = $this->colnames[$col];
            }
        }
        return $col;
    }

    // PUBLIC API FUNCTIONS
    // --------------------

    function val($row,$col,$sheet=0) {
        $col = $this->getCol($col);
        if (array_key_exists($row,$this->sheets[$sheet][&#39;cells&#39;]) && array_key_exists($col,$this->sheets[$sheet][&#39;cells&#39;][$row])) {
            return $this->sheets[$sheet][&#39;cells&#39;][$row][$col];
        }
        return "";
    }
    function value($row,$col,$sheet=0) {
        return $this->val($row,$col,$sheet);
    }
    function info($row,$col,$type=&#39;&#39;,$sheet=0) {
        $col = $this->getCol($col);
        if (array_key_exists(&#39;cellsInfo&#39;,$this->sheets[$sheet])
            && array_key_exists($row,$this->sheets[$sheet][&#39;cellsInfo&#39;])
            && array_key_exists($col,$this->sheets[$sheet][&#39;cellsInfo&#39;][$row])
            && array_key_exists($type,$this->sheets[$sheet][&#39;cellsInfo&#39;][$row][$col])) {
            return $this->sheets[$sheet][&#39;cellsInfo&#39;][$row][$col][$type];
        }
        return "";
    }
    function type($row,$col,$sheet=0) {
        return $this->info($row,$col,&#39;type&#39;,$sheet);
    }
    function raw($row,$col,$sheet=0) {
        return $this->info($row,$col,&#39;raw&#39;,$sheet);
    }
    function rowspan($row,$col,$sheet=0) {
        $val = $this->info($row,$col,&#39;rowspan&#39;,$sheet);
        if ($val=="") { return 1; }
        return $val;
    }
    function colspan($row,$col,$sheet=0) {
        $val = $this->info($row,$col,&#39;colspan&#39;,$sheet);
        if ($val=="") { return 1; }
        return $val;
    }
    function hyperlink($row,$col,$sheet=0) {
        $link = $this->sheets[$sheet][&#39;cellsInfo&#39;][$row][$col][&#39;hyperlink&#39;];
        if ($link) {
            return $link[&#39;link&#39;];
        }
        return &#39;&#39;;
    }
    function rowcount($sheet=0) {
        return $this->sheets[$sheet][&#39;numRows&#39;];
    }
    function colcount($sheet=0) {
        return $this->sheets[$sheet][&#39;numCols&#39;];
    }
    function colwidth($col,$sheet=0) {
        // Col width is actually the width of the number 0. So we have to estimate and come close
        return $this->colInfo[$sheet][$col][&#39;width&#39;]/9142*200;
    }
    function colhidden($col,$sheet=0) {
        return !!$this->colInfo[$sheet][$col][&#39;hidden&#39;];
    }
    function rowheight($row,$sheet=0) {
        return $this->rowInfo[$sheet][$row][&#39;height&#39;];
    }
    function rowhidden($row,$sheet=0) {
        return !!$this->rowInfo[$sheet][$row][&#39;hidden&#39;];
    }

    // GET THE CSS FOR FORMATTING
    // ==========================
    function style($row,$col,$sheet=0,$properties=&#39;&#39;) {
        $css = "";
        $fOnt=$this->font($row,$col,$sheet);
        if ($font!="") {
            $css .= "font-family:$font;";
        }
        $align=$this->align($row,$col,$sheet);
        if ($align!="") {
            $css .= "text-align:$align;";
        }
        $height=$this->height($row,$col,$sheet);
        if ($height!="") {
            $css .= "font-size:$height"."px;";
        }
        $bgcolor=$this->bgColor($row,$col,$sheet);
        if ($bgcolor!="") {
            $bgcolor = $this->colors[$bgcolor];
            $css .= "background-color:$bgcolor;";
        }
        $color=$this->color($row,$col,$sheet);
        if ($color!="") {
            $css .= "color:$color;";
        }
         $bold=$this->bold($row,$col,$sheet);
    if ($bold) {
        $css .= "font-weight:bold;";
    }
    $italic=$this->italic($row,$col,$sheet);
    if ($italic) {
        $css .= "font-style:italic;";
    }
    $underline=$this->underline($row,$col,$sheet);
    if ($underline) {
        $css .= "text-decoration:underline;";
    }
    // Borders
    $bLeft = $this->borderLeft($row,$col,$sheet);
    $bRight = $this->borderRight($row,$col,$sheet);
    $bTop = $this->borderTop($row,$col,$sheet);
    $bBottom = $this->borderBottom($row,$col,$sheet);
    $bLeftCol = $this->borderLeftColor($row,$col,$sheet);
    $bRightCol = $this->borderRightColor($row,$col,$sheet);
    $bTopCol = $this->borderTopColor($row,$col,$sheet);
    $bBottomCol = $this->borderBottomColor($row,$col,$sheet);
    // Try to output the minimal required style
    if ($bLeft!="" && $bLeft==$bRight && $bRight==$bTop && $bTop==$bBottom) {
        $css .= "border:" . $this->lineStylesCss[$bLeft] .";";
    }
    else {
        if ($bLeft!="") { $css .= "border-left:" . $this->lineStylesCss[$bLeft] .";"; }
        if ($bRight!="") { $css .= "border-right:" . $this->lineStylesCss[$bRight] .";"; }
        if ($bTop!="") { $css .= "border-top:" . $this->lineStylesCss[$bTop] .";"; }
        if ($bBottom!="") { $css .= "border-bottom:" . $this->lineStylesCss[$bBottom] .";"; }
    }
    // Only output border colors if there is an actual border specified
    if ($bLeft!="" && $bLeftCol!="") { $css .= "border-left-color:" . $bLeftCol .";"; }
    if ($bRight!="" && $bRightCol!="") { $css .= "border-right-color:" . $bRightCol .";"; }
    if ($bTop!="" && $bTopCol!="") { $css .= "border-top-color:" . $bTopCol . ";"; }
    if ($bBottom!="" && $bBottomCol!="") { $css .= "border-bottom-color:" . $bBottomCol .";"; }

    return $css;
}

// FORMAT PROPERTIES
// =================
function format($row,$col,$sheet=0) {
    return $this->info($row,$col,&#39;format&#39;,$sheet);
}
function formatIndex($row,$col,$sheet=0) {
    return $this->info($row,$col,&#39;formatIndex&#39;,$sheet);
}
function formatColor($row,$col,$sheet=0) {
    return $this->info($row,$col,&#39;formatColor&#39;,$sheet);
}

// CELL (XF) PROPERTIES
// ====================
function xfRecord($row,$col,$sheet=0) {
    $xfIndex = $this->info($row,$col,&#39;xfIndex&#39;,$sheet);
    if ($xfIndex!="") {
        return $this->xfRecords[$xfIndex];
    }
    return null;
}
function xfProperty($row,$col,$sheet,$prop) {
    $xfRecord = $this->xfRecord($row,$col,$sheet);
    if ($xfRecord!=null) {
        return $xfRecord[$prop];
    }
    return "";
}
function align($row,$col,$sheet=0) {
    return $this->xfProperty($row,$col,$sheet,&#39;align&#39;);
}
function bgColor($row,$col,$sheet=0) {
    return $this->xfProperty($row,$col,$sheet,&#39;bgColor&#39;);
}
function borderLeft($row,$col,$sheet=0) {
    return $this->xfProperty($row,$col,$sheet,&#39;borderLeft&#39;);
}
function borderRight($row,$col,$sheet=0) {
    return $this->xfProperty($row,$col,$sheet,&#39;borderRight&#39;);
}
function borderTop($row,$col,$sheet=0) {
    return $this->xfProperty($row,$col,$sheet,&#39;borderTop&#39;);
}
function borderBottom($row,$col,$sheet=0) {
    return $this->xfProperty($row,$col,$sheet,&#39;borderBottom&#39;);
}
function borderLeftColor($row,$col,$sheet=0) {
    return $this->colors[$this->xfProperty($row,$col,$sheet,&#39;borderLeftColor&#39;)];
}
function borderRightColor($row,$col,$sheet=0) {
    return $this->colors[$this->xfProperty($row,$col,$sheet,&#39;borderRightColor&#39;)];
}
function borderTopColor($row,$col,$sheet=0) {
    return $this->colors[$this->xfProperty($row,$col,$sheet,&#39;borderTopColor&#39;)];
}
function borderBottomColor($row,$col,$sheet=0) {
    return $this->colors[$this->xfProperty($row,$col,$sheet,&#39;borderBottomColor&#39;)];
}

// FONT PROPERTIES
// ===============
function fontRecord($row,$col,$sheet=0) {
    $xfRecord = $this->xfRecord($row,$col,$sheet);
    if ($xfRecord!=null) {
        $fOnt= $xfRecord[&#39;fontIndex&#39;];
        if ($font!=null) {
            return $this->fontRecords[$font];
        }
    }
    return null;
}
function fontProperty($row,$col,$sheet=0,$prop) {
    $fOnt= $this->fontRecord($row,$col,$sheet);
    if ($font!=null) {
        return $font[$prop];
    }
    return false;
}
function fontIndex($row,$col,$sheet=0) {
    return $this->xfProperty($row,$col,$sheet,&#39;fontIndex&#39;);
}
function color($row,$col,$sheet=0) {
    $formatColor = $this->formatColor($row,$col,$sheet);
    if ($formatColor!="") {
        return $formatColor;
    }
    $ci = $this->fontProperty($row,$col,$sheet,&#39;color&#39;);
    return $this->rawColor($ci);
}
function rawColor($ci) {
    if (($ci <> 0x7FFF) && ($ci <> &#39;&#39;)) {
        return $this->colors[$ci];
    }
    return "";
}
function bold($row,$col,$sheet=0) {
    return $this->fontProperty($row,$col,$sheet,&#39;bold&#39;);
}
function italic($row,$col,$sheet=0) {
    return $this->fontProperty($row,$col,$sheet,&#39;italic&#39;);
}
function underline($row,$col,$sheet=0) {
    return $this->fontProperty($row,$col,$sheet,&#39;under&#39;);
}
function height($row,$col,$sheet=0) {
    return $this->fontProperty($row,$col,$sheet,&#39;height&#39;);
}
function font($row,$col,$sheet=0) {
    return $this->fontProperty($row,$col,$sheet,&#39;font&#39;);
}

// DUMP AN HTML TABLE OF THE ENTIRE XLS DATA
// =========================================
function dump($row_numbers=false,$col_letters=false,$sheet=0,$table_class=&#39;excel&#39;) {
    $out = "";
    if ($col_letters) {
        $out .= "\n\t";
        if ($row_numbers) {
            $out .= "\n\t\t";
        }
        for($i=1;$i<=$this->colcount($sheet);$i++) {
            $style = "width:" . ($this->colwidth($i,$sheet)*1) . "px;";
            if ($this->colhidden($i,$sheet)) {
                $style .= "display:none;";
            }
            $out .= "\n\t\t";
        }
        $out .= "\n";
    }

    $out .= "\n";
    for($row=1;$row<=$this->rowcount($sheet);$row++) {
        $rowheight = $this->rowheight($row,$sheet);
        $style = "height:" . ($rowheight*(4/3)) . "px;";
        if ($this->rowhidden($row,$sheet)) {
            $style .= "display:none;";
        }
        $out .= "\n\t";
        if ($row_numbers) {
            $out .= "\n\t\t";
        }
        for($col=1;$col<=$this->colcount($sheet);$col++) {
            // Account for Rowspans/Colspans
            $rowspan = $this->rowspan($row,$col,$sheet);
            $colspan = $this->colspan($row,$col,$sheet);
            for($i=0;$i<$rowspan;$i++) {
                for($j=0;$j<$colspan;$j++) {
                    if ($i>0 || $j>0) {
                        $this->sheets[$sheet][&#39;cellsInfo&#39;][$row+$i][$col+$j][&#39;dontprint&#39;]=1;
                    }
                }
            }
            if(!$this->sheets[$sheet][&#39;cellsInfo&#39;][$row][$col][&#39;dontprint&#39;]) {
                $style = $this->style($row,$col,$sheet);
                if ($this->colhidden($col,$sheet)) {
                    $style .= "display:none;";
                }
                $out .= "\n\t\t";
            }
        }
        $out .= "\n";
    }
    $out .= "
 " . strtoupper($this->colindexes[$i]) . "
$row 1?" colspan=$colspan":"") . ($rowspan > 1?" rowspan=$rowspan":"") . ">"; $val = $this->val($row,$col,$sheet); if ($val==&#39;&#39;) { $val=" "; } else { $val = htmlentities($val); $link = $this->hyperlink($row,$col,$sheet); if ($link!=&#39;&#39;) { $val = "$val"; } } $out .= "".nl2br($val).""; $out .= "
"; return $out; } // -------------- // END PUBLIC API var $boundsheets = array(); var $formatRecords = array(); var $fOntRecords= array(); var $xfRecords = array(); var $colInfo = array(); var $rowInfo = array(); var $sst = array(); var $sheets = array(); var $data; var $_ole; var $_defaultEncoding = "gb2312"; var $_defaultFormat = SPREADSHEET_EXCEL_READER_DEF_NUM_FORMAT; var $_columnsFormat = array(); var $_rowoffset = 1; var $_coloffset = 1; /** * List of default date formats used by Excel */ var $dateFormats = array ( 0xe => "m/d/Y", 0xf => "M-d-Y", 0x10 => "d-M", 0x11 => "M-Y", 0x12 => "h:i a", 0x13 => "h:i:s a", 0x14 => "H:i", 0x15 => "H:i:s", 0x16 => "d/m/Y H:i", 0x2d => "i:s", 0x2e => "H:i:s", 0x2f => "i:s.S" ); /** * Default number formats used by Excel */ var $numberFormats = array( 0x1 => "0", 0x2 => "0.00", 0x3 => "#,##0", 0x4 => "#,##0.00", 0x5 => "\$#,##0;(\$#,##0)", 0x6 => "\$#,##0;[Red](\$#,##0)", 0x7 => "\$#,##0.00;(\$#,##0.00)", 0x8 => "\$#,##0.00;[Red](\$#,##0.00)", 0x9 => "0%", 0xa => "0.00%", 0xb => "0.00E+00", 0x25 => "#,##0;(#,##0)", 0x26 => "#,##0;[Red](#,##0)", 0x27 => "#,##0.00;(#,##0.00)", 0x28 => "#,##0.00;[Red](#,##0.00)", 0x29 => "#,##0;(#,##0)", // Not exactly 0x2a => "\$#,##0;(\$#,##0)", // Not exactly 0x2b => "#,##0.00;(#,##0.00)", // Not exactly 0x2c => "\$#,##0.00;(\$#,##0.00)", // Not exactly 0x30 => "##0.0E+0" ); var $colors = Array( 0x00 => "#000000", 0x01 => "#FFFFFF", 0x02 => "#FF0000", 0x03 => "#00FF00", 0x04 => "#0000FF", 0x05 => "#FFFF00", 0x06 => "#FF00FF", 0x07 => "#00FFFF", 0x08 => "#000000", 0x09 => "#FFFFFF", 0x0A => "#FF0000", 0x0B => "#00FF00", 0x0C => "#0000FF", 0x0D => "#FFFF00", 0x0E => "#FF00FF", 0x0F => "#00FFFF", 0x10 => "#800000", 0x11 => "#008000", 0x12 => "#000080", 0x13 => "#808000", 0x14 => "#800080", 0x15 => "#008080", 0x16 => "#C0C0C0", 0x17 => "#808080", 0x18 => "#9999FF", 0x19 => "#993366", 0x1A => "#FFFFCC", 0x1B => "#CCFFFF", 0x1C => "#660066", 0x1D => "#FF8080", 0x1E => "#0066CC", 0x1F => "#CCCCFF", 0x20 => "#000080", 0x21 => "#FF00FF", 0x22 => "#FFFF00", 0x23 => "#00FFFF", 0x24 => "#800080", 0x25 => "#800000", 0x26 => "#008080", 0x27 => "#0000FF", 0x28 => "#00CCFF", 0x29 => "#CCFFFF", 0x2A => "#CCFFCC", 0x2B => "#FFFF99", 0x2C => "#99CCFF", 0x2D => "#FF99CC", 0x2E => "#CC99FF", 0x2F => "#FFCC99", 0x30 => "#3366FF", 0x31 => "#33CCCC", 0x32 => "#99CC00", 0x33 => "#FFCC00", 0x34 => "#FF9900", 0x35 => "#FF6600", 0x36 => "#666699", 0x37 => "#969696", 0x38 => "#003366", 0x39 => "#339966", 0x3A => "#003300", 0x3B => "#333300", 0x3C => "#993300", 0x3D => "#993366", 0x3E => "#333399", 0x3F => "#333333", 0x40 => "#000000", 0x41 => "#FFFFFF", 0x43 => "#000000", 0x4D => "#000000", 0x4E => "#FFFFFF", 0x4F => "#000000", 0x50 => "#FFFFFF", 0x51 => "#000000", 0x7FFF => "#000000" ); var $lineStyles = array( 0x00 => "", 0x01 => "Thin", 0x02 => "Medium", 0x03 => "Dashed", 0x04 => "Dotted", 0x05 => "Thick", 0x06 => "Double", 0x07 => "Hair", 0x08 => "Medium dashed", 0x09 => "Thin dash-dotted", 0x0A => "Medium dash-dotted", 0x0B => "Thin dash-dot-dotted", 0x0C => "Medium dash-dot-dotted", 0x0D => "Slanted medium dash-dotted" ); var $lineStylesCss = array( "Thin" => "1px solid", "Medium" => "2px solid", "Dashed" => "1px dashed", "Dotted" => "1px dotted", "Thick" => "3px solid", "Double" => "double", "Hair" => "1px solid", "Medium dashed" => "2px dashed", "Thin dash-dotted" => "1px dashed", "Medium dash-dotted" => "2px dashed", "Thin dash-dot-dotted" => "1px dashed", "Medium dash-dot-dotted" => "2px dashed", "Slanted medium dash-dotte" => "2px dashed" ); function read16bitstring($data, $start) { $len = 0; while (ord($data[$start + $len]) + ord($data[$start + $len + 1]) > 0) $len++; return substr($data, $start, $len); } // ADDED by Matt Kruse for better formatting function _format_value($format,$num,$f) { // 49==TEXT format // http://code.google.com/p/php-excel-reader/issues/detail?id=7 if ( (!$f && $format=="%s") || ($f==49) || ($format=="GENERAL") ) { return array(&#39;string&#39;=>$num, &#39;formatColor&#39;=>null); } // Custom pattern can be POSITIVE;NEGATIVE;ZERO // The "text" option as 4th parameter is not handled $parts = split(";",$format); $pattern = $parts[0]; // Negative pattern if (count($parts)>2 && $num==0) { $pattern = $parts[2]; } // Zero pattern if (count($parts)>1 && $num<0) { $pattern = $parts[1]; $num = abs($num); } $color = ""; $matches = array(); $color_regex = "/^\[(BLACK|BLUE|CYAN|GREEN|MAGENTA|RED|WHITE|YELLOW)\]/i"; if (preg_match($color_regex,$pattern,$matches)) { $color = strtolower($matches[1]); $pattern = preg_replace($color_regex,"",$pattern); } // In Excel formats, "_" is used to add spacing, which we can&#39;t do in HTML $pattern = preg_replace("/_./","",$pattern); // Some non-number characters are escaped with \, which we don&#39;t need $pattern = preg_replace("/\\\/","",$pattern); // Some non-number strings are quoted, so we&#39;ll get rid of the quotes $pattern = preg_replace("/\"/","",$pattern); // TEMPORARY - Convert # to 0 $pattern = preg_replace("/\#/","0",$pattern); // Find out if we need comma formatting $has_commas = preg_match("/,/",$pattern); if ($has_commas) { $pattern = preg_replace("/,/","",$pattern); } // Handle Percentages if (preg_match("/\d(\%)([^\%]|$)/",$pattern,$matches)) { $num = $num * 100; $pattern = preg_replace("/(\d)(\%)([^\%]|$)/","$1%$3",$pattern); } // Handle the number itself $number_regex = "/(\d+)(\.?)(\d*)/"; if (preg_match($number_regex,$pattern,$matches)) { $left = $matches[1]; $dec = $matches[2]; $right = $matches[3]; if ($has_commas) { $formatted = number_format($num,strlen($right)); } else { $sprintf_pattern = "%1.".strlen($right)."f"; $formatted = sprintf($sprintf_pattern, $num); } $pattern = preg_replace($number_regex, $formatted, $pattern); } return array( &#39;string&#39;=>$pattern, &#39;formatColor&#39;=>$color ); } /** * Constructor * * Some basic initialisation */ function Spreadsheet_Excel_Reader($file=&#39;&#39;,$store_extended_info=true,$outputEncoding=&#39;&#39;) { $this->_ole =& new OLERead(); $this->setUTFEncoder(&#39;iconv&#39;); if ($outputEncoding != &#39;&#39;) { $this->setOutputEncoding($outputEncoding); } for ($i=1; $i<245; $i++) { $name = strtolower(( (($i-1)/26>=1)?chr(($i-1)/26+64):&#39;&#39;) . chr(($i-1)%26+65)); $this->colnames[$name] = $i; $this->colindexes[$i] = $name; } $this->store_extended_info = $store_extended_info; if ($file!="") { $this->read($file); } } /** * Set the encoding method */ function setOutputEncoding($encoding) { $this->_defaultEncoding = $encoding; } /** * $encoder = &#39;iconv&#39; or &#39;mb&#39; * set iconv if you would like use &#39;iconv&#39; for encode UTF-16LE to your encoding * set mb if you would like use &#39;mb_convert_encoding&#39; for encode UTF-16LE to your encoding */ function setUTFEncoder($encoder = &#39;iconv&#39;) { $this->_encoderFunction = &#39;&#39;; if ($encoder == &#39;iconv&#39;) { $this->_encoderFunction = function_exists(&#39;iconv&#39;) ? &#39;iconv&#39; : &#39;&#39;; } elseif ($encoder == &#39;mb&#39;) { $this->_encoderFunction = function_exists(&#39;mb_convert_encoding&#39;) ? &#39;mb_convert_encoding&#39; : &#39;&#39;; } } function setRowColOffset($iOffset) { $this->_rowoffset = $iOffset; $this->_coloffset = $iOffset; } /** * Set the default number format */ function setDefaultFormat($sFormat) { $this->_defaultFormat = $sFormat; } /** * Force a column to use a certain format */ function setColumnFormat($column, $sFormat) { $this->_columnsFormat[$column] = $sFormat; } /** * Read the spreadsheet file using OLE, then parse */ function read($sFileName) { $res = $this->_ole->read($sFileName); // oops, something goes wrong (Darko Miljanovic) if($res === false) { // check error code if($this->_ole->error == 1) { // bad file die(&#39;The filename &#39; . $sFileName . &#39; is not readable&#39;); } // check other error codes here (eg bad fileformat, etc...) } $this->data = $this->_ole->getWorkBook(); $this->_parse(); } /** * Parse a workbook * * @access private * @return bool */ function _parse() { $pos = 0; $data = $this->data; $code = v($data,$pos); $length = v($data,$pos+2); $version = v($data,$pos+4); $substreamType = v($data,$pos+6); $this->version = $version; if (($version != SPREADSHEET_EXCEL_READER_BIFF8) && ($version != SPREADSHEET_EXCEL_READER_BIFF7)) { return false; } if ($substreamType != SPREADSHEET_EXCEL_READER_WORKBOOKGLOBALS){ return false; } $pos += $length + 4; $code = v($data,$pos); $length = v($data,$pos+2); while ($code != SPREADSHEET_EXCEL_READER_TYPE_EOF) { switch ($code) { case SPREADSHEET_EXCEL_READER_TYPE_SST: $spos = $pos + 4; $limitpos = $spos + $length; $uniqueStrings = $this->_GetInt4d($data, $spos+4); $spos += 8; for ($i = 0; $i <$uniqueStrings; $i++) { // Read in the number of characters if ($spos == $limitpos) { $opcode = v($data,$spos); $cOnlength= v($data,$spos+2); if ($opcode != 0x3c) { return -1; } $spos += 4; $limitpos = $spos + $conlength; } $numChars = ord($data[$spos]) | (ord($data[$spos+1]) <<8); $spos += 2; $optiOnFlags= ord($data[$spos]); $spos++; $asciiEncoding = (($optionFlags & 0x01) == 0) ; $extendedString = ( ($optionFlags & 0x04) != 0); // See if string contains formatting information $richString = ( ($optionFlags & 0x08) != 0); if ($richString) { // Read in the crun $formattingRuns = v($data,$spos); $spos += 2; } if ($extendedString) { // Read in cchExtRst $extendedRunLength = $this->_GetInt4d($data, $spos); $spos += 4; } $len = ($asciiEncoding)? $numChars : $numChars*2; if ($spos + $len <$limitpos) { $retstr = substr($data, $spos, $len); $spos += $len; } else{ // found countinue $retstr = substr($data, $spos, $limitpos - $spos); $bytesRead = $limitpos - $spos; $charsLeft = $numChars - (($asciiEncoding) ? $bytesRead : ($bytesRead / 2)); $spos = $limitpos; while ($charsLeft > 0){ $opcode = v($data,$spos); $cOnlength= v($data,$spos+2); if ($opcode != 0x3c) { return -1; } $spos += 4; $limitpos = $spos + $conlength; $option = ord($data[$spos]); $spos += 1; if ($asciiEncoding && ($option == 0)) { $len = min($charsLeft, $limitpos - $spos); // min($charsLeft, $conlength); $retstr .= substr($data, $spos, $len); $charsLeft -= $len; $asciiEncoding = true; } elseif (!$asciiEncoding && ($option != 0)) { $len = min($charsLeft * 2, $limitpos - $spos); // min($charsLeft, $conlength); $retstr .= substr($data, $spos, $len); $charsLeft -= $len/2; $asciiEncoding = false; } elseif (!$asciiEncoding && ($option == 0)) { // Bummer - the string starts off as Unicode, but after the // continuation it is in straightforward ASCII encoding $len = min($charsLeft, $limitpos - $spos); // min($charsLeft, $conlength); for ($j = 0; $j <$len; $j++) { $retstr .= $data[$spos + $j].chr(0); } $charsLeft -= $len; $asciiEncoding = false; } else{ $newstr = &#39;&#39;; for ($j = 0; $j _encodeUTF16($retstr); if ($richString){ $spos += 4 * $formattingRuns; } // For extended strings, skip over the extended string data if ($extendedString) { $spos += $extendedRunLength; } $this->sst[]=$retstr; } break; case SPREADSHEET_EXCEL_READER_TYPE_FILEPASS: return false; break; case SPREADSHEET_EXCEL_READER_TYPE_NAME: break; case SPREADSHEET_EXCEL_READER_TYPE_FORMAT: $indexCode = v($data,$pos+4); if ($version == SPREADSHEET_EXCEL_READER_BIFF8) { $numchars = v($data,$pos+6); if (ord($data[$pos+8]) == 0){ $formatString = substr($data, $pos+9, $numchars); } else { $formatString = substr($data, $pos+9, $numchars*2); } } else { $numchars = ord($data[$pos+6]); $formatString = substr($data, $pos+7, $numchars*2); } $this->formatRecords[$indexCode] = $formatString; break; case SPREADSHEET_EXCEL_READER_TYPE_FONT: $height = v($data,$pos+4); $option = v($data,$pos+6); $color = v($data,$pos+8); $weight = v($data,$pos+10); $under = ord($data[$pos+14]); $fOnt= ""; // Font name $numchars = ord($data[$pos+18]); if ((ord($data[$pos+19]) & 1) == 0){ $fOnt= substr($data, $pos+20, $numchars); } else { $fOnt= substr($data, $pos+20, $numchars*2); $fOnt= $this->_encodeUTF16($font); } $this->fontRecords[] = array( &#39;height&#39; => $height / 20, &#39;italic&#39; => !!($option & 2), &#39;color&#39; => $color, &#39;under&#39; => !($under==0), &#39;bold&#39; => ($weight==700), &#39;font&#39; => $font, &#39;raw&#39; => $this->dumpHexData($data, $pos+3, $length) ); break; case SPREADSHEET_EXCEL_READER_TYPE_PALETTE: $colors = ord($data[$pos+4]) | ord($data[$pos+5]) <<8; for ($coli = 0; $coli <$colors; $coli++) { $colOff = $pos + 2 + ($coli * 4); $colr = ord($data[$colOff]); $colg = ord($data[$colOff+1]); $colb = ord($data[$colOff+2]); $this->colors[0x07 + $coli] = &#39;#&#39; . $this->myhex($colr) . $this->myhex($colg) . $this->myhex($colb); } break; case SPREADSHEET_EXCEL_READER_TYPE_XF: $fOntIndexCode= (ord($data[$pos+4]) | ord($data[$pos+5]) <<8) - 1; $fOntIndexCode= max(0,$fontIndexCode); $indexCode = ord($data[$pos+6]) | ord($data[$pos+7]) <<8; $alignbit = ord($data[$pos+10]) & 3; $bgi = (ord($data[$pos+22]) | ord($data[$pos+23]) <<8) & 0x3FFF; $bgcolor = ($bgi & 0x7F); // $bgcolor = ($bgi & 0x3f80) >> 7; $align = ""; if ($alignbit==3) { $align="right"; } if ($alignbit==2) { $align="center"; } $fillPattern = (ord($data[$pos+21]) & 0xFC) >> 2; if ($fillPattern == 0) { $bgcolor = ""; } $xf = array(); $xf[&#39;formatIndex&#39;] = $indexCode; $xf[&#39;align&#39;] = $align; $xf[&#39;fontIndex&#39;] = $fontIndexCode; $xf[&#39;bgColor&#39;] = $bgcolor; $xf[&#39;fillPattern&#39;] = $fillPattern; $border = ord($data[$pos+14]) | (ord($data[$pos+15]) <<8) | (ord($data[$pos+16]) <<16) | (ord($data[$pos+17]) <<24); $xf[&#39;borderLeft&#39;] = $this->lineStyles[($border & 0xF)]; $xf[&#39;borderRight&#39;] = $this->lineStyles[($border & 0xF0) >> 4]; $xf[&#39;borderTop&#39;] = $this->lineStyles[($border & 0xF00) >> 8]; $xf[&#39;borderBottom&#39;] = $this->lineStyles[($border & 0xF000) >> 12]; $xf[&#39;borderLeftColor&#39;] = ($border & 0x7F0000) >> 16; $xf[&#39;borderRightColor&#39;] = ($border & 0x3F800000) >> 23; $border = (ord($data[$pos+18]) | ord($data[$pos+19]) <<8); $xf[&#39;borderTopColor&#39;] = ($border & 0x7F); $xf[&#39;borderBottomColor&#39;] = ($border & 0x3F80) >> 7; if (array_key_exists($indexCode, $this->dateFormats)) { $xf[&#39;type&#39;] = &#39;date&#39;; $xf[&#39;format&#39;] = $this->dateFormats[$indexCode]; if ($align==&#39;&#39;) { $xf[&#39;align&#39;] = &#39;right&#39;; } }elseif (array_key_exists($indexCode, $this->numberFormats)) { $xf[&#39;type&#39;] = &#39;number&#39;; $xf[&#39;format&#39;] = $this->numberFormats[$indexCode]; if ($align==&#39;&#39;) { $xf[&#39;align&#39;] = &#39;right&#39;; } }else{ $isdate = FALSE; $formatstr = &#39;&#39;; if ($indexCode > 0){ if (isset($this->formatRecords[$indexCode])) $formatstr = $this->formatRecords[$indexCode]; if ($formatstr!="") { $tmp = preg_replace("/\;.*/","",$formatstr); $tmp = preg_replace("/^\[[^\]]*\]/","",$tmp); if (preg_match("/[^hmsday\/\-:\s\\\,AMP]/i", $tmp) == 0) { // found day and time format $isdate = TRUE; $formatstr = $tmp; $formatstr = str_replace(array(&#39;AM/PM&#39;,&#39;mmmm&#39;,&#39;mmm&#39;), array(&#39;a&#39;,&#39;F&#39;,&#39;M&#39;), $formatstr); // m/mm are used for both minutes and months - oh SNAP! // This mess tries to fix for that. // &#39;m&#39; == minutes only if following h/hh or preceding s/ss $formatstr = preg_replace("/(h:?)mm?/","$1i", $formatstr); $formatstr = preg_replace("/mm?(:?s)/","i$1", $formatstr); // A single &#39;m&#39; = n in PHP $formatstr = preg_replace("/(^|[^m])m([^m]|$)/", &#39;$1n$2&#39;, $formatstr); $formatstr = preg_replace("/(^|[^m])m([^m]|$)/", &#39;$1n$2&#39;, $formatstr); // else it&#39;s months $formatstr = str_replace(&#39;mm&#39;, &#39;m&#39;, $formatstr); // Convert single &#39;d&#39; to &#39;j&#39; $formatstr = preg_replace("/(^|[^d])d([^d]|$)/", &#39;$1j$2&#39;, $formatstr); $formatstr = str_replace(array(&#39;dddd&#39;,&#39;ddd&#39;,&#39;dd&#39;,&#39;yyyy&#39;,&#39;yy&#39;,&#39;hh&#39;,&#39;h&#39;), array(&#39;l&#39;,&#39;D&#39;,&#39;d&#39;,&#39;Y&#39;,&#39;y&#39;,&#39;H&#39;,&#39;g&#39;), $formatstr); $formatstr = preg_replace("/ss?/
推荐阅读
  • Java验证码——kaptcha的使用配置及样式
    本文介绍了如何使用kaptcha库来实现Java验证码的配置和样式设置,包括pom.xml的依赖配置和web.xml中servlet的配置。 ... [详细]
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • 本文讨论了Alink回归预测的不完善问题,指出目前主要针对Python做案例,对其他语言支持不足。同时介绍了pom.xml文件的基本结构和使用方法,以及Maven的相关知识。最后,对Alink回归预测的未来发展提出了期待。 ... [详细]
  • 在说Hibernate映射前,我们先来了解下对象关系映射ORM。ORM的实现思想就是将关系数据库中表的数据映射成对象,以对象的形式展现。这样开发人员就可以把对数据库的操作转化为对 ... [详细]
  • 本文介绍了在SpringBoot中集成thymeleaf前端模版的配置步骤,包括在application.properties配置文件中添加thymeleaf的配置信息,引入thymeleaf的jar包,以及创建PageController并添加index方法。 ... [详细]
  • 本文介绍了DataTables插件的官方网站以及其基本特点和使用方法,包括分页处理、数据过滤、数据排序、数据类型检测、列宽度自动适应、CSS定制样式、隐藏列等功能。同时还介绍了其易用性、可扩展性和灵活性,以及国际化和动态创建表格的功能。此外,还提供了参数初始化和延迟加载的示例代码。 ... [详细]
  • Allegro总结:1.防焊层(SolderMask):又称绿油层,PCB非布线层,用于制成丝网印板,将不需要焊接的地方涂上防焊剂.在防焊层上预留的焊盘大小要比实际的焊盘大一些,其差值一般 ... [详细]
  • 前言:关于跨域CORS1.没有跨域时,ajax默认是带cookie的2.跨域时,两种解决方案:1)服务器端在filter中配置详情:http:blog.csdn.netwzl002 ... [详细]
  • php课程Json格式规范需要注意的小细节
    JSON(JavaScriptObjectNotation)是一种轻量级的数据交换格式。易于人阅读和编写。同时也易于机器解析和生成。它基于JavaScriptProgramming ... [详细]
  • asp.net(vb脚本)如何获取xml的节点值?xmlversion1.0encodingutf-8?rootimageimagemenusmenuurl#frame_paren ... [详细]
  • 1、概述首先和大家一起回顾一下Java消息服务,在我之前的博客《Java消息队列-JMS概述》中,我为大家分析了:然后在另一篇博客《Java消息队列-ActiveMq实战》中 ... [详细]
  • 第一种&amp;amp;lt;script&amp;amp;gt;$(&amp;quot;.eq&amp;quot;).on(&amp;qu ... [详细]
  • 最近学习了关于使用最为流行的jquery发送请求,在实践中以最为简单的聊天室作为测验的辅助工具,对相关网页开发有一个初步的认识,希望大家能够一起学习进步。首先介绍一下 ... [详细]
  • Java实战之电影在线观看系统的实现
    本文介绍了Java实战之电影在线观看系统的实现过程。首先对项目进行了简述,然后展示了系统的效果图。接着介绍了系统的核心代码,包括后台用户管理控制器、电影管理控制器和前台电影控制器。最后对项目的环境配置和使用的技术进行了说明,包括JSP、Spring、SpringMVC、MyBatis、html、css、JavaScript、JQuery、Ajax、layui和maven等。 ... [详细]
  • 本文讨论了如何优化解决hdu 1003 java题目的动态规划方法,通过分析加法规则和最大和的性质,提出了一种优化的思路。具体方法是,当从1加到n为负时,即sum(1,n)sum(n,s),可以继续加法计算。同时,还考虑了两种特殊情况:都是负数的情况和有0的情况。最后,通过使用Scanner类来获取输入数据。 ... [详细]
author-avatar
三少乾坤_943
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有