c# - मैं एक फ़ाइल को कैसे खोलूं जो किसी अन्य एप्लिकेशन में खोला गया है




2 Answers

फ़ाइल खोलते समय आप FileShare.ReadWrite को पारित करने का प्रयास कर सकते हैं:

using (var stream = new FileStream(
       @"d:\myfile.xls", 
       FileMode.Open, 
       FileAccess.Read, 
       FileShare.ReadWrite))
{

}

मेरे पास एक Winforms एप्लिकेशन है जो विश्लेषण के लिए एक्सेल फ़ाइलों में लोड होता है। वर्तमान में, एक्सेल फ़ाइल खोलने के लिए फ़ाइल एक्सेल में पहले से ही खुली नहीं होनी चाहिए अन्यथा फ़ाइल में कोशिश करने और लोड होने पर फ़ाइलियोएक्सप्शन फेंक दिया जाता है।

मैं जो करना चाहता हूं वह है कि मेरे एप्लिकेशन को फ़ाइल में पढ़ने की इजाजत दी जाए, भले ही यह एक्सेल में खुली है, उपयोगकर्ता को वर्कशीट को बंद करने के लिए मजबूर करने के बजाय। ध्यान दें कि प्रश्न में आवेदन केवल फ़ाइल को पढ़ने की जरूरत है, इसे लिखने के लिए नहीं।

क्या यह संभव है?




.NET के लिए स्प्रेडशीट गियर कार्यपुस्तिकाओं को पढ़ सकता है जबकि Excel उन्हें खोलता है। यहां वह कोड है जिसका हम उपयोग करने के लिए उपयोग करते हैं (ध्यान दें कि हम एक्सेल या किसी अन्य ऐप को लिखने के बीच में लिखने के लिए खोलने के बाद पूरी फ़ाइल को लॉक करते हैं):

stream = new System.IO.FileStream(path,
    System.IO.FileMode.Open,
    System.IO.FileAccess.Read,
    System.IO.FileShare.ReadWrite,
    SG.CompoundDocumentIO.Storage.OpenBufferLength);
try
{
    stream.Lock(0, stream.Length);
}
catch
{
    // .NET 1.1 requires cast to IDisposable
    ((IDisposable)stream).Dispose();
    throw;
}

अस्वीकरण: मेरे पास स्प्रेडशीट गियर एलएलसी है




Related

c# excel file-io