2012-03-16 4 views
6

Vorrei poter consentire a un utente di immettere una formula personalizzata in una cella in Excel che si abbonerà ai dati forniti da un'applicazione .NET esterna. Ad esempio, l'utente potrebbe entrare ...Qual è la tecnologia appropriata per trasferire i dati in un foglio di calcolo Excel tramite una formula da una fonte .NET?

=getCurrentValue("ABC") 

C'è un'applicazione .NET esterno (C#), che sta determinando il valore di "ABC" ogni minuto.

La cella deve visualizzare il valore iniziale di "ABC" dall'applicazione esterna e aggiornare quando l'applicazione esterna invia un nuovo valore.

In passato penso che l'applicazione esterna sarebbe un server DDE e la formula sarebbe una formula client DDE ma DDE è apparentemente morto. Qual è la tecnologia "corretta" da usare per fare questo?

Si noti che il foglio di calcolo deve estrarre i dati tramite una formula. L'informazione non sta andando in un file excel fisso, ma in qualsiasi foglio di calcolo in cui l'utente inserisce una formula.

Grazie,

John

+0

FWIW, ho pensato che la questione era molto chiaramente Aske d, e trovo che lo straordinario livello di irrilevanza presente nelle risposte non accettate sia completamente sconvolgente. – BrainSlugs83

risposta

5

Excel RST (Real Time Data) è la sostituzione per DDE. Ti consente di inviare valori a una cella ogni volta che sono disponibili aggiornamenti. Se il processo che fornisce gli aggiornamenti è un'applicazione esterna, l'impostazione di un canale WCF tra il server RTD e l'app esterna dovrebbe consentire di inviare aggiornamenti in tempo reale in Excel.

Ecco alcuni link:

+0

Ci sono altri suoi articoli, vedere l'elenco su http://weblogs.asp.net/kennykerr/pages/My-Articles.aspx – quetzalcoatl

-1

È possibile comunicare con i fogli Excel attraverso l'Excel Api:

new Microsoft.Office.Interop.Excel.Application();

+0

Si potrebbero prendere in considerazione i file CSV però. La maggior parte dei provider di hosting non consentirà Office sul server lì in modo da poter scrivere e file CSV. Sebbene sia possibile fare molto di più con Microsoft.Office.Interop.Excel, è anche possibile creare aree di stampa e grafici – ydd1987

+1

L'interoperabilità di Excel sembra mirata ad automatizzare le attività di Excel o a spingere i dati in Excel. Ad esempio, può attivare una richiesta DDE in Excel. Ho adattato la domanda per riflettere sul fatto che vogliamo che Excel estragga i dati (anche se gli aggiornamenti verranno reinseriti una volta che Excel si iscrive). DDE sarebbe perfetto ma sembra non essere più raccomandato. C'è un meccanismo per registrare una formula/callback/qualcosa via interop? Se sì, potresti indicarmi un esempio? –

+0

Qualcosa di simile? oRng = oSheet.get_Range ("C2", "C6"); oRng.Formula = "= A2 & \" \ "& B2"; – ydd1987

Problemi correlati