2011-12-13 5 views
13

पर अपाचे पीओआई पोर्ट करने का प्रयास कर रहा है मैं एंड्रॉइड (निजी) ऐप में इसका उपयोग करने के लिए poi-3.8.jar का हल्का संस्करण ढूंढ रहा हूं। मुझे किसी कारण से एपीके में पूरे 1.7 एमबी जार फिट करने में सक्षम नहीं लगता है (और वैसे भी ऐसा करना गलत होगा) और चूंकि मैं केवल डॉक्टर -> एचटीएमएल और एक्सएलएस की तलाश में हूं -> एचटीएमएल कार्यक्षमता, मुझे पूरा यकीन नहीं है कि मुझे पूरी जार फ़ाइल चाहिए।एंड्रॉइड

मैंने पीजी/एचडब्ल्यूपीएफ/कनवर्टर में org.apache.poi.hwpf.converter.WordToHtmlExtracter.java निकालने के तरीके को समझने का प्रयास करने में कुछ घंटे बिताए हैं, लेकिन ऐसा लगता है कि यह कई अन्य सामानों का उपयोग कर रहा है। यहां तक ​​कि अगर यह वास्तव में मुझे आश्चर्य नहीं करता है, तो भी मैं सोच रहा था कि शायद यहां कोई व्यक्ति यह जान सके कि जार छोटे बनाने के लिए मैं कौन से पैकेज से छुटकारा पा सकता हूं। मुझे इस पर अधिक समय बिताने में खुशी होगी, जब तक कि कोई यहां मुझे बताता है कि यह समय बर्बाद नहीं है और दस्तावेज़ों को एचटीएमएल फाइलों में कनवर्ट करने के लिए स्रोतों में सबकुछ जरूरी है।

मुझे कुछ भी प्रदर्शित करने की ज़रूरत नहीं है, मुझे बस "सरल" डॉक्टर को HTML (और यदि संभव हो तो HTML से xls) की आवश्यकता है। मुझे पीडीएफ, पावरपॉइंट, आउटलुक या जो भी कुछ भी संबंधित नहीं है।

मैं जो कुछ भी मैं

चीयर्स

उत्तर

7

खैर मैं मैं क्या यहाँ के लिए पूछ रहा था के सबसे अधिक है करने में सक्षम था पता लगाने के साझा करने के लिए खुशी होगी। वह जार फाइलों को आयात कर रहा है। मेरे पास कम से कम 2 प्रकार की समस्याएं थीं: - ग्रहण पर पर्याप्त रैम नहीं है जो मेरे वर्गों को अधिकांश समय दुर्घटनाग्रस्त कर देता है (Xclx और xms मानों को Eclipse.ini में समायोजित करके तय किया गया है) - प्रत्येक DEX फ़ाइल के लिए 64k विधि सीमा चीजों को जटिल बना दिया। मुझे सभी आवश्यक पीओआई जारों को कई डीईएक्स फाइलों में विभाजित करना पड़ा। (मैंने एंड्रॉइड ब्लॉग से ट्यूटोरियल का पालन करके ऐसा किया: http://android-developers.blogspot.com/2011/07/custom-class-loading-in-dalvik.html)

मेरे प्रश्न का असली जवाब यह है: "हाँ आपको जार में सब कुछ चाहिए"। मैंने इसे मूल "गैर खुली एक्सएमएल" फ़ाइलों के लिए काम किया है। मेरा ऐप एचटीएमएल में काफी अच्छा रूपांतरण करता है, और यह भी तेज़ है।

एक तरफ ध्यान दें, मैं भी "खुली एक्सएमएल" फाइलों के साथ एक ही काम करने की कोशिश कर रहा था, और यह बहुत जटिल है। मेरी छोटी परियोजना ऐसा नहीं करती है जो इसे करना है, मुझे XMLBeans क्लास को प्रारंभ करते समय कुछ अजीब अपवाद मिला है।

12-19 12:07:10.790: W/dalvikvm(13385): Exception 
Ljava/lang/RuntimeException; thrown while initializing 
Lorg/apache/xmlbeans/impl/regex/SchemaRegularExpression; 
12-19 12:07:10.790: W/dalvikvm(13385): Exception 
Ljava/lang/ExceptionInInitializerError; thrown while initializing 
Lorg/apache/xmlbeans/impl/schema/BuiltinSchemaTypeSystem; 
12-19 12:07:10.790: D/dalvikvm(13385): Method.invoke() on bad class 
Lorg/apache/xmlbeans/impl/schema/BuiltinSchemaTypeSystem; failed 
12-19 12:07:10.790: W/dalvikvm(13385): Exception 
Ljava/lang/ExceptionInInitializerError; thrown while initializing 
Lorg/apache/xmlbeans/XmlBeans; 
12-19 12:07:10.790: W/System.err(13385): 
java.lang.reflect.InvocationTargetException 
12-19 12:07:10.790: W/System.err(13385): at 
java.lang.reflect.Method.invokeNative(Native Method) 
12-19 12:07:10.790: W/System.err(13385): at 
java.lang.reflect.Method.invoke(Method.java:491) 
12-19 12:07:10.790: W/System.err(13385): at 
t.fze.TestOfficeAndroidActivity.onCreate(TestOfficeAndroidActivity.java:55) 
12-19 12:07:10.790: W/System.err(13385): at 
android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1048) 
12-19 12:07:10.790: W/System.err(13385): at 
android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1712) 
12-19 12:07:10.790: W/System.err(13385): at 
android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1764) 
12-19 12:07:10.790: W/System.err(13385): at 
android.app.ActivityThread.access$1500(ActivityThread.java:122) 
12-19 12:07:10.790: W/System.err(13385): at 
android.app.ActivityThread$H.handleMessage(ActivityThread.java:1002) 
12-19 12:07:10.790: W/System.err(13385): at 
android.os.Handler.dispatchMessage(Handler.java:99) 
12-19 12:07:10.790: W/System.err(13385): at 
android.os.Looper.loop(Looper.java:132) 
12-19 12:07:10.790: W/System.err(13385): at 
android.app.ActivityThread.main(ActivityThread.java:4025) 
12-19 12:07:10.790: W/System.err(13385): at 
java.lang.reflect.Method.invokeNative(Native Method) 
12-19 12:07:10.790: W/System.err(13385): at 
java.lang.reflect.Method.invoke(Method.java:491) 
12-19 12:07:10.790: W/System.err(13385): at 
com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:841) 
12-19 12:07:10.790: W/System.err(13385): at 
com.android.internal.os.ZygoteInit.main(ZygoteInit.java:599) 
12-19 12:07:10.790: W/System.err(13385): at 
dalvik.system.NativeStart.main(Native Method) 
12-19 12:07:10.790: W/System.err(13385): Caused by: 
org.apache.poi.POIXMLException: 
java.lang.reflect.InvocationTargetException 
12-19 12:07:10.790: W/System.err(13385): at 
org.apache.poi.xssf.usermodel.XSSFFactory.createDocumentPart(XSSFFactory.java:62) 
12-19 12:07:10.790: W/System.err(13385): at 
org.apache.poi.POIXMLDocumentPart.read(POIXMLDocumentPart.java:414) 
12-19 12:07:10.790: W/System.err(13385): at 
org.apache.poi.POIXMLDocument.load(POIXMLDocument.java:155) 
12-19 12:07:10.790: W/System.err(13385): at 
org.apache.poi.xssf.usermodel.XSSFWorkbook.<init>(XSSFWorkbook.java:174) 
12-19 12:07:10.790: W/System.err(13385): at 
org.apache.poi.ss.usermodel.WorkbookFactory.create(WorkbookFactory.java:63) 
12-19 12:07:10.790: W/System.err(13385): at 
org.apache.poi.ss.examples.html.ToHtml.create(ToHtml.java:139) 
12-19 12:07:10.790: W/System.err(13385): at 
org.apache.poi.ss.examples.html.ToHtml.create(ToHtml.java:123) 
12-19 12:07:10.790: W/System.err(13385): ... 16 more 
12-19 12:07:10.790: W/System.err(13385): Caused by: 
java.lang.reflect.InvocationTargetException 
12-19 12:07:10.790: W/System.err(13385): at 
java.lang.reflect.Constructor.constructNative(Native Method) 
12-19 12:07:10.790: W/System.err(13385): at 
java.lang.reflect.Constructor.newInstance(Constructor.java:416) 
12-19 12:07:10.800: W/System.err(13385): at 
org.apache.poi.xssf.usermodel.XSSFFactory.createDocumentPart(XSSFFactory.java:60) 
12-19 12:07:10.800: W/System.err(13385): ... 22 more 
12-19 12:07:10.800: W/System.err(13385): Caused by: 
java.lang.ExceptionInInitializerError 
12-19 12:07:10.800: W/System.err(13385): at 
org.openxmlformats.schemas.drawingml.x2006.main.ThemeDocument$Factory.parse(ThemeDocument.java:71) 
12-19 12:07:10.800: W/System.err(13385): at 
org.apache.poi.xssf.model.ThemesTable.<init>(ThemesTable.java:38) 
12-19 12:07:10.800: W/System.err(13385): ... 25 more 
12-19 12:07:10.800: W/System.err(13385): Caused by: 
java.lang.ExceptionInInitializerError 
12-19 12:07:10.800: W/System.err(13385): at 
java.lang.reflect.Method.invokeNative(Native Method) 
12-19 12:07:10.800: W/System.err(13385): at 
java.lang.reflect.Method.invoke(Method.java:491) 
12-19 12:07:10.800: W/System.err(13385): at 
org.apache.xmlbeans.XmlBeans.getNoType(XmlBeans.java:856) 
12-19 12:07:10.800: W/System.err(13385): at 
org.apache.xmlbeans.XmlBeans.<clinit>(XmlBeans.java:881) 
12-19 12:07:10.800: W/System.err(13385): ... 27 more 
12-19 12:07:10.800: W/System.err(13385): Caused by: 
java.lang.ExceptionInInitializerError 
12-19 12:07:10.800: W/System.err(13385): at 
org.apache.xmlbeans.impl.schema.BuiltinSchemaTypeSystem.fillInType(BuiltinSchemaTypeSystem.java:1025) 
12-19 12:07:10.800: W/System.err(13385): at 
org.apache.xmlbeans.impl.schema.BuiltinSchemaTypeSystem.<clinit>(BuiltinSchemaTypeSystem.java:223) 
12-19 12:07:10.800: W/System.err(13385): ... 31 more 
12-19 12:07:10.800: W/System.err(13385): Caused by: 
java.lang.RuntimeException: Installation Problem??? Couldn't load 
messages: Can't find resource for bundle 
'org.apache.xmlbeans.impl.regex.message_fr_FR', key '' 
12-19 12:07:10.800: W/System.err(13385): at 
org.apache.xmlbeans.impl.regex.RegexParser.setLocale(RegexParser.java:88) 
12-19 12:07:10.800: W/System.err(13385): at 
org.apache.xmlbeans.impl.regex.RegexParser.<init>(RegexParser.java:78) 
12-19 12:07:10.800: W/System.err(13385): at 
org.apache.xmlbeans.impl.regex.ParserForXMLSchema.<init>(ParserForXMLSchema.java:28) 
12-19 12:07:10.800: W/System.err(13385): at 
org.apache.xmlbeans.impl.regex.RegularExpression.setPattern(RegularExpression.java:2996) 
12-19 12:07:10.800: W/System.err(13385): at 
org.apache.xmlbeans.impl.regex.RegularExpression.setPattern(RegularExpression.java:3009) 
12-19 12:07:10.800: W/System.err(13385): at 
org.apache.xmlbeans.impl.regex.RegularExpression.<init>(RegularExpression.java:2975) 
12-19 12:07:10.800: W/System.err(13385): at 
org.apache.xmlbeans.impl.regex.SchemaRegularExpression.<init>(SchemaRegularExpression.java:27) 
12-19 12:07:10.800: W/System.err(13385): at 
org.apache.xmlbeans.impl.regex.SchemaRegularExpression.<init>(SchemaRegularExpression.java:23) 
12-19 12:07:10.800: W/System.err(13385): at 
org.apache.xmlbeans.impl.regex.SchemaRegularExpression$1.<init>(SchemaRegularExpression.java:44) 
12-19 12:07:10.800: W/System.err(13385): at 
org.apache.xmlbeans.impl.regex.SchemaRegularExpression.buildKnownPatternMap(SchemaRegularExpression.java:43) 
12-19 12:07:10.800: W/System.err(13385): at 
org.apache.xmlbeans.impl.regex.SchemaRegularExpression.<clinit>(SchemaRegularExpression.java:38) 
12-19 12:07:10.800: W/System.err(13385): ... 33 more 
+2

क्या आप अब तक एंड्रॉइड के लिए अपना कोड साझा करने में रुचि रखते हैं? ऐसा लगता है कि एंड्रॉइड पर एमएस ऑफिस दस्तावेज पढ़ने में सक्षम होने में रुचि की कमी है - मैं आपकी पोस्ट के अलावा कुछ भी उपयोगी नहीं ढूंढ पाया। एक साइड-नोट पर बहुत सारे बंद स्रोत एपीआई हैं और मैंने अलग-अलग कंपनियों से संपर्क करने की कोशिश की है, लेकिन उनमें से किसी ने भी मेरे किसी भी प्रश्न का उत्तर नहीं दिया है और मैं हैंडलिंग के लिए एक सभ्य (या वास्तव में कोई भी) समाधान खोजने की कोशिश कर रहा हूं एंड्रॉइड पर दस्तावेज़; \ जैसा कि आपको केवल विभिन्न प्रारूपों के लिए एचटीएमएल में रूपांतरण की आवश्यकता है क्योंकि मुझे केवल दस्तावेज़ों को प्रदर्शित करने में दिलचस्पी है। – Darwind

+2

हाय डार्विंड, हाँ आप मेरे कोड को देख सकते हैं। असल में, मैं इसे पीओआई के साथ काम (yay) बनाने में सक्षम था। मैंने अपनी कंपनी के ब्लॉग पर एक पूर्ण स्पष्टीकरण पोस्ट किया (क्षमा करें, यह फ्रेंच में है!) भाग 1 (एंड्रॉयड पर सरल POI उपयोग): http://blog.oxiane.com/2011/12/30/visualiser-un-fichier-office-doc-xls-ppt-sous-android/ भाग 2 (Office 2007+ दस्तावेज़ों के लिए) http://blog.oxiane.com/2011/12/30/visualiser-un-fichier-office-doc-xls-ppt%E2%80%A6-sous-android-23/ या आप मेरे कोड को देख सकते हैं (काफी गन्दा, लेकिन यह काम करता है!) Https://code.google.com/p/display-msoffice-docs-android-with-apache-poi/ –

+0

पर साइड नोट, मैंने पाया (जल्द ही इस पीओआई पोर्ट के साथ खुद को मारने के बाद) कि Office 2007+ दस्तावेज़ों को संभालने के लिए एक बहुत आसान समाधान है। मैंने इस lib का उपयोग किया: http://openxmldeveloper.org/blog/b/openxmldeveloper/archive/2006/11/21/openxmlandjava.aspx यह "बाइनरी" कार्यालय दस्तावेज़ों (शब्द 2003 ...) के साथ काम नहीं करता है ताकि आप अभी भी उन फ़ाइलों के लिए पीओआई लागू करने की आवश्यकता है, लेकिन पीओआई पोर्टिंग करने से यह आसान तरीका है। वास्तव में यह मुझे काम करने के लिए केवल कुछ ही tweaks ले लिया। मैंने अभी तक अपना कोड साझा नहीं किया है। –

3

साथ ही आप ProGuard shrinking इस्तेमाल कर सकते हैं: यहाँ मेरी ट्रेस (कुरूपता के लिए खेद है) है। यह कई बार एपीके के आकार को कम कर सकता है।

+0

विचार के लिए धन्यवाद, लेकिन दुर्भाग्य से यह एपीके का आकार नहीं था जिसे मैं कम करने की कोशिश कर रहा था, लेकिन application.v में विधियों की संख्या यदि आप उपरोक्त सभी टिप्पणियां पढ़ते हैं, तो मेरी मुख्य समस्या यह थी कि 64k से अधिक थे जार फ़ाइल में विधियां जिन्हें मैं आयात करना चाहता था। और 64k विधियां बहुत अधिक हैं, यह मुझे एपीके संकलित नहीं करने देगी! –

2

मैं हाल ही में एक XSSF की "बंदरगाह" (अगर मैं ऐसा कह सकते हैं) बना लिया है: https://stackoverflow.com/a/25564538/2155217

यह पढ़ने और XLSX फ़ाइलें लिखने के लिए काफी है। अगर फ़ाइल में ड्राइंग या चार्ट जैसी कुछ अतिरिक्त सुविधाएं हैं, तो ठीक से काम नहीं कर सकता है।

+0

हाय एंड्रयू! अद्भुत काम आपने किया था। मैंने अभी तक इसका परीक्षण नहीं किया है, लेकिन ऐसा लगता है कि आप "रन> देखें कि क्या असफल> उस फ़ाइल को जार में जोड़ें" का उपयोग करें। यह तब तक मेरा पहला तरीका था, जब तक मुझे एहसास हुआ कि अधिकांश जार वास्तव में जरूरी था। क्या आप अधिक सटीक पहचानने में सक्षम हैं कि कौन सी विशेषताएं गायब हैं? –

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

  • कोई संबंधित समस्या नहीं^_^