2011-09-27 115 views
4

需要將.xls或.xlsx轉換爲.csv,而無需在C#/ ASP.net Web應用程序中使用Excel。該應用程序目前正在使用NPOI.dll進行某些功能,但我沒有看到關於該特定功能的NPOI的codeplex wiki上的任何信息。有沒有人有什麼建議?C#將.xls轉換爲.csv而不使用Excel

感謝

+0

謝謝chezy。我在C#角落看到了類似的東西,但是我錯過了那個貼子。感謝張貼那一個。我想我會用這個解決方案。 – Tim

回答

-3

.xls的是,不能以純文本格式閱讀一個專有的二進制格式,所以你需要辦公室或自由報辦公室或東西來讀取...的.xlsx是一種基於XML的格式,應該可以通過解析通過DOM ...但你仍然會手動迭代通過每個值和手動分隔,等等。你有沒有考慮過使用xslt?

+0

不幸的是我被卡住使用業務端使用的格式。我希望有一個第三方庫可以在那裏使用我不知道的功能 – Tim

+0

您可能會考慮Libre Office SDK,但我沒有使用它。它理論上可以幫助你閱讀xls文件。 – therealmitchconnors

+0

我不認爲這是他的問題 - 他已經在使用NPOI來讀取Excel文件。 – Rup

5

有些庫(例如Excel Data Reader)可以讓你閱讀excel。一旦你能夠讀取數據,寫入csv應該很簡單。

3

查看FileHelpers庫。它會做你想要的。

使用FileHelpers,您可以從Excel文件讀取並寫入CSV或平面文本文件。它是面向對象的!你所要做的就是用一些屬性來註釋類,以便它們匹配源excel文件。

考慮這個例子:

[DelimitedRecord("|")] 
public class CustomersVerticalBar { 
    public string CustomerID; 
    public string CompanyName; 
    ... 
} 

閱讀使用此:

ExcelStorage provider = new ExcelStorage(typeof(CustomersVerticalBar)); 

provider.StartRow = 3; 
provider.StartColumn = 2; 

provider.FileName = "Customers.xls"; 

CustomerVerticalBar[] res = (CustomerVerticalBar[]) provider.ExtractRecords(); 

例從這裏取:http://filehelpers.sourceforge.net/example_exceldatalink.html

+0

感謝Mikael,然而,這是一個不錯的簡單解決方案,我討厭我必須定義輸出的想法。如果他們決定在未來改變某些事物,這對企業來說就不那麼靈活了。 – Tim

+0

@MikaelÖstberg - 你所要做的就是定義一個輸出。然後,您可以讀取該輸入並將其更改爲其他功能。 –

+0

@Tim你在想一個通用的Excel - > CSV的東西嗎?採取Excel文件中的任何內容,並將其寫入CSV文件中? –

5

ADODB.NET可用於治療的Excel文件作爲數據源。

//string ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0};Extended Properties=Excel 8.0;"; 
string ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Extended Properties=Excel 12.0;"; 

ConnectionString = string.Format(ConnectionString, @"FullPathToExcelFile"); 

OleDbConnection conn = new OleDbConnection(ConnectionString); 
conn.Open(); 

OleDbCommand cmdSelect = new OleDbCommand("SELECT * FROM [Sheet1$]", conn); 
OleDbDataAdapter oleDBAdapter = new OleDbDataAdapter(); 
oleDBAdapter.SelectCommand = cmdSelect; 

DataSet myDataset = new DataSet(); 
oleDBAdapter.Fill(myDataset); 
conn.Close(); 

// Do whatever with data in myDataset including export to csv... 
+0

不需要安裝Excel,但是? – Rup

+0

不,不需要Excel,只需要ADODB.NET噴墨驅動程序。 –