with windows phone 8我需要能夠使用C#在Excel中打開CSV文件。他們是市場上現在稱爲Excel Extensions的應用程序,可以在本地轉換csv文件。將CSV轉換爲Excel Windows Phone 8
我已經厭倦了使用開放式辦公室XML轉換CSV文件,但沒有奏效。我想在本地做這個,所以沒有網絡服務。
任何人都知道如何將CSV文件轉換爲Windows Phone 8平臺上的Excel?
with windows phone 8我需要能夠使用C#在Excel中打開CSV文件。他們是市場上現在稱爲Excel Extensions的應用程序,可以在本地轉換csv文件。將CSV轉換爲Excel Windows Phone 8
我已經厭倦了使用開放式辦公室XML轉換CSV文件,但沒有奏效。我想在本地做這個,所以沒有網絡服務。
任何人都知道如何將CSV文件轉換爲Windows Phone 8平臺上的Excel?
理論
你有兩種不同的選擇:(1)做的大部分工作的WP8客戶端(2)或做大部分工作的遠程服務器上。
對於選擇使用遠程服務器的#2:揭露一個WCF服務,它在CSV文件,解析CSV找到它的邏輯二維表結構,使用ClosedXML保存新XLSX文件,並返回到客戶端。此選項最直接,但也需要網絡連接和託管服務器。
對於不使用遠程服務器的選項#1:讀CSV文件,CSV數據複製到一個XLSX文件,save the XLSX into IsoStore and launch excel with that file。我寫這個話題在過去@How can we create, write and read an excel file for Windows Phone 8
有一件事你必須做的相當大量的工作是寫在純WP7 C#一個XLSX文件。您必須將要編寫XLSX的3rd partylibraries轉換爲支持WP7/WP8,或將simple end-to-end C# code samples轉換爲WP7/WP8。兩者都不簡單。轉換ClosedXML是可能的,但DocumentFormat.OpenXml對WPF的WindowsCore的依賴是一個問題。另一種選擇是在Silverlight上爲Word OpenXML編寫自己的OpenXML C#實現,如Chris Klug did here,稍後將爲ported to WP7。關鍵是使用OpenXML規範爲您提供優勢。
LIVE代碼示例
例如,看着克里斯·格公司Silverlight Excel OpenXML文章有可能把他的代碼Ag.OpenXML和OpenXML.Silverlight.Spreadsheet端口那些WP8,然後簡單地調用它們。我做到了。下面是如何獲取的實驗源代碼,並開始:
1)下載並解壓@http://JustinAngel.net/Storage/OpenXML.Silverlight.Spreadsheet.WP8.zip
2)添加一個引用到的csproj,或將DLL的OpenXML.Silverlight.Spreadsheet.WP8.dll &來自「OpenXML.Silverlight.Spreadsheet.WP8 \ Bin \ Debug」的SharpZipLib.dll。
3)添加下面的代碼片段,將SpreedsheetDocument文件保存到應用程序的WP8 IsoStore中,然後使用WP8 app2app文件關聯在Word中啓動它。
private async void SaveXlsxToIsoStoreAndLaunchInExcel(SpreadsheetDocument doc)
{
using (var isoStore = IsolatedStorageFile.GetUserStoreForApplication())
{
if (isoStore.FileExists("myFile.xlsx"))
isoStore.DeleteFile("myFile.xlsx");
using (var s = isoStore.CreateFile("myFile.xlsx"))
using (IStreamProvider storage = new ZipStreamProvider(s))
{
doc.Save(storage);
}
Launcher.LaunchFileAsync(
await ApplicationData.Current.LocalFolder.GetFileAsync("myFile.xlsx"));
}
}
4)調用上面的代碼片段與克里斯的樣本文件:
private async void MainPage_Loaded(object sender, RoutedEventArgs e)
{
SpreadsheetDocument doc = new SpreadsheetDocument();
doc.ApplicationName = "SilverSpreadsheet";
doc.Creator = "Chris Klug";
doc.Company = "Intergen";
SharedStringDefinition str1 = doc.Workbook.SharedStrings.AddString("Column 1");
SharedStringDefinition str2 = doc.Workbook.SharedStrings.AddString("Column 2");
SharedStringDefinition str3 = doc.Workbook.SharedStrings.AddString("Column 3");
doc.Workbook.Sheets[0].Sheet.Rows[0].Cells[0].SetValue(str1);
doc.Workbook.Sheets[0].Sheet.Rows[0].Cells[1].SetValue(str2);
doc.Workbook.Sheets[0].Sheet.Rows[0].Cells[2].SetValue(str3);
doc.Workbook.Sheets[0].Sheet.Rows[1].Cells[0].SetValue("Value 1");
doc.Workbook.Sheets[0].Sheet.Rows[1].Cells[1].SetValue(1);
doc.Workbook.Sheets[0].Sheet.Rows[1].Cells[2].SetValue(1001);
doc.Workbook.Sheets[0].Sheet.Rows[2].Cells[0].SetValue("Value 2");
doc.Workbook.Sheets[0].Sheet.Rows[2].Cells[1].SetValue(2);
doc.Workbook.Sheets[0].Sheet.Rows[2].Cells[2].SetValue(1002);
doc.Workbook.Sheets[0].Sheet.Rows[3].Cells[0].SetValue("Value 3");
doc.Workbook.Sheets[0].Sheet.Rows[3].Cells[1].SetValue(3);
doc.Workbook.Sheets[0].Sheet.Rows[3].Cells[2].SetValue(1003);
doc.Workbook.Sheets[0].Sheet.Rows[4].Cells[0].SetValue("Value 4");
doc.Workbook.Sheets[0].Sheet.Rows[4].Cells[1].SetValue(4);
doc.Workbook.Sheets[0].Sheet.Rows[4].Cells[2].SetValue(1004);
TablePart table = doc.Workbook.Sheets[0].Sheet.AddTable("My Table", "My Table", doc.Workbook.Sheets[0].Sheet.Rows[0].Cells[0], doc.Workbook.Sheets[0].Sheet.Rows[4].Cells[2]);
table.TableColumns[0].Name = str1.String;
table.TableColumns[1].Name = str2.String;
table.TableColumns[2].Name = str3.String;
doc.Workbook.Sheets[0].Sheet.AddColumnSizeDefinition(0, 2, 20);
doc.Workbook.Sheets[0].Sheet.Rows[5].Cells[1].SetValue("Sum:");
doc.Workbook.Sheets[0].Sheet.Rows[5].Cells[2].Formula = "SUM(" + doc.Workbook.Sheets[0].Sheet.Rows[1].Cells[2].CellName + ":" + doc.Workbook.Sheets[0].Sheet.Rows[4].Cells[2].CellName + ")";
SaveXlsxToIsoStoreAndLaunchInExcel(doc);
}
5)當運行這個代碼片段,我們可以看到如下的警告彈出,然後Excel電子表格。隨時改進我的草稿Silverlight - > WP8端口並刪除該警告。