[英]How to save excel file without GUI notifications?
我有一個在服務器上運行的應用程序,必須將一些內容寫入excel文件。 當我想保存和關閉文件時,其他計算機和用戶打開文件時會遇到麻煩。 Excel將打開對話框詢問文件名,但該文件正在服務器上運行,沒有用戶可以關閉對話框。 因此,當文件打開且無法寫入時,應在沒有GUI要求文件名的情況下跳過。
Workbook book = excel.Workbooks.Open(filename);
Worksheet sheet = (Worksheet) book.Worksheets.get_Item(1);
// write stuff in cells
book.SaveAs(filename);
book.Close(false);
我怎樣才能使excel嘗試保存文件,然后無論如何都關閉?
(在我的應用程序中,沒有丟失的數據,以后仍然可以將其寫入excel文件中)
看起來像這樣回答了問題,請在選擇保存或跳過之前檢查文件是否正在使用中。
protected virtual bool IsFileLocked(FileInfo file)
{
FileStream stream = null;
try
{
stream = file.Open(FileMode.Open, FileAccess.ReadWrite, FileShare.None);
}
catch (IOException)
{
//the file is unavailable because it is:
//still being written to
//or being processed by another thread
//or does not exist (has already been processed)
return true;
}
finally
{
if (stream != null)
stream.Close();
}
//file is not locked
return false;
}
要檢查文件是否存在,可以使用
if (File.Exists(filename)){
// if the file exists
book.Save();
}
else{
//if the file doesnt exist
book.SaveAs(filename);
}
如果我為必須更新的一個文件設置了共享選項,則可能會解決所有問題。 這樣多個用戶可以同時更新文件:菜單→其他→...
private static void saveAndClose(Workbook book, string filename) { try { File.Delete(filename); } catch { } if (!File.Exists(filename)) book.SaveAs(filename); book.Close(false); }
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.