0

このガイドに従ってExcel スプレッドシートを XML データ ファイルとしてエクスポートし、次にこのガイドに従って XML シートを HTML テーブルとして Web サイトに表示しました。それはうまくいきました。今では、解決できなかった小さな問題が残っているだけです。

(1) 出力テーブルには、1.325667 のような数字だけでなく、多数の 0 も含まれています。ゼロを 0.00 と表示し、小数点以下の多い数字を 1.33 と表示したいと思います。基本的に、各数値は小数点以下 2 桁で表示する必要があります。

(2) Excel シートには、Web サイトの他のページへのハイパーリンクが含まれており、XML データ ファイルをレンダリングしてから HTML テーブルをレンダリングするときに保持したいと考えています。これまでのところ、それはうまくいきませんでした。これは可能ですか?

更新私はこの部分を理解しました。ハイパーリンクを文字列だけに分割し、これらの文字列に新しい列を追加し、ソース コードを微調整して、

document.write("<tr><td><a href='");
document.write(x[i].getElementsByTagName("character-string")0].childNodes[0].nodeValue);
document.write(".php'>");
document.write(x[i].getElementsByTagName("name")[0].childNodes[0].nodeValue);
document.write("</a></td>"); 

ハイパーリンクを含めることができました。

Excel シートは、これら 2 つの側面が既に統合された形式になっていますが、XML ファイルへの変換が問題のようです。

ご協力ありがとうございました (何度も何度も:-))

更新Excelで丸めを行う方法も見つけましたが、整数と小数点以下1桁の数字にまだこだわっています。基本的に、整数 (例: 0 は 0.00) と小数点以下 1 つの数値 (例: 1.5 は 1.50) に適用して、すべての数値を小数点以下 2 桁で表示する方法が必要なだけです。JohnnyReeves の答えは正しい軌道に乗っているようですが、うまくいきませんでした。他のアイデアはありますか?

4

2 に答える 2

0
  1. NumberオブジェクトにはtoFixed()メソッドがあります。

    1.325667.toFixed(2)=1.33。

  2. XMLのループ内で実行し、URLを選択して、リンクに追加します。

    document.write( "<a href =" + x [i] .getElementsByTagName(<URLリンク>)+ ">);

    document.write( "some text");

    document.write( "</ a>");

于 2013-03-23T16:27:25.150 に答える
0

Number.toFixed メソッドは、浮動小数点値 (例: 2.1) でのみ機能しますが、整数 (例: 2 または 0) では機能しません。数値型を文字列型に変換して、表示用に書式設定し、入力に関係なく一貫した結果を得る必要があります。このような関数はトリックを行う必要があります:

function formatNumber(value) {
    var parts,
        trailingDigits,
        formattedRemainder;

    // Coerce the supplied value to a String type.
    value = String(value);

    // Break the supplied number into two parts, before and after the dot
    parts = value.split(".");

    // If there was no dot, there will only be one "part" and we can just
    // add the trailing zeros.
    if (parts.length === 1) {
        formattedRemainder = "00";
    }
    else {
        trailingDigits = parts[1];

        if (trailingDigits.length === 0) {
            // A dot, but no digits. (eg: 2. -> 2.00)
            formattedRemainder = "00";
        }
        else if (trailingDigits.length === 1) {
            // Add an extra trailing zero (eg: 2.1 -> 2.10)
            formattedRemainder = trailingDigits + "0";
        }
        else {
            // Just take the last two trailing digits.
            formattedRemainder = trailingDigits.substring(0, 2);
        }
    }

    // Build the final formatted string for display.
    return parts[0] + "." + formattedRemainder;
}
于 2013-03-23T16:34:46.773 に答える