leggere un URL e recuperare un file CSV
Domanda
ho un URL e quando lo carico in un browser lo riconosce come file csv e si apre Excel " vuoi aprire " ;. Voglio fare questo a livello di codice in modo da poter fare in modo che un'app Winforms utilizzi l'URL e analizzi direttamente il file CSV.
qual è il modo più rapido per farlo?
EDIT: ho provato a utilizzare WebClient e sto riscontrando l'errore folowing:
" Il server remoto ha restituito un errore: (500) Errore interno del server. "
Soluzione
Non vedo perché qualcosa del genere non funzioni (in C #):
// Download the file to a specified path. Using the WebClient class we can download
// files directly from a provided url, like in this case.
System.Net.WebClient client = new WebClient();
client.DownloadFile(url, csvPath);
Dove l'URL è il tuo sito con il file csv e csvPath è dove vuoi che vada il file reale.
Altri suggerimenti
Se si dispone di un'app WinForms, è possibile utilizzare un System.Net.WebClient per leggere i dati come una stringa.
Leggerà l'intero file CSV come una stringa, ma puoi scriverlo o analizzarlo a piacimento.
Se vuoi semplicemente montare qualcosa insieme, suggerirei di usare un linguaggio di scripting e un po 'di bash. Basta usare wget o qualcosa di simile per ottenere il file e un linguaggio di scripting per analizzarlo. Potresti persino usare php per analizzarlo una volta che hai avuto il file perché so che php ha la seguente funzione che è molto bella: http://php.net/manual/en/function.fgetcsv.php
Suggerirei di farlo in questo modo perché è più facile, questo ti consentirà sicuramente di analizzarlo abbastanza facilmente anche se non so cosa vuoi farne da lì, ma i mondi la tua ostrica.
Il seguente codice funziona per me ma sto eseguendo Open Office. Non l'ho provato con Excel. Il bit hacky è quello di rinominare la copia locale del file in * .xls in modo che Windows avvii Excel per impostazione predefinita, se lasci l'estensione del file come CSV, Windows avvierà Notepad per impostazione predefinita.
String url = "http://www.example.com/test.csv";
String localfile = "test.xls";
var client = new WebClient();
client.DownloadFile(url, localfile);
System.Diagnostics.Process.Start(localfile);