Excel到XML:将小数舍入到最接近的百分位并保留超链接

时间:2013-03-23 15:48:43

标签: javascript jquery html xml excel

我跟着this guide将Excel电子表格导出为XML数据文件,然后this guide将XML表格显示为我网站上的HTML表格。它运作得很好。现在我“只”还有一些小问题,我无法解决。

(1)输出表包含的数字如1.325667,但也有很多0。我希望零显示为0.00,并且具有许多小数的数字显示为1.33。基本上,每个数字应显示两位小数。

(2)excel表包含我网站上其他页面的超链接,我希望在呈现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-Sheet的格式已经集成了这两个方面,但是转换为XML文件似乎是个问题。

非常感谢你的帮助(一次又一次:-))

UPDATE 我现在也找到了一种在Excel中进行舍入的方法,但是我仍然只使用一个十进制的整数和数字。基本上,我现在“只”需要一种方法来显示每个带有两个小数点的数字,应用于整数(例如0应该为0.00)和带有一位小数的数字(例如1.5应该是1.50)。 JohnnyReeves的回答似乎在正确的轨道上,但我无法让它发挥作用。还有其他想法吗?

2 个答案:

答案 0 :(得分:0)

  1. Number对象的方法为 toFixed()

    1.325667.toFixed(2)= 1.33。

  2. 在XML循环内运行,选择URL并将其添加到链接:

    document.write(“&lt; a href =”+ x [i] .getElementsByTagName(&lt; your URL link&gt;)+“&gt;);

    document.write(“some text”);

    document.write(“&lt; / a&gt;”);

答案 1 :(得分: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;
}