需要將.xls或.xlsx轉換爲.csv,而無需在C#/ ASP.net Web應用程序中使用Excel。該應用程序目前正在使用NPOI.dll進行某些功能,但我沒有看到關於該特定功能的NPOI的codeplex wiki上的任何信息。有沒有人有什麼建議?C#將.xls轉換爲.csv而不使用Excel
感謝
需要將.xls或.xlsx轉換爲.csv,而無需在C#/ ASP.net Web應用程序中使用Excel。該應用程序目前正在使用NPOI.dll進行某些功能,但我沒有看到關於該特定功能的NPOI的codeplex wiki上的任何信息。有沒有人有什麼建議?C#將.xls轉換爲.csv而不使用Excel
感謝
.xls的是,不能以純文本格式閱讀一個專有的二進制格式,所以你需要辦公室或自由報辦公室或東西來讀取...的.xlsx是一種基於XML的格式,應該可以通過解析通過DOM ...但你仍然會手動迭代通過每個值和手動分隔,等等。你有沒有考慮過使用xslt?
不幸的是我被卡住使用業務端使用的格式。我希望有一個第三方庫可以在那裏使用我不知道的功能 – Tim
您可能會考慮Libre Office SDK,但我沒有使用它。它理論上可以幫助你閱讀xls文件。 – therealmitchconnors
我不認爲這是他的問題 - 他已經在使用NPOI來讀取Excel文件。 – Rup
有些庫(例如Excel Data Reader)可以讓你閱讀excel。一旦你能夠讀取數據,寫入csv應該很簡單。
查看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
感謝Mikael,然而,這是一個不錯的簡單解決方案,我討厭我必須定義輸出的想法。如果他們決定在未來改變某些事物,這對企業來說就不那麼靈活了。 – Tim
@MikaelÖstberg - 你所要做的就是定義一個輸出。然後,您可以讀取該輸入並將其更改爲其他功能。 –
@Tim你在想一個通用的Excel - > CSV的東西嗎?採取Excel文件中的任何內容,並將其寫入CSV文件中? –
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...
不需要安裝Excel,但是? – Rup
不,不需要Excel,只需要ADODB.NET噴墨驅動程序。 –
謝謝chezy。我在C#角落看到了類似的東西,但是我錯過了那個貼子。感謝張貼那一個。我想我會用這個解決方案。 – Tim