2008-09-30 11 views
14

मैं एक्सेल 2007 दस्तावेज़ प्रोग्रामेटिक रूप से बनाने की कोशिश कर रहा हूं।प्रोग्रामेटिक रूप से एक्सेल 2007 शीट्स बनाने

  • मैन्युअल एक्सएमएल बनाने, के रूप में ExcelPackage तरह this post
  • में उल्लिखित किसी तृतीय पक्ष लाइब्रेरी का उपयोग करना: अब, वहाँ दो तरीके मैंने पाया है।

वर्तमान में, मैं ExcelPackage का उपयोग करता हूं, जिसमें कुछ वास्तव में गंभीर दोष और समस्याएं हैं। चूंकि मुझे अत्यधिक जटिल एक्सेल शीट्स बनाने की आवश्यकता नहीं है (सबसे जटिल "बात यह है कि मुझे स्पष्ट रूप से सेल प्रकार को संख्यात्मक या पाठ पर सेट करने की आवश्यकता है), मैं अगले विकल्प 1 की ओर देख रहा हूं, लेकिन मुझे आश्चर्य है कि क्या हैं Excel 2007 शीट्स जेनरेट करने के लिए कोई अन्य अच्छा और समर्थित तरीका? बोनस पॉइंट्स अगर उन्हें हार्डड्राइव में सहेजने के बिना बनाया जा सकता है, यानी उन्हें एक स्ट्रीम में उत्पन्न और सीधे आउटपुट करें।

.net 3.0 लक्ष्य यहाँ है, कोई 3.5 अच्छाई :(

संपादित करें:। धन्यवाद अब तक एक्सएमएल एसडीके वास्तव में 3.5 केवल है, लेकिन रूस Roulet ... ईआरएम ... COM इंटरॉप है जब भी संभव हो तो मैं कुछ भी टालना चाहता हूं, खासकर जब से एक्सेल 2007 में कुछ जटिल है लेकिन दस्तावेज़ प्रारूप बनाने के लिए अभी भी आसान है। मुझे पोस्ट किए गए विभिन्न लिंक और संकेतों पर एक नज़र डालेंगे।

उत्तर

9

आप Office Open XML SDK का उपयोग करने का प्रयास कर सकते हैं यह आपको MemoryStream का उपयोग करके स्मृति में Excel फ़ाइलों को बनाने की अनुमति देगा और हाथ से सभी एक्सएमएल उत्पन्न करने से कहीं अधिक आसानी से।

जैसा कि ब्रायन किम ने बताया, एसडीके के संस्करण 2.0 की आवश्यकता है .NET 3.5 जो आपने कहा था उपलब्ध नहीं था। एसडीके के Version 1 भी उपलब्ध हैं जो .NET 3.0 का समर्थन करता है। यह पूर्ण नहीं है, लेकिन कम से कम दस्तावेज़ के XML भागों और उनके बीच संबंधों को प्रबंधित करने में आपकी सहायता करेगा।

+0

ऐसा लगता है कि .NET 3.5 इसके लिए आवश्यक है। –

+0

अच्छा बिंदु, सही। –

0

मैं टेबल और पैराग्राफ के लिए सही एक्सएमएल बनाने के लिए कार्यों की लाइब्रेरी का उपयोग करके Wordprocessing Markup दस्तावेज़ उत्पन्न करता था।

मैंने फिर प्रतिक्रिया शब्द के लिए एमआईएमई प्रकार को एक शब्द दस्तावेज़ के रूप में बदल दिया और क्लाइंट को प्रतिक्रिया के रूप में एक्सएमएल भेजा। यह या तो अपने ब्राउज़र में खुलता है या फ़ाइल के रूप में सहेजता है।

वहाँ Excel के लिए 2003 में ऐसे ही एसडीके होना प्रतीत नहीं होता है, यद्यपि वहाँ है MS Open XML SDK

0

एक्सेल COM ऑब्जेक्ट के माध्यम से बहुत स्क्रिप्ट है। मैंने कोशिश नहीं की है, लेकिन यह एक ठोस समाधान होना चाहिए, हालांकि न तो तेज या हल्का।

जो भी आप कर रहे हैं, जांचें कि आपका समाधान यूनिकोड का समर्थन करता है या नहीं। मैंने एक्सएलएस फाइलों (यानी, पूर्व 2007 फाइलें) लिखने के लिए मौजूदा समाधानों का उपयोग करके कुछ गंभीर समस्याओं में भाग लिया है।

+2

सर्वर पर एक्सेल का COM स्वचालन सुंदर flaky हो सकता है। माइक्रोसॉफ्ट केवल डेस्कटॉप पर इसका समर्थन करता है। –

0

आप एक्सेल डॉक्स को प्रोग्रामेटिक रूप से उत्पन्न करने के लिए प्राथमिक इंटरऑप असेंबली (Office API) का उपयोग कर सकते हैं - मैं उनका उपयोग करके अत्यधिक जटिल नहीं करना चाहता, लेकिन ऐसा लगता है कि यह आपकी आवश्यकता नहीं है।

इस दृष्टिकोण को स्मृति में दस्तावेज़ों को उत्पन्न करने के लिए भी काम करना चाहिए।

यहां कुछ संसाधन हैं:

+0

पीआईए से बचें ... हां, यह दर्द में .ss और प्राथमिक इंटरऑप गधे के बीच संयोग नहीं है। मेरा विश्वास करो, मैं अभी भी चोट लग सकता हूं। –

0

हर कोड-स्नॉब जिंदा VBScript से नफरत करता है, लेकिन यह आसान है और यह काम करता है:

Set myxlapp = CreateObject("Excel.Application") 
Set mywb = myxlapp.Workbooks.Add 
myxlapp.Visible = true 

रखो कि एक पाठ फ़ाइल में, अंत में एक ".vbs" संलग्न करें और प्रतिष्ठा।

1

मैं बीकिममेल की पोस्ट पर टिप्पणी करने जा रहा था, लेकिन जाहिर है कि मेरे पास अभी तक पर्याप्त शांत बिंदु नहीं हैं।

यदि एक्सेल पहले से ही खुला है, तो आप उस परेशान "personal.xls पहले से ही खुले" संदेश प्राप्त कर सकते हैं। मैं ऐप को पहले प्राप्त करने का प्रयास करता हूं। अगर यह काम नहीं है, तो यह बनाएँ:

On Error Resume Next 
Set myxlApp = GetObject(, "Excel.Application") 
If Err.Number <> 0 Then 
    Err.Clear 
    Set myxlApp = CreateObject("Excel.Application") 
    If Err.Number <> 0 Then 
    ' return False, show message, etc. 
    End If 
End If 
2

मैं सिर्फ HTML तालिका, एक्सेल द्वारा खोला जा सकता जो पैदा कर रहा हूँ:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" 
     "http://www.w3.org/TR/html4/strict.dtd"> 

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
<title>Wnioski</title> 
<style type="text/css"> 
<!-- 
br { mso-data-placement: same-cell; } 
td { mso-number-format: \@; mso-displayed-decimal-separator: "."; } 
--> 
</style> 

<table> 
<tr style="height:15.0pt"> 
<td style="mso-number-format: general">474</td> 
<td>474</td> 

<tr> 
<td>data2</td> 
<td>data3</td> 

<tr> 
<td style="mso-number-format: &quot;yyyy-mm-dd&quot;">2008-10-01</td> 
<td style="mso-number-format: standard">0.00</td> 

<tr> 
<td style="mso-number-format: general">line1<br>line2<br>line3</td> 
<td></td> 

</table> 

यह वर्ड में धारावाहिक पत्र के लिए डेटा स्रोत के रूप में भी अच्छी तरह से काम , ओपनऑफिस कैल्क इत्यादि के साथ काम करता है और यह उत्पन्न करने के लिए मृत सरल है।

+0

ऐसा लगता है कि आप उस उदाहरण में कुछ टैग खो सकते हैं ... ;-) –

+0

आवश्यक नहीं है। इस कोड को पर पेस्ट करें http://validator.w3.org/#validate_by_input तो अपने लिए देखें। भी आवश्यक नहीं है लेकिन एक्सेल उनके साथ बेहतर काम करता है। – Tometzky

1

मैंने में ओपन एक्सएमएल (xlsx) का अधिकांश काम किया और यह एक मामूली अभ्यास से बहुत दूर है। मैं Office Open Open XML SDK या किसी अन्य तृतीय पक्ष लाइब्रेरी जैसे स्प्रेडशीटगियर या हमारे प्रतिस्पर्धियों में से एक (केवल Google "स्प्रेडशीट गियर" का उपयोग करने की सलाह देता हूं ताकि यह देखने के लिए कि हमारे प्रतियोगियों कौन हैं)। .NET 2.0, .NET 3.0 और .NET 3.5 के साथ

  • काम करता है:

    नेट के लिए SpreadsheetGear अपनी जरूरतों को पूरा करने के लिए प्रतीत होता है।

  • IWorkbook.SaveToStream के साथ स्ट्रीम में लिखने या IWorkbook.SaveToMemory के साथ बाइट सरणी में लिखने का समर्थन करता है।
  • Excel 97-2003 (xls) कार्यपुस्तिका का समर्थन करता है जो आपको अगली चीज़ होने की संभावना है यदि आपको बहुत से उपयोगकर्ताओं का समर्थन करने की आवश्यकता है।

आप एक निःशुल्क, पूरी तरह से कार्यात्मक मूल्यांकन here डाउनलोड कर सकते हैं।

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