2008-11-04 15 views
10

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

<%--ASP.NET Declarative--%> 
<asp:FileUpload ID="FileUpload1" runat="server" /> 
<asp:Button ID="Button1" runat="server" Text="Send File" OnClick="Button1_Click" /> 

// C# Code-Behind 
protected void Button1_Click(object sender, EventArgs e) { 
    var postedFile = FileUpload1.PostedFile; 

    // ... Read file in memory and put in format to send to stored procedure ... 

} 

क्या कोई इस से मेरी सहायता कर सकता है? मैं किसी के विचार की सराहना करता हूं।

THX,
gabe

उत्तर

2

FileUpload1 का प्रयोग करें। FileContent स्ट्रीम। मुझे लगता है कि आपकी एक्सेल लाइब्रेरी सीधे धाराओं को संभाल सकती है।

1

एक्सेल के COM पुस्तकालय फ़ाइल से किसी अन्य स्रोत से लोडिंग फ़ाइल का समर्थन नहीं करते हैं। लेकिन वहां कई तृतीय-पक्ष घटक मौजूद हैं, जो आपको एक्सेल फ़ाइलों को पढ़ने/लिखने की अनुमति देते हैं।

अन्यथा आप [MS-XLS]: Excel Binary File Format (.xls) Structure Specification पर वें एक्सएलएस फ़ाइल प्रारूप के लिए एक प्रलेखन देख सकते हैं।

या आप शेयरपॉइंट सर्वर जैसे कार्यालय फ़ाइलों की प्रसंस्करण के उसी तरीके का उपयोग कर सकते हैं। Microsoft.Office.Excel.Server.WebServices Namespace देखें।

+0

XLS/बीआईएफएफ प्रारूप हालांकि स्मृति से लोड करने के लिए संभव हो सकता है लगते हैं, लेकिन नहीं:

http://www.codeplex.com/ExcelDataReader

यहाँ एक कोड नमूना है:

यहाँ लिंक है एक्सेल उदाहरण दिया गया लेकिन उपयोगकर्ता के लिए नए आवेदन को चलाने के लिए। इसे आईएसटीओरेज में लोड करके, फिर ओलेलोड और फिर IOleObject.DoVerb –

0

यह कुछ है जो मैं हाल ही में खेल रहा हूं।

चेक इस पोस्ट: Write an excel workbook to a memory stream .NET

यह कार्लोस एग्विलार Mares, जो आप XML के रूप में एक्सेल कार्यपुस्तिका के साथ काम करने देता है द्वारा एक महान पुस्तकालय के लिए अंक।

ExcelXMLWriter

आप एक्सेल सर्वर (जो थोड़े एमएस लाइसेंस आप वेब पर इस तक पहुँच रहे हैं वैसे भी रूप में टूट रहा है) पर स्थापित की आवश्यकता नहीं है।

आप एक धारा का उपयोग कर Workbook.Load(stream)

0

आप अपने उपयोगकर्ताओं को एक सीएसवी बजाय फ़ाइल अपलोड मिल सकता है के रूप में Excel कार्यपुस्तिका लोड कर सकते हैं? एक सादा पाठ फ़ाइल से निपटना बहुत आसान होगा। मेरे पास पहले एक समान समस्या थी और मैंने उपयोगकर्ताओं से पूछा और वे ठीक थे, मुझे बहुत सारे काम बचाए।

शुभकामनाएं।

+0

संख्या का उपयोग करके किया जाता है, यह संभव नहीं है। ग्राहक के पास पहले से परिभाषित स्प्रेडशीट है जिसका मुझे उपयोग करना चाहिए। – gabe

8

मैं इस ExcelDataReader कहा जाता है करने के लिए Codeplex पर एक बड़ा हल्के खुला स्रोत एपीआई पाया।

यह एक्सेल फ़ाइल की इनपुट स्ट्रीम को System.Data.DataSet ऑब्जेक्ट (शायद बीआईएफएफ चश्मे का उपयोग करके पार्सिंग) में बदल सकता है।कुछ में

<%--ASP.NET Declarative--%> 
<asp:FileUpload ID="FileUpload1" runat="server" /> 
<asp:Button ID="Button1" runat="server" Text="Send File" OnClick="Button1_Click" /> 
<asp:GridView ID="GridView1" runat="server" /> 

// C# Code-Behind 
protected void Button1_Click(object sender, EventArgs e) { 
    // the ExcelDataReader takes a System.IO.Stream object 
    var excelReader = new ExcelDataReader(FileUpload1.FileContent); 
    FileUpload1.FileContent.Close(); 

    DataSet wb = excelReader.WorkbookData; 
    // get the first worksheet of the workbook 
    DataTable dt = excelReader.WorkbookData.Tables[0]; 

    GridView1.DataSource = dt.AsDataView(); 
    GridView1.DataBind(); 
} 
+1

वह एपीआई ExcelDataReader निर्यात नहीं करता है। ऐसा लगता है कि यह पुराना हो गया है। –

+0

@MatthewJamesDavis बस 'ExcelReaderFactory' से फैक्टरी विधियों का उपयोग करें – aggsol

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