Προς το περιεχόμενο

Προτεινόμενες αναρτήσεις

Δημοσ.

Έχω φτιάξει ένα app που πέρνει μία τιμή απο ένα excel και το κανει paste σε ένα αλλο online tool.

 

 

 

 Με το παρακατω πέρνω την τιμή:

 

workbook = Workbook.getWorkbook(App.file);

Sheet sheet = workbook.getSheet(1);

 

Cell cell1 = sheet.getCell(4, 27);

System.out.println(cell1.getContents() );
 
Με το παρακάτω κάνω paste:
psess.GetPS().SendKeys((cell1).getContents(), 8, 18);
 
Μερικες φορές η τιμή ειναι με δεκαδικά.
Επειδή δεν μπορώ να επέμβω στο excel, πώς μπορώ να κάνω το tool  να αγνοήση τα δεκαδικά?
 
Ελπίζω να είμαι κατανοητός , αν όχι συγνώμη είμαι καινούργιος στον κόσμο του Java.
  • Moderators
Δημοσ.

Μπορείς να αποθηκεύσεις την τιμή που θες σε Integer. Υπάρχουν επίσης και floor/ceiling μέθοδοι αν θες στρογγυλοποιήσεις.

  • Like 2
Δημοσ.

Άν θα ήθελα να τα αγνοησω τελείως?

πχ: το 2.3 να το κανο 2 ?

Κάτι βρήκα για round? Άλλα δεν ξέρω πώς να το κάνω.

Δημοσ.

Μα αυτό σου λέω, αν αποθηκεύσεις την τιμή που διαβάζεις σε Integer δε θα έχεις δεκαδικά.

 

 

Συγνώμη επειδή αυτό δεν ξέρω να το κάνω μήπως μπορείσ να μου δώσεις κάποιο tutorial?

Έψαξα στο google άλλα χάθηκα είναι η αλήθεια......

  • Moderators
Δημοσ.

Όπως βλέπω εδώ η getContents σου επιστρέφει string. Αντί να κάνεις print κατ' ευθείαν τα contents του κελιού, μπορείς να κάνεις κάτι τέτοιο:

int CellValue = Integer.parseInt(cell1.getContents());

Έτσι θα αποθηκεύσεις το ακέραιο μέρος στο CellValue για να το χρησιμοποιήσεις μετά όπως θες.

 

http://www.tutorialspoint.com/java/number_parseint.htm

Δημοσ.

Οκ,

δεν είδα ότι ήταν java...

Έριξα μια ματιά. Αν χρησιμοποιήσει το Parse μπορεί να φάει exception (το οποίο μπορεί να μην επιθυμεί), αλλά δείτε εδώ. Κάποιος δίνει κώδικα για μετατροπή str σε int.

http://stackoverflow.com/questions/5585779/converting-string-to-int-in-java

 

 

 

public static int strToInt( String str ){
    int i = 0;
    int num = 0;
    boolean isNeg = false;

    //Check for negative sign; if it's there, set the isNeg flag
    if (str.charAt(0) == '-') {
        isNeg = true;
        i = 1;
    }

    //Process each character of the string;
    while( i < str.length()) {
        num *= 10;
        num += str.charAt(i++) - '0'; //Minus the ASCII code of '0' to get the value of the charAt(i++).
    }

    if (isNeg)
        num = -num;
    return num;
}

 

 

Δημοσ.

αυτό δεν τρώει exception δηλαδή

δεν χρειάζεται να ανακαλύψει τον τροχό ξανά, γι αυτόν το λόγο υπάρχει η parseInt

  • Moderators
Δημοσ.

https://docs.oracle.com/javase/7/docs/api/java/lang/String.html

 

"A String represents a string in the UTF-16 format"

 

Ο κώδικας που έβαλες δουλεύει με ASCII. Δεν ξέρω (και για να είμαι ειλικρινής δε με νοιάζει κιόλας) αν έτσι θα δουλεύει, αλλά για ποιο λόγο να φτιάξει δική του συνάρτηση γι' αυτό;

Δημοσ.

Kercyn σε όλα τα συστήματα το ίδιο νούμερο έχει το μηδέν το 48! Το comment στη γραμμή που λέει για ASCII είναι βλακεία! Το παραβλέπουμε!

Δημοσ. (επεξεργασμένο)

Τελικά έλυσα το πρόβλημα με το παρακάτω:

 

Cell cell4 = sheet.getCell(3, 7);

     String number3 = cell4.getContents().split("\\.")[0].replaceAll("\\,","");     
     System.out.println(number3);
 
Cell cell5 = sheet.getCell(3, 7);
     String number3 = cell5.getContents().split("\\.")[0].replaceAll("\\,","");     
     System.out.println(number4);
Επεξ/σία από militarist

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
  • Δημιουργία νέου...