OLEDB

2008-09-12 14 views
8

के साथ एक्सेल फ़ाइल में लिखना क्या कोई जानता है कि सी # में OLEDB के माध्यम से एक्सेल फ़ाइल (.xls) को कैसे लिखना है? मैं कर रहा हूँ निम्नलिखित:OLEDB

OleDbCommand dbCmd = new OleDbCommand("CREATE TABLE [test$] (...)", connection); 
    dbCmd.CommandTimeout = mTimeout; 
    results = dbCmd.ExecuteNonQuery(); 

लेकिन मैं एक OleDbException संदेश के साथ फेंक दिया हो।

"तालिका 'परीक्षण $' के डिजाइन संशोधित नहीं कर सकते यह में, रीड-ओनली है डेटाबेस।"

मेरे कनेक्शन ठीक लग रहा है और मैं डेटा ठीक चयन कर सकते हैं, लेकिन मैं एक्सेल फ़ाइल में डेटा सम्मिलित करने के लिए, किसी को पता है मैं कैसे पढ़ पाने OLEDB के माध्यम से एक्सेल फ़ाइल तक पहुँच/लिखने नहीं कर पा रहे?

+0

क्या कार्यपुस्तिका में पहले से ही परीक्षण $ नामक शीट है? – Kearns

उत्तर

8

आप अपने कनेक्शन स्ट्रिंग को ReadOnly=False; जोड़ने की जरूरत है

Provider=Microsoft.Jet.OLEDB.4.0;Data Source=fifa_ng_db.xls;Mode=ReadWrite;ReadOnly=false;Extended Properties=\"Excel 8.0;HDR=Yes;IMEX=1\"; 
+7

को सही नहीं करना चाहिए - केवल पढ़ने योग्य विशेषता का उपयोग करके त्रुटि "System.Data.OleDb.OleDbException: इंस्टॉल करने योग्य ISAM नहीं मिल सका।" यह IMEX = 0 है जो फ़ाइल को केवल पढ़ने से रोकता है। मेरे लिए काम करने वाली स्ट्रिंग (सी #) है: @ "प्रदाता = माइक्रोसॉफ्ट.जेट.ओएलडीबी 4.0; डेटा स्रोत = {0}; मोड = रीडवाइट; विस्तारित गुण =" "एक्सेल 8.0; एचडीआर = हाँ; मैक्सस्केनरो = 0; इ एक्स = 0 "", "; – rohancragg

+0

इस उत्तर और टिप्पणी के लिए धन्यवाद। मेरी समस्या हल हो गई !!! – user279521

+2

यह आवश्यक है कि 'प्रदाता = माइक्रोसॉफ्ट.जेट.ओएलडीबी.4.0; डेटा स्रोत = सी: \ डॉक्स \ टेस्ट.एक्सएल; मोड = रीडवाइट; विस्तारित गुण = "" एक्सेल 8.0; एचडीआर = हां "" मैक्सस्कैनरो और आईएमईएक्स कुछ हद तक रजिस्ट्री सेटिंग्स पर निर्भर करता है और अक्सर इसकी आवश्यकता नहीं होती है। – Fionnuala

1

कुछ सवाल:

  • करता है उपयोगकर्ता हैं जो आपके ऐप कार्यान्वित (आप?) फाइल करने के लिए लिखने की अनुमति है?
  • क्या फ़ाइल केवल पढ़ने के लिए है?
  • आपकी कनेक्शन स्ट्रिंग क्या है?

यदि आप एएसपी का उपयोग कर रहे हैं, तो आपको IUSER_ * उपयोगकर्ता को this example में जोड़ना होगा।

0
  • मैं अपने आवेदन के लिए एक्सेल फ़ाइल में लिखने के लिए अनुमतियों की जांच कैसे करूं (मैं एक्सेल 2007 का उपयोग कर रहा हूं)?
  • फ़ाइल केवल पढ़ने या संरक्षित नहीं है (मेरे ज्ञान के लिए)।
  • मेरे कनेक्शन स्ट्रिंग है:

"प्रदाता = Microsoft.Jet.OLEDB.4.0; डेटा स्रोत = fifa_ng_db.xls; मोड = ReadWrite; विस्तारित गुण = \" एक्सेल 8.0; एचडीआर = हाँ, इ एक्स = 1 \ ""

+0

उस पर राइट-क्लिक करके और सुरक्षा या अनुमति टैब पर क्लिक करके अनुमतियां जांचें। क्या आप एक्सेल फ़ाइल बंद करते हैं जब आप उससे कनेक्ट होते हैं? –

+0

आपको IMEX = 0 की बजाय – rohancragg

0

माइकल हैरेन के जवाब के आगे। यदि खाता एएसपी.NET एप्लिकेशन में चल रहा है (यह आईआईएस एप्लिकेशन पूल में निर्दिष्ट है) तो एक्सएलएस फ़ाइल में संशोधित अनुमति देने के लिए आपको नेटवर्क्स सेवा की संभावना होगी। पता लगाने के लिए वास्तव में क्या खाते को अपने कोड के रूप में चल रहा है, आप एक सरल कर सकते हैं:

Response.Write(Environment.UserDomainName + "\\" + Environment.UserName); 
14

मैं भी और जवाब के लिए देख रहा था लेकिन Zorantula के समाधान मेरे लिए काम नहीं किया। मैं http://www.cnblogs.com/zwwon/archive/2009/01/09/1372262.html

पर समाधान मैं ReadOnly=false पैरामीटर हटा दिया और IMEX=1 बढ़ाया संपत्ति पाया।

IMEX=1 संपत्ति आयात मोड में कार्यपुस्तिका खोलती है, इसलिए संरचना-संशोधित आदेश (जैसे CREATE TABLE या DROP TABLE) काम नहीं करते हैं।

मेरे कार्यरत कनेक्शन स्ट्रिंग है:

"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=workbook.xls;Mode=ReadWrite;Extended Properties=\"Excel 8.0;HDR=Yes;\";" 
+0

आईएमईएक्स = 1 चाल है !!! धन्यवाद। –

0

मैं ASP.NET के तहत चल रहा था, और आई दोनों "डिजाइन संशोधित नहीं कर सकते ..." और "ISAM पता नहीं लगा सकता ..." त्रुटि संदेश।

मैंने पाया कि मैं करने के लिए आवश्यक:

एक) निम्न कनेक्शन स्ट्रिंग का उपयोग करें:

Provider=Microsoft.Jet.OLEDB.4.0;Mode=ReadWrite;Extended Properties='Excel 8.0;HDR=Yes;';Data Source=" + {path to file};

नोट मैं भी IMEX=1 साथ और कनेक्शन स्ट्रिंग में ReadOnly=false विशेषताओं के साथ मुद्दों था ।

बी) फ़ाइल को लिखे जाने वाले फ़ोल्डर में पूर्ण अनुमति दें। आम तौर पर, एएसपी.NET नेटवर्क्स सेवा खाते के अंतर्गत चलता है, और उसके पास पहले से ही अनुमतियां थीं। हालांकि, ओलेडीबी कोड अप्रबंधित है, इसलिए इसे किसी अन्य सुरक्षा संदर्भ के तहत चलाना चाहिए। (मैं वर्तमान में कौन सा खाता जानने के लिए बहुत आलसी हूं, इसलिए मैंने अभी भी हर किसी का उपयोग किया।)

2

मुझे भी यही समस्या थी। केवल विस्तारित संपत्ति IMEX=1 हटा दें। इससे आपकी समस्या हल हो जाएगी। आपकी तालिका आपकी एक्सेल फ़ाइल में बनाई जाएगी ...

संबंधित मुद्दे