4 messaggi dal 21 aprile 2007
Salve a tutti volevo chiedervi un aiuto su come implementare la creazione di un file Excel sul mio amatissimo Windows Phone. Mi sta facendo uscire fuori di testa perché non solo ci riesco ma l'unico neo che al momento del "Launch" dallo Storage mi crea un formato non compatibile con la versione Office 2013 installata sullo Smartphone.
Il codice funziona senza problemi ma dopo il "Lunch" mi di compare un alert dicendo che il file è stato recuperato lasciandomi vedere comunque il file aperto in Excel.
Solo un disappunto: come fa una piattaforma del genere a soffrire di queste carenze credo alquanto gravi dal momento che si devono importare dll di silverlight non ottimizzate per l'sdk?



private void genera_file_excel_btn_Click(object sender, RoutedEventArgs e)
{
SpreadsheetDocument doc = new SpreadsheetDocument();
doc.ApplicationName = "";
doc.Creator = "";
doc.Company = "";

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(1005);

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);
}

private async void SaveXlsxToIsoStoreAndLaunchInExcel(SpreadsheetDocument doc)
{
using (var isoStore = IsolatedStorageFile.GetUserStoreForApplication())
{
if (isoStore.FileExists("myFile.xlsx"))
isoStore.DeleteFile("myFile.xlsx");

using (FileStream s = isoStore.OpenFile("myFile.xlsx", FileMode.Create, FileAccess.Write))
using (IStreamProvider storage = new ZipStreamProvider(s))
{
doc.Save(storage);
}
}

StorageFile s_file = await ApplicationData.Current.LocalFolder.GetFileAsync("myFile.xlsx");
await Launcher.LaunchFileAsync(s_file);
}

Spero che qualcuno mi possa dare una dritta. Grazie in anticipo!!!

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.