È possibile ma è necessario controllare attentamente la condivisione dei file specificata. La maggior parte delle classi .NET si imposta automaticamente su FileShare.Read, impedendo a un altro processo di scrivere sul file. Ma questo non può funzionare se il file viene aperto da Excel, ha già ottenuto l'accesso in scrittura ad esso. Non puoi negare un diritto che è già stato acquisito.
per risolvere il problema, rendere il codice simile a questo:
using (var fs = new FileStream(@"c:\\temp\\test.csv", FileMode.Open,
FileAccess.Read, FileShare.ReadWrite))
using (var sr = new StreamReader(fs)) {
// Read it...
}
Nota l'uso di FileShare.ReadWrite. Ho verificato che questo codice funzioni mentre Excel ha aperto test.csv.
Attenzione al potenziale problema si invitano con questo, cose strane possono accadere quando Excel scrive nel file proprio come si sta leggendo. Probabilmente leggerà spazzatura, parte di vecchi dati, parte di nuovi, senza un buon modo per diagnosticare questo.
fonte
2010-10-02 17:30:44
si prega di inviare il codice per mostrarci ciò che avete fatto finora – Woot4Moo
Questo è il codice: utilizzando (FileStream fs = new FileStream (csvOpenFileDialog.FileName, FileMode.Open, FileAccess.Read)) –
Ti manca un argomento. Leggi la mia risposta. – Nayan