0

マルチシート Excel ワークブックのデータをフォームに入力する必要があります。Json にシリアル化する VBA スクリプトを作成しようとしましたが、非常に労力がかかるようで、jquery.populate という名前のプラグインを調べましたが、それを理解できませんでした。

ここにサンプルがあります:

 <fieldset>
<div class="_50"><strong>Phytoplankton CNP Sample ID:</strong><input type="text"  name="phyCNP"></div>
<div class="_25">D1 Filtered (mL):<input type="text" name="2D1"></div>
<div class="_25">D2 Filtered (mL):<input type="text" name="2D2"></div>
</fieldset>
 <fieldset>
 <div class="_50"><strong>Algae Sample ID:</strong><input type="text" name="algae"></div>
 <div class="_25"> <label></label>
      <input type="radio" id="radPeri1mod" name="algae"  data-mini="true"/>
      <label for="radPeri1mod">PERI-1-MOD</label>
    <label> </label>
      <input type="radio" id="radPeri1" name="algae"  data-mini="true"/>
      <label for="radPeri1">PERI-1</label></div>
   <div class="_25"> Other: <input type="text" id="textOther" name="algae"  /></div>
   </fieldset>

1. Excel のマルチシート ワークブックからフィールドにデータを入力する最良の方法は何ですか?

2. Excel フィールドセットの数に基づいて、その場でフィールドセットを追加する方法はありますか? 上記のフィールドセットには、1 セットのデータまたは 5 セットのデータが含まれる場合があります。基本フォームに空のセットが 1 つだけ必要です。

4

1 に答える 1

0

テンプレートビルダーに入ることなく、適切な構文がないため少し面倒ですが、ループ内で各フィールドセットを手動で構築/挿入できます。

私はその側面に精通していないため、ajax の質問には答えられませんが、次の例を参考にしてください。

var ajaxForNumberOfFields,
    ajaxForNumberOfDataSets,
    ajaxForDataTitle,
    ajaxForDataName,
    $field,
    $header,
    $data1,
    $data2;

// if the form already has old data then clear it
if(clearData) {
    $('form:not(first-child)').remove();
}

// ajax the number of fields
// something like $.ajax('yourURL', options).done(function(data){ajaxForNumberOfFields = data);

for(var i=0;i<ajaxForNumberOfFields;++i) {
    // create a new fieldset
    $field = $('<fieldset />');

    // ajax the number of data sets
    // ajaxForNumberOfDataSets = $.ajax('yourURL', options).done(function(data){ajaxForNumberOfFields = data);

    for(var j=0;j<ajaxForNumberOfDataSets;++j;)
        // new data header and rows
        $header = $('<div class=_50 />');
        $data1 = ('<div class=_25 />');
        $data2 = ('<div class=_25> Other: </div>');

        // ajax the data for the current set
        // ajaxForDataTitle = $.ajax('yourURL', options).done(function(data){ajaxForNumberOfFields = data);
        // ajaxForDataName = $.ajax('yourURL', options).done(function(data){ajaxForNumberOfFields = data);

        // load header
        $header
            .append($('<strong />').text(ajaxForDataTitle))
            .append($('<input type="text" />').attr('name', ajaxForDataName));

        // build data 1
        $data1
            .append('<label />')
            .append($('<input type="radio" id="radPeri1mod" data-mini="true"/>').attr('name', ajaxForDataName))
            .append('<label for="radPeri1mod">PERI-1-MOD</label>')
            .append('<label />')
            .append($('<input type="radio" id="radPeri1" data-mini="true"/>').attr('name', ajaxForDataname))
            .append('<label for="radPeri1">PERI-1</label>');

        // build data2
        // iterating over fieldsets will restrict the use of the id attribute
        // will need to use class attribute to locate the input, then figure out which one it is
        $data2
            .append($('<input type="text" class="textOther" />').attr('name', ajaxforDataName));

        // build the fieldset
        $field.append($header).append($data1).append(data2);

        // stuff the fieldset into the form
        $('form').append($field);
    }
}
于 2013-03-29T17:46:00.823 に答える