2011-01-06 8 views
0

こんにちは私はそれぞれの行にそれぞれExcelシートからこれらのフィールドをcontaningフォームを生成する必要がある複数のデータを持つカラム名と給与をcontaningエクセルシートを持っています。どうすればPHPでこれを行うことができますか?私はthis.pleaseヘルプのためにmysqlを使いたくありません。どのようにフォームを生成することができますか?

答えて

1

まず、Excelデータを読み取る必要があります。どのバージョンのExcelですか? xlsまたはxlsx? これには代替手段がありますが、PHPExcelライブラリを使用することをお勧めします。

include 'PHPExcel/IOFactory.php'; 

$inputFileName = './sampleData/example1.xls'; 
$objPHPExcel = PHPExcel_IOFactory::load($inputFileName); 

$sheetData = $objPHPExcel->getActiveSheet()->toArray(null,true,true,true); 

は標準のPHP配列のワークシートデータを提供します。 http://www.php.net/manual/fr/function.fgetcsv.php

チェックこのサンプル:あなたはCSVファイルを使用することができれば

0

、あなたは fgetcsvとfputcsvを使用することができます。

<?php 

define('INPUT_FILENAME', '/path/to/your/csv/file'); 

define('OUTPUT_FILENAME', '/path/to/your/csv/file'); 
define('SEPARATOR', ','); 
define('ENCLOSURE', '"'); 

if ($_SERVER['REQUEST_METHOD'] == 'POST') { 
    if (isset($_POST['entries'])) { 
     $entries = $_POST['entries']; 
    } 

    // do the validation stuff here ... 

    if ($ok) { 
     // save the entries into the DESTINATION file 

     $handle = fopen(OUTPUT_FILENAME, 'w'); 

     foreach ($entries as $entry) { 
      $fields = array(
       $entry['name'], 
       $entry['salary'] 
      ); 
      fputcsv($handle, $fields, SEPARATOR, ENCLOSURE); 
     } 

     exit('done'); 
    } 
} 

if (!isset($entries)) { 
    // fetch the entries 
    $entries = array(); 
    if (($handle = fopen(INPUT_FILENAME, 'r')) !== false) { 
     while (($row = fgetcsv($handle, 1000, SEPARATOR, ENCLOSURE)) !== false) { 
      list($name, $salary) = $row; 
      $entries[] = array(
       'name' => $name, 
       'salary' => $salary 
      ); 
     } 
     fclose($handle); 
    } 
} 

// display the form 

print '<form action="#" method="post">'; 

foreach ($entries as $i => $entry) { 
    print '<fieldset>'; 
    print '<label>Name'; 
    printf('<input type="text" name="entries[%s]name" value="%s" />', $i, htmlspecialchars($entry['name'])); 
    print '</label>'; 
    print '<label>Name'; 
    printf('<input type="text" name="entries[%s]salary" value="%s" />', $i, htmlspecialchars($entry['salary'])); 
    print '</label>'; 
    print '</fieldset>'; 
} 
print '<input type="submit" />'; 
print '</form>'; 

そして、エントリーごとに一つの形:

<?php 

define('INPUT_FILENAME', '/path/to/your/csv/file'); 

define('OUTPUT_FILENAME', '/path/to/your/csv/file'); 
define('SEPARATOR', ','); 
define('ENCLOSURE', '"'); 

$entries = array(); 

// Allways prefetch entries 
if (($handle = fopen(INPUT_FILENAME, 'r')) !== false) { 
    while (($row = fgetcsv($handle, 1000, SEPARATOR, ENCLOSURE)) !== false) { 
     list($name, $salary) = $row; 
     $entries[] = array(
      'name' => $name, 
      'salary' => $salary 
     ); 
    } 
    fclose($handle); 
} 

if ($_SERVER['REQUEST_METHOD'] == 'POST') { 
    $position = null; 
    if (isset($_POST['position'])) { 
     $position = (int) $_POST['position']; 
    } 

    $name = null; 
    if (isset($_POST['name'])) { 
     $name = $_POST['name']; 
    } 

    $salary = null; 
    if (isset($_POST['salary'])) { 
     $salary = $_POST['salary']; 
    } 


    // do the validation stuff here ... 

    if ($ok) { 
     // merge the entry into the list 
     $entries[$position] = array(
      'name' => $name, 
      'salary' => $salary 
     ); 

     // save the entries into the DESTINATION file 

     $handle = fopen(OUTPUT_FILENAME, 'w'); 

     foreach ($entries as $entry) { 
      $fields = array(
       $entry['name'], 
       $entry['salary'] 
      ); 
      fputcsv($handle, $fields, SEPARATOR, ENCLOSURE); 
     } 

     exit('done'); 
    } 
} 

// display 

foreach ($entries as $i => $entry) { 
    // one form per entry 
    print '<form action="#" method="post">'; 
    print '<fieldset>'; 
    print '<label>Name'; 
    printf('<input type="text" name="name" value="%s" />', htmlspecialchars($entry['name'])); 
    print '</label>'; 
    print '<label>Name'; 
    printf('<input type="text" name="salary" value="%s" />', htmlspecialchars($entry['salary'])); 
    print '</label>'; 
    printf('<input type="hidden" name="position" value="%s"', $i); 
    print '</fieldset>'; 
    print '<input type="submit" />'; 
    print '</form>'; 
} 
+0

おかげで素晴らしいソリューションがあります。どうすればいいですか、どうすれば各行に新しいフォームを開くことができますか。 –

+0

エントリーごとに1つのフォームを追加しました。サンプルを確認してください。 –

0

は、ウェブページとしてファイルを保存し、それにPHPスクリプトを少し書きます。 mysqlが必要ない場合は、Sqliteを使用して値を格納します。 Sqliteはファイルのようになります。

関連する問題