2010-03-21 29 views
2

使用Visual Studio 2008在C#中嘗試使用文本文件加載Excel表。我當前的程序將完整的文件放在一個單元格中。有沒有辦法將每個數據點放在它自己的單元格中。遇到問題與excel交互以完成此任務。寫入文本數據使用C#的excel文件

感謝

+0

一個「快」的方法是呈現爲一個HTML表格,並調用文件的.xls。 Excel會讀得很好,但你可能會彈出一個關於格式的提示。正確的方法將使用ADO或Excel互操作。 – 2010-03-21 17:57:52

+1

關於互操作的說明。 1)需要在機器上安裝Excel; 2)在多用戶環境(網絡應用程序)中表現不佳。在這種情況下,CSV是更好的選擇。 – NotMe 2010-03-21 18:15:54

+0

'和'?真?你標記了你的問題'和'? – 2010-03-22 14:07:12

回答

2

的Microsoft Excel 11.0對象庫可能會幫助你。你必須在你的項目中referenct添加到它與包括命名空間:

using Microsoft.Office.Interop.Excel; 

http://support.microsoft.com/?scid=kb%3Ben-us%3B302096&x=10&y=10看看。 Theres更多信息。

+0

謝謝,讓我到陣列。現在我只需要將文本文件轉換爲數組。這是理想的情況,因爲我需要在將數據放入excel之前移動數據並對其進行處理。有任何想法嗎? – Joe 2010-03-21 20:50:51

1

一個簡單的方法是將您的文本文件輸出爲CSV file (comma separated values)。每一行都是一行,每一列在它們之間都有逗號。維基百科鏈接有很好的例子。 Excel文件很容易讀取CSV文件。

如果您希望做的不僅僅是將數據導入到Excel中,而且需要格式化單元格,那麼使用C#的Excel互操作性就是phimuemue所建議的方式。

0

Microsoft定義了一個與Excel 2002及更高版本兼容的XML電子表格格式。我已經使用過,並且非常滿意。在MSDN上有一個gentle introduction和一些nitty-gritty documentation

這裏是一個簡短的代碼說明你將如何使用它:

public void WriteExcelDocument(string filename, string[,] values) 
{ 
    using (var writer = XmlWriter.Create(filename)) 
    { 
     const string ss = "urn:schemas-microsoft-com:office:spreadsheet"; 

     writer.WriteProcessingInstruction("mso-application", "progid=\"Excel.Sheet\""); 
     writer.WriteStartElement("ss", "Workbook", ss); 
     writer.WriteStartElement("Worksheet", ss); 
     writer.WriteAttributeString("Name", ss, "Sheet1"); 
     writer.WriteStartElement("Table", ss); 

     for (var i = 0; i < values.GetLength(0); i++) 
     { 
      writer.WriteStartElement("Row", ss); 

      for (var j = 0; j < values.GetLength(1); j++) 
      { 
       writer.WriteStartElement("Cell", ss); 
       writer.WriteStartElement("Data", ss); 

       // Valid types are: Number, DateTime, Boolean, String, Error. 
       // To keep the example simple, I'm just doing strings. 
       writer.WriteAttributeString("Type", ss, "String"); 

       // If the cell contains a boolean, be sure to write "0" or "1" here, not 
       // "false" or "true". Again, I'm just doing strings, so it doesn't matter. 
       writer.WriteString(values[i, j]); 

       writer.WriteEndElement(); 
       writer.WriteEndElement(); 
      } 

      writer.WriteEndElement(); 
     } 

     writer.WriteEndElement(); 
     writer.WriteEndElement(); 
     writer.WriteEndElement(); 
    } 
} 

隨意拿這個代碼,並使用它或修改它,你認爲合適的。我正在根據MIT許可證發佈它。這只是一個起點;您可以修改它以處理不同的數據類型,列寬,樣式,多個工作表等。

1

如上所述,您可以使用它來編寫excel xml文檔。它實際上是你需要的大部分功能的一個很好的包裝。另外,如果你在服務器上沒有安裝excel的web應用程序中執行此操作,則不需要interop庫。

http://www.carlosag.net/Tools/ExcelXmlWriter/

相關問題