2012-11-12 15 views
5

Sto salvando un foglio di lavoro creato in C# utilizzando il metodo Workbook.SaveAs. L'argomento XlSaveAsAccessMode mi sta dando problemi.salva foglio di lavoro Excel in modalità di sola lettura non protetta condivisa da C#

xlShared salva il foglio di lavoro in modalità protetta in modo che gli utenti non possano giocare con i grafici ed esaminarli attentamente. In pratica si mostra come un grafico morto che non può essere referenziato ai dati.

xlExclusive consente all'utente di salvare l'accesso non protetto del libro ma non di altri. Gli altri utenti vedono ancora un grafico morto.

Ho bisogno di salvare il foglio di lavoro in una modalità che consenta a tutti di visualizzarlo ed esaminarlo ed essere in grado di giocare con i grafici, collegare la serie con punti dati, ecc. Ma allo stesso tempo, non dovrebbero essere in grado per salvare le loro modifiche per sovrascrivere il file. Come ottengo ciò utilizzando l'API C# COM Excel?

Referenze -

http://msdn.microsoft.com/en-us/library/microsoft.office.tools.excel.workbook.saveas(v=vs.80).aspx

http://msdn.microsoft.com/en-us/library/microsoft.office.interop.excel.xlsaveasaccessmode.aspx

risposta

5

prima salvare il file con una password contro le modifiche - si può fare questo in finestra di dialogo Salva (sotto le Strumenti discesa sulla parte inferiore della finestra di dialogo) mentre si salva il file. Controllare anche la casella di controllo di sola lettura raccomandata per forzare la modalità di sola lettura sul file.

Quando gli utenti aprono il file, Excel richiede la password di scrittura ma gli utenti che non dispongono di tale password saranno costretti a passare alla modalità di sola lettura. In mdoe di sola lettura, gli utenti possono apportare qualsiasi modifica al file ma non possono salvare sul file originale (indipendentemente dall'attributo di sola lettura nel file system) - possono solo salvare una nuova copia del file sotto un nuovo nome (o lo stesso nome in una cartella diversa).

Per salvare la cartella di lavoro di programmazione con queste proprietà, si può fare qualcosa di simile:

oWorkbook.SaveAs (oWorkbook.Path + @"\Workbook.xls", 
    Excel.XlFileFormat.xlWorkbookDefault, 
    missing, 
    "WritePassword", // password against modification 
    true,    // read-only recommended 
    false, 
    Excel.XlSaveAsAccessMode.xlNoChange, 
    missing, 
    missing, 
    missing, 
    missing, 
    missing); 

È inoltre possibile gestire l'evento WorkBookBeforeSave e aggiornare la cartella di lavoro con informazioni di monitoraggio per identificare le copie della cartella di lavoro originale. Ciò aiuterebbe con le copie salvate sotto il nome del file originale in una cartella diversa. (Non ho familiarità con questo particolare evento ma potresti anche essere in grado di annullare l'operazione di salvataggio quando lo gestisci.)

A meno che non si controlli completamente il file (che è quasi impossibile utilizzando solo Excel) gli utenti saranno in grado di crea copie del tuo file, ma le impostazioni precedenti almeno li costringono a salvare nuove copie mentre l'originale è intatto. Questo risolve il tuo problema?

+0

Grazie per l'informazione. Puoi dare un esempio di chiamata a WorkBook.SaveAs che vorresti ottenere per raggiungere questi obiettivi: è sufficiente consentire a tutti gli utenti l'accesso in sola lettura ma non protetto al file? Ho bisogno di fare questo alleato programmatico poiché questo fa parte di un processo di reporting quotidiano. Non ho il valore da impostare per XlSaveAsAccessMode per abilitare l'accesso non protetto per gli altri. Sembra che tutti i valori di XlSaveAsAccessMode bloccino il foglio di lavoro per altri utenti oltre a me. – user236215

+0

@ user236215 Ho aggiornato la mia risposta con un esempio: questo dovrebbe salvare la cartella di lavoro con le giuste impostazioni. Prima di implementarlo, provalo su una cartella di lavoro normale che hai appena creato in Excel (non a livello di codice) per vedere come funzionerà per gli utenti. Penso che questo faccia quello che ti serve. – xxbbcc

+0

Grazie. Apprezzo molto il vostro aiuto. Ci proverò domani mattina e ti informerò su come è andata. Ho un'altra domanda correlata. Sto creando i miei file da un file di modello.Attualmente il modello ha accesso in scrittura. Apro un nuovo file usando il modello. apportare modifiche e salvare come il mio rapporto. Ora, se faccio il modello di sola lettura, questo influenza il mio flusso in qualche modo? Ho intenzione di testare anche questo domani. Fondamentalmente, voglio rendere il modello di sola lettura, protetto e bloccato, quindi nessuno tranne me può modificarlo. – user236215

Problemi correlati