gpt4 book ai didi

excel - 将 CSV 转换为 Excel Windows Phone 8

转载 作者:行者123 更新时间:2023-12-01 11:48:05 25 4
gpt4 key购买 nike

对于 Windows Phone 8,我需要能够使用 C# 在 Excel 中打开 CSV 文件。他们是市场上现在称为 Excel Extensions 的应用程序,可以在本地转换 csv 文件。

我已经厌倦了使用 Open Office XML 转换 CSV 文件,但这没有用。我想在本地进行,所以没有网络服务。

有人知道如何在 Windows Phone 8 平台上将 CSV 文件转换为 Excel 吗?

最佳答案

理论

您有两个不同的选择:(1) 在 WP8 客户端上完成大部分工作 (2) 或在远程服务器上完成大部分工作。

对于使用远程服务器的选项#2:公开接收 CSV 文件的 WCF 服务,解析 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 文件。您要么必须转换 3rd party libraries编写 XLSX 以支持 WP7/WP8,或转换 simple end-to-end C# code samples到 WP7/WP8。两者都不简单。转换 ClosedXML 是可能的,但 DocumentFormat.OpenXml 对 WPF 的 WindowsCore 的依赖是一个问题。另一种选择是编写您自己的 OpenXML C# 实现,例如 Chris Klug did here对于 Silverlight 上的 Word OpenXML,是 ported to WP7稍后的。关键是为了您的利益而使用 OpenXML 规范。


实时代码示例

例如,查看 Chris Klug 的 Silverlight Excel OpenXML article 可以获取他的代码 Ag.OpenXML OpenXML.Silverlight.Spreadsheet 将它们移植到 WP8,然后简单地调用它们。我就是这么做的。以下是获取实验性源代码并开始使用的方法:

1) 下载并解压@ http://JustinAngel.net/Storage/OpenXML.Silverlight.Spreadsheet.WP8.zip

2) 添加对 csproj 或“OpenXML.Silverlight.Spreadsheet.WP8\Bin\Debug”中的 DLL OpenXML.Silverlight.Spreadsheet.WP8.dll 和 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) 使用 Chris 的示例文档调用上面的代码片段:

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 端口并删除该警告。

Excel WP8 open with the file we just created Corrupt file warning on WP8 Excel

关于excel - 将 CSV 转换为 Excel Windows Phone 8,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14095429/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com