2010-03-08 92 views
1

我已經在這個問題上一直在我的頭上撞了兩天,我需要一些幫助。ASP.NET Excel導出格式問題

我創建一個使用ASP.net的Excel文件,一切都很好,除了一列必須格式化爲2位的小數,但是當它拉入Excel時,Excel會自動將其格式化爲整數保留小數位。

sw.Write(String.Format("{0:f}", CDbl(dr(14)).ToString("0.00")))這將產生「20.00」

,但是當我在Excel中打開它它顯示爲20 ...如果我選擇整列並格式化像它應該它被顯示爲20.00數量,但我不想這樣做(我不能這樣做),文件應該被自動拾取並導入另一個需要列爲小數的系統。

任何建議將不勝感激。

回答

1

您是將輸出寫入CSV,HTML,XML,DOCX還是使用第三方庫生成二進制Excel 2003?

答案各不相同。

格式化excel文檔後,以適當的格式(html,CSV,XML等)保存,在記事本中打開文件,看看你的電話號碼周圍散佈什麼格式的代碼。

第2部分(我不能把這個評論,所以我把我的評論我的回答) 對於文本文件(沒有元數據),Excel探討第10行左右,使一個猜測數據類型並應用默認格式。有時候,您可以通過確保前幾行有數據並以excel可以猜測數據類型的方式對數據進行格式化來指導猜測過程。但是,AFAIK,您無法設置格式。

我建議切換到導出HTML表格。 Excel可以理解HTML表格,並且只要excel將字符串解釋爲字符串並保留格式化,您就可以使用有據可查的模型(HTML!)對顏色,大小等結果進行格式化,並且可能會格式化數字。

如果失敗,請使用第三方庫(如http://www.codeplex.com/ExcelPackage)導出docx。

+0

我實際上創建一個製表符分隔文本文件,當我在Excel中格式化文件,並用記事本打開它的數據格式正確(它也格式正確,然後我用excel保存,我打開記事本)它只是當它在Excel中打開時Excel適用於自動格式的數字,它切斷.00 – BWC 2010-03-09 00:01:09

+0

請參閱我的答案更新我的迴應您的評論。 – MatthewMartin 2010-03-09 14:49:23

0

也許你不應該輸出爲字符串,但作爲十進制或雙? AFAIR,對象類型是可以接受的。

+0

它不要緊,我輸出Excel格式,並切斷.00 – BWC 2010-03-08 23:45:08

0

如果你通過雙擊打開一個製表符分隔的文件(基本上你在做什麼當你的網站流它)Excel的「猜測」在你想要的格式。您必須打開Excel,然後使用文件菜單打開文件所在的位置,然後使用導入嚮導來選擇列的數據類型。然後你得到你想要的格式。

如果您想要正確的行爲,您將需要使用不同的方法從您的網站生成您的文件。您需要使用VSTO或維護格式化語言的第三方庫等實際創建Excel文件(.xls)。

另一種選擇是學習Excel文件格式,以便對數據使用xslt轉換來生成文件....或者將其完全寫入代碼中。

1

就我所知,無法在CSV中指定格式「0.00」。 Excel似乎從CSV中選取了一些格式,例如123美元。00將被格式化爲帶兩位小數的貨幣。

SrpreadsheetGear for .NET將做到這一點。下面是一個簡單的例子:

using System; 
using SpreadsheetGear; 

namespace Program 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      // Create a new empty workbook and get a reference to Sheet1!A1. 
      var workbook = SpreadsheetGear.Factory.GetWorkbook(); 
      var a1 = workbook.Worksheets[0].Cells["A1"]; 
      // Format A1 as numeric with two decimals. 
      a1.NumberFormat = "0.00"; 
      // Put 123 in A1. 
      a1.Value = 123; 
      // Save as xls. 
      workbook.SaveAs(@"c:\tmp\FormattedNumber.xls", FileFormat.Excel8); 
      // Save as xlsx. 
      workbook.SaveAs(@"c:\tmp\FormattedNumber.xlsx", FileFormat.OpenXMLWorkbook); 
     } 
    } 
} 

你可以看到現場ASP.NET的Excel報表樣本here並下載免費試用版here

聲明:我自己的SpreadsheetGear LLC

0

Excel中是運用它的默認數字格式,因爲源不持有任何格式的信息。除了讓用戶更改單元格格式外,還需要提供格式化數據。如果您想保留製表符分隔的格式,這將是問題。我已經得到了很好的結果,將數據作爲一個HTML表格,並且按照您的需要格式化了字段。 Excel似乎尊重各種HTML屬性。 This post討論了一些其他格式問題,但會告訴你如何使用HTML和Excel標籤來解決你的問題。