2013-03-23 10 views
0

我跟着this guide將Excel電子表格導出爲XML數據文件,然後this guide將XML表格作爲HTML表格顯示在我的網站上。它效果很好。現在我「只」不得不解決一些小問題,我無法解決。Excel到XML:將小數點舍入到最接近的百分之一併保持超鏈接

(1)輸出表包含數字如1.325667,但也有很多0。我希望零顯示爲0.00,並且有許多小數的數字顯示爲1.33。基本上,每個數字應該以兩位小數顯示。 (2)excel工作表包含超鏈接到我網站上的其他頁面,我希望在呈現XML數據文件和HTML表格時保留其他頁面的超鏈接。到目前爲止,這並沒有奏效。這可能嗎?

UPDATE我想出了這部分。通過打破了超鏈接的只是他們的字符的字符串,則這些字符串添加新列,然後調整源代碼,包括

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的答案似乎在正確的軌道上,但我無法讓它工作。任何其他想法?

回答

0
  1. Number對象具有方法toFixed()

    1.325667.toFixed(2)= 1.33。

  2. 的XML的環內運行,選擇URL,並將其添加到鏈接:

    文件撰寫( 「< A HREF =」 + X [I] .getElementsByTagName(<網址鏈接> )+ 「>);

    文件撰寫(」 一些文本 「);

    文件撰寫(」 </A>「);

+0

謝謝你的幫助。但是,我可能需要更多指導:-) 在此代碼字符串中的位置'document.write(x [i] .getElementsByTagName(「NAME」)[0] .childNodes [0]。nodeValue);'我會添加'toFixed(2)',以便它自動將每個數字四捨五入到第二個小數。 我相信你的超鏈接問題的解決方案也需要我插入每個單獨的行的鏈接,對不對? – rf2012 2013-03-23 16:34:40

0

N個umber.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; 
} 
+0

謝謝!不幸的是,我無法讓它工作,但也許這是因爲我缺乏網頁設計和XML的經驗。我把你的代碼放在頁面的頭部,但它不會改變表格中的數字。我需要改變其他代碼嗎? – rf2012 2013-03-23 16:45:33

+0

你需要調用它,例如:'document.write(formatNumber(x [i] .getElementsByTagName(「NAME」)[0] .childNodes [0] .nodeValue));' – JonnyReeves 2013-03-23 16:50:13

+0

我也試過,但沒有幸運的是,它只是阻止表格填充來自XML文件的數據。 – rf2012 2013-03-23 17:08:30

相關問題