ho dati in un foglio di calcolo di Excel con i valori in questo modo:incolla da Excel in C# app, conservando la piena precisione
- 0,69491375
- 0,31220394
Le celle sono formattate come percentuale, e impostato per visualizzare due posizioni decimali. In modo che appaiano in Excel come:
- 69,49%
- 31.22%
Ho un programma C# che analizza questi dati fuori dal Clipboard
.
var dataObj = Clipboard.GetDataObject();
var format = DataFormats.CommaSeparatedValue;
if (dataObj != null && dataObj.GetDataPresent(format))
{
var csvData = dataObj.GetData(format);
// do something
}
Il problema è che csvData
contiene i valori visualizzati da Excel, ossia '69 .49% 'e '31 .22%'. Non contiene la precisione completa dei posti decimali aggiuntivi.
Ho provato utilizzando le varie DataFormats
valori diversi, ma i dati sempre e solo contiene il valore visualizzato da Excel, ad esempio:
DataFormats.Dif
DataFormats.Rtf
DataFormats.UnicodeText
- ecc
Come test, ho installato LibreOffice C alc e copia/incolla le stesse celle da Excel in Calc. Calc conserva la precisione completa dei dati grezzi.
Così chiaramente Excel inserisce questi dati da qualche parte a cui possono accedere altri programmi. Come posso accedervi dalla mia applicazione C#?
Modifica - Passaggi successivi.
Ho scaricato il codice sorgente di LibreOffice Calc e cercherò di vedere se riesco a scoprire come ottenere il contesto completo dei dati copiati da Excel.
Ho anche effettuato una chiamata GetFormats()
sull'oggetto dati restituito dagli Appunti e ottenuto un elenco di 24 formati di dati diversi, alcuni dei quali non presenti nell'enum DataFormats
. Questi includono formati come Biff12
, Biff8
, Biff5
, Format129
tra gli altri formati che sono sconosciuti a me, quindi mi indagare su questi e rispondere se faccio qualche scoperta ...
Ho appena provato ad incollare i dati in 10 diversi programmi, e mi hanno dato tutti i dati formattati "69.00% \ r \ n" proprio come lo vedo io Appunti.GetData –
Sì, hai ragione. Stavo pensando, Excel ha i suoi appunti interni dove memorizza tutti i dati di formattazione e precisione, che non vengono messi negli appunti generali? E Calc ha qualche aggancio negli appunti interni di Excel, che la maggior parte delle app non avrebbe e non è facile da ottenere? Ho paura della risposta a questo. :-) – Lyall
se Calc utilizza un hook excel, non riesco a vedere un motivo per cui non è possibile utilizzare lo stesso hook ... – Adam