दिलचस्प पोस्ट
क्या उद्देश्य-सी में -इन विधि निजी बनाने के लिए संभव है? पायथन और फ्लास्क का उपयोग कर अनुरोध चर के मान कैसे प्राप्त करें आईफ्रेम jQuery में एक तत्व का चयन करना सी, सी ++, जावा, और सी में प्री एंड पोस्ट इंचार्ज ऑपरेटर व्यवहार सी # बनाएँ / संशोधित करें / .xlsx फ़ाइलें पढ़ें LAN नेटवर्क पर किसी अन्य कंप्यूटर से स्थानीयहोस्ट (एक्सएमपीपी) तक पहुंच – कैसे करें? यह जांचने के लिए Regex कि वैध यूआरएल जो .jpg, .png, या .gif में समाप्त होता है एंड्रॉइड रेखीय रंग संसाधन के साथ लेआउट: मैं क्या कर रहा हूँ गलत? एचटीटीपीएसर्वेटरेक्स्ट से जेएसओएन ऑब्जेक्ट को प्राप्त करना jQuery स्थगित और वादों – .then () बनाम .Done () आईफोन आईवर नामकरण सम्मेलन ओरेकल डाटाबेस लिंक – MySQL समतुल्य? IE8 में अर्ध-पारदर्शी पीएनजी बग़ी लुप्त होकर कैसे हल / हल करें? जावा प्रतीक्षा करें और सूचित करें: अवैध मॉनिटरस्टेट अपवाद बाहरी जेएस स्क्रिप्ट गतिशील रूप से कोने 2 में लोड करें

जावा के लिए सीएसवी एपीआई

क्या कोई एक सरल एपीआई सुझा सकता है जो मुझे एक सीएसवी इनपुट फाइल पढ़ना, कुछ सरल बदलाव करने, और फिर इसे लिखने का उपयोग करने की अनुमति देगा।

एक त्वरित गूगल पाया गया है http://flatpack.sourceforge.net/ जो आशाजनक लग रहा है

मैं सिर्फ यह जांचना चाहता हूं कि इससे पहले कि मैं इस एपीआई से जुड़ी हुई हूं, इससे पहले कि वे दूसरों का उपयोग कर रहे हैं।

वेब के समाधान से एकत्रित समाधान "जावा के लिए सीएसवी एपीआई"

अपाचे कॉमन्स सीएसवी

अपाचे से एक को देखें

मैंने ओपन सीएसवी को अतीत में इस्तेमाल किया है

import au.com.bytecode.opencsv.CSVReader; 

  स्ट्रिंग फ़ाइलनाम = "data.csv";
 CSVReader रीडर = नया CSVReader (नया FileReader (fileName)); 

// अगर पहली पंक्ति शीर्षलेख है
स्ट्रिंग [] हैडर = रीडर। रीडेड ();
// रीडर पर पुनरावृत्त.रेड-अगला जब तक यह रिक्त न लौटता है
स्ट्रिंग [] लाइन = रीडर। रीडेड ();

दूसरे प्रश्न के उत्तर में कुछ अन्य विकल्प थे

अद्यतन: इस उत्तर में कोड सुपर सीएसवी 1.52 के लिए है। सुपर सीएसवी 2.4.0 के लिए अद्यतन कोड उदाहरण परियोजना वेबसाइट पर पाया जा सकता है: http://super-csv.github.io/super-csv/index.html


सुपरसीएसवी परियोजना सीधे सीएसवी कोशिकाओं के पार्सिंग और संरचित हेरफेर का समर्थन करती है। http://super-csv.github.io/super-csv/examples_reading.html से आप उदाहरण प्राप्त करेंगे

एक वर्ग दिया

 public class UserBean { String username, password, street, town; int zip; public String getPassword() { return password; } public String getStreet() { return street; } public String getTown() { return town; } public String getUsername() { return username; } public int getZip() { return zip; } public void setPassword(String password) { this.password = password; } public void setStreet(String street) { this.street = street; } public void setTown(String town) { this.town = town; } public void setUsername(String username) { this.username = username; } public void setZip(int zip) { this.zip = zip; } } 

और आपके पास हेडर के साथ एक सीएसवी फाइल है। चलो निम्नलिखित सामग्री मान लीजिए

 username, password, date, zip, town Klaus, qwexyKiks, 17/1/2007, 1111, New York Oufu, bobilop, 10/10/2007, 4555, New York 

फिर आप UserBean का एक उदाहरण बना सकते हैं और उसे निम्न कोड के साथ फ़ाइल की दूसरी पंक्ति से मानों के साथ पॉप्युलेट कर सकते हैं

 class ReadingObjects { public static void main(String[] args) throws Exception{ ICsvBeanReader inFile = new CsvBeanReader(new FileReader("foo.csv"), CsvPreference.EXCEL_PREFERENCE); try { final String[] header = inFile.getCSVHeader(true); UserBean user; while( (user = inFile.read(UserBean.class, header, processors)) != null) { System.out.println(user.getZip()); } } finally { inFile.close(); } } } 

निम्न "हेरफेर विनिर्देश" का उपयोग कर

 final CellProcessor[] processors = new CellProcessor[] { new Unique(new StrMinMax(5, 20)), new StrMinMax(8, 35), new ParseDate("dd/MM/yyyy"), new Optional(new ParseInt()), null }; 

सीएसवी प्रारूप का विवरण पढ़ना मुझे महसूस करता है कि 3 पार्टी लाइब्रेरी का इस्तेमाल करना यह लिखने के बजाय कम सिरदर्द होगा:

विकिपीडिया 10 या कुछ ज्ञात पुस्तकालयों को सूचीबद्ध करता है:

मैंने किसी तरह की जांच सूची का उपयोग करके सूचीबद्ध लिब लिबरसेज़ की तुलना की है। ओपन सीएसवी ने निम्नलिखित परिणामों के साथ मेरे लिए एक विजेता ( वाईएमएमवी) निकला:

 + maven + maven - release version // had some cryptic issues at _Hudson_ with snapshot references => prefer to be on a safe side + code examples + open source // as in "can hack myself if needed" + understandable javadoc // as opposed to eg javadocs of _genjava gj-csv_ + compact API // YAGNI (note *flatpack* seems to have much richer API than OpenCSV) - reference to specification used // I really like it when people can explain what they're doing - reference to _RFC 4180_ support // would qualify as simplest form of specification to me - releases changelog // absence is quite a pity, given how simple it'd be to get with maven-changes-plugin // _flatpack_, for comparison, has quite helpful changelog + bug tracking + active // as in "can submit a bug and expect a fixed release soon" + positive feedback // Recommended By 51 users at sourceforge (as of now) 

हम जावा सीएसवी का उपयोग करते हैं , यह बहुत अच्छी तरह से काम करता है

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

आप csvreader api का उपयोग कर सकते हैं और निम्न स्थान से डाउनलोड कर सकते हैं:

http://sourceforge.net/projects/javacsv/files/JavaCsv/JavaCsv%202.1/javacsv2.1.zip/download

या

http://sourceforge.net/projects/javacsv/

निम्न कोड का प्रयोग करें:

 / ************ For Reading ***************/ import java.io.FileNotFoundException; import java.io.IOException; import com.csvreader.CsvReader; public class CsvReaderExample { public static void main(String[] args) { try { CsvReader products = new CsvReader("products.csv"); products.readHeaders(); while (products.readRecord()) { String productID = products.get("ProductID"); String productName = products.get("ProductName"); String supplierID = products.get("SupplierID"); String categoryID = products.get("CategoryID"); String quantityPerUnit = products.get("QuantityPerUnit"); String unitPrice = products.get("UnitPrice"); String unitsInStock = products.get("UnitsInStock"); String unitsOnOrder = products.get("UnitsOnOrder"); String reorderLevel = products.get("ReorderLevel"); String discontinued = products.get("Discontinued"); // perform program logic here System.out.println(productID + ":" + productName); } products.close(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } } 

सीएसवी फ़ाइल में लिखें / जोड़ें

कोड:

 /************* For Writing ***************************/ import java.io.File; import java.io.FileWriter; import java.io.IOException; import com.csvreader.CsvWriter; public class CsvWriterAppendExample { public static void main(String[] args) { String outputFile = "users.csv"; // before we open the file check to see if it already exists boolean alreadyExists = new File(outputFile).exists(); try { // use FileWriter constructor that specifies open for appending CsvWriter csvOutput = new CsvWriter(new FileWriter(outputFile, true), ','); // if the file didn't already exist then we need to write out the header line if (!alreadyExists) { csvOutput.write("id"); csvOutput.write("name"); csvOutput.endRecord(); } // else assume that the file already has the correct header line // write out a few records csvOutput.write("1"); csvOutput.write("Bruce"); csvOutput.endRecord(); csvOutput.write("2"); csvOutput.write("John"); csvOutput.endRecord(); csvOutput.close(); } catch (IOException e) { e.printStackTrace(); } } } 

सीएसवी / एक्सेल उपयोगिता भी है यह मानता है कि सभी थियो डेटा सारणी-समान है और Iterators से डेटा वितरित करता है।

सीएसवी प्रारूप स्ट्रिंगटोकनाइज़र के लिए काफी आसान लगता है लेकिन यह और अधिक जटिल हो सकता है। यहां जर्मनी में एक अर्धविराम एक सीमांकक के रूप में उपयोग किया जाता है और सीमांकक वाले कोशिकाओं को बचने की आवश्यकता होती है। आप स्ट्रिंगटोकनाइज़र के साथ आसानी से संभाल नहीं जा रहे हैं

मैं http://sourceforge.net/projects/javacsv के लिए जाना होगा

यदि आप एक्सेल से सीएसवी पढ़ने का इरादा रखते हैं, तो कुछ रोचक कोने के मामलों में हैं मैं उन सभी को याद नहीं कर सकता, लेकिन अपाचे कॉमन्स सीएसवी इसे सही तरीके से निपटने में सक्षम नहीं था (उदाहरण के लिए, यूआरएल)।

उद्धरण और अल्पविराम के साथ एक्सेल आउटपुट का परीक्षण करना सुनिश्चित करें और सभी स्थान पर स्लैश करें।

उपयोग

स्ट्रिंग [] myValues ​​= String.split (",");