java excel results

Συζητήσεις για την Java

Συντονιστές: WebDev Moderators, Super-Moderators

Απάντηση
helensyk
Δημοσιεύσεις: 2
Εγγραφή: 30 Ιούλ 2012 16:20

java excel results

Δημοσίευση από helensyk » 31 Ιούλ 2012 10:46

Τρέχω ένα simulation και θέλω να αποθηκεύσω τα αποτελέσματα μου σε ένα αρχείο excel.

Έχω την main class και μία κλάση όπου τυπώνονται τα αποτελέσματα, μπορώ να τα τυπώσω, αλλά δεν μπορώ να τα αποθηκεύσω σε ένα αρχείο και με τις προσπάθειες που έκανα κατάφερα να αποθηκεύω στο αρχείο μόνο τα τελευταία αποτελέσματα και παραμέτρους που χρησιμοποιήθηκαν, το οποίο δεν είναι καθόλου ικανοποιητικό.

Ποια κομμάτια του κώδικα πρέπει να μπουν στην main και ποια στην άλλη κλάση;

This is the code for excel:

import java.io.*;
import java.io.FileNotFoundException.*;
import java.util.Date;
import jxl.*;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFCell;
import java.util.Arrays.*;

public class CreateExcelFile {
public static void main(String[]args){

try{

String filename="...Results.xls" ;
HSSFWorkbook wb=new HSSFWorkbook();
HSSFSheet sheet = wb.createSheet("BTObserver");
HSSFRow row;
HSSFCell cell;

for (short rowIndex = 0; rowIndex < 1000; rowIndex++) {

row.createCell(1).setCellValue(((BitTorrent)(Netwo rk.get(i).getProtocol(pid))).getThisNodeID());
row.createCell(2).setCellValue("(" + peerStatus + ")");
row.createCell(3).setCellValue(numberOfCompletedPi eces);
row.createCell(4).setCellValue(((BitTorrent)(Netwo rk.get(i).getProtocol(pid))).nPiecesDown);
row.createCell(5).setCellValue(((BitTorrent)(Network.get(i).getProtocol(pid))).nPiecesUp);
row.createCell(6).setCellValue(CommonState.getTime ());

}

FileOutputStream fileOut = new FileOutputStream(filename);
wb.write(fileOut);
fileOut.close();
System.out.println("Your excel file has been generated!");
}catch(Exception ex){
System.err.println(ex);
}
}
}

Άβαταρ μέλους
nikosdimos
Δημοσιεύσεις: 70
Εγγραφή: 22 Σεπ 2007 17:07

java excel results

Δημοσίευση από nikosdimos » 31 Ιούλ 2012 14:35

Το Excel μπορεί να διαβάσει αρχεία .csv τα οποία είναι πιο εύκολο να φτιαχτούν μιας και είναι απλά αρχεία κειμένου.

Η μορφή ενός .csv είναι η παρακάτω:

Κώδικας: Επιλογή όλων

Year,Make,Model,Description,Price
1997,Ford,E350,"ac, abs, moon",3000.00
1999,Chevy,"Venture ""Extended Edition""","",4900.00
1999,Chevy,"Venture ""Extended Edition, Very Large""","",5000.00
1996,Jeep,Grand Cherokee,"MUST SELL!
air, moon roof, loaded",4799.00
Από:http://en.wikipedia.org/wiki/Comma-separated_values

Για φτιάξεις ένα τέτοιο αρχείο όπως θες εσύ θα μπορούσες να χρησιμοποιήσεις το παράδειγμα αυτό.

helensyk
Δημοσιεύσεις: 2
Εγγραφή: 30 Ιούλ 2012 16:20

java excel results

Δημοσίευση από helensyk » 31 Ιούλ 2012 14:49

Αυτό σε συνδιασμό με κάτι που μου είπε ένας φίλος θα βοηθήσει πολύ, κάνω τώρα τις δοκιμές μου, αλλά ήθελα να ρωτήσω πώς γράφεται κάθε φορά η επόμενη σειρά;

Συγκεκριμένα θέλω να προσαρμόσω τον παραπάνω κώδικα έτσι ώστε όσα τυπώνονται παρακάτω να αποθηκεύονται σε επόμενη σειρά του αρχείου excel.

Κώδικας: Επιλογή όλων

package peersim.bittorrent;

import peersim.config.*;
import peersim.core.*;
import peersim.util.*;

/**
 * This &#123;@link Control&#125; provides a way to keep track of some
 * parameters of the BitTorrent network.
 */
 public class BTObserver implements Control &#123;
      
	/**
	 *	The protocol to operate on.
	 *	@config
	 */
	private static final String PAR_PROT="protocol";
	
	/**
	 *	Protocol identifier, obtained from config property
	 */
	private final int pid;
	
	/**
	 *	The basic constructor that reads the configuration file.
	 *	@param prefix the configuration prefix for this class
	 */
	public BTObserver&#40;String prefix&#41; &#123;           
		pid = Configuration.getPid&#40;prefix + "." + PAR_PROT&#41;;
	&#125;
	
	/**
	 * Prints information about the BitTorrent network
	 * and the number of leechers and seeders.
	 * Please refer to the code comments for more details.
	 * @return always false
	 */
	public boolean execute&#40;&#41; &#123;
		IncrementalFreq nodeStatusStats = new IncrementalFreq&#40;&#41;;
		IncrementalStats neighborStats = new IncrementalStats&#40;&#41;;
		
		int numberOfNodes = Network.size&#40;&#41;;
		int numberOfCompletedPieces = 0;
		
		// cycles from 1, since the node 0 is the tracker
		for &#40;int i=1; i<numberOfNodes; ++i&#41; &#123;
			
			// stats on number of leechers and seeders in the network
			// and consequently also on number of completed files in the network
			nodeStatusStats.add&#40;&#40;&#40;BitTorrent&#41;&#40;Network.get&#40;i&#41;.getProtocol&#40;pid&#41;&#41;&#41;.getPeerStatus&#40;&#41;&#41;;
			
			// stats on number of neighbors per peer
			neighborStats.add&#40;&#40;&#40;BitTorrent&#41;&#40;Network.get&#40;i&#41;.getProtocol&#40;pid&#41;&#41;&#41;.getNNodes&#40;&#41;&#41;;
		&#125;
		
		// number of the pieces of the file, equal for every node, here 1 is chosen,
		// since 1 is the first "normal" node &#40;0 is the tracker&#41;
		int numberOfPieces = &#40;&#40;BitTorrent&#41;&#40;Network.get&#40;1&#41;.getProtocol&#40;pid&#41;&#41;&#41;.nPieces;
		
		for &#40;int i=1; i<numberOfNodes; ++i&#41; &#123;
			numberOfCompletedPieces = 0;
			
			// discovers the status of the current peer &#40;leecher or seeder&#41;
			int ps = &#40;&#40;BitTorrent&#41;&#40;Network.get&#40;i&#41;.getProtocol&#40;pid&#41;&#41;&#41;.getPeerStatus&#40;&#41;;
			String peerStatus;
			if &#40;ps==0&#41; &#123;
				peerStatus = "L"; //leecher
			&#125;
			else &#123;
				peerStatus = "S"; //seeder
			&#125;
			
			
			if &#40;Network.get&#40;i&#41;!=null&#41; &#123;
				
				// counts the number of completed pieces for the i-th node
				for &#40;int j=0; j<numberOfPieces; j++&#41; &#123;
					if &#40; &#40;&#40;BitTorrent&#41;&#40;Network.get&#40;i&#41;.getProtocol&#40;pid&#41;&#41;&#41;.getFileStatus&#40;&#41;&#91;j&#93; == 16&#41; &#123;
						numberOfCompletedPieces++;
					&#125;
				&#125;
				
				/*
				 * Put here the output lines of the Observer. An example is provided with
				 * basic information and stats.
				 * CommonState.getTime&#40;&#41; is used to print out time references
				 * &#40;useful for graph plotting&#41;.
				 */
				
				System.out.println&#40;"OBS&#58; node " + &#40;&#40;BitTorrent&#41;&#40;Network.get&#40;i&#41;.getProtocol&#40;pid&#41;&#41;&#41;.getThisNodeID&#40;&#41; + "&#40;" + peerStatus + "&#41;" + "\t pieces completed&#58; " + numberOfCompletedPieces + "\t \t down&#58; " + &#40;&#40;BitTorrent&#41;&#40;Network.get&#40;i&#41;.getProtocol&#40;pid&#41;&#41;&#41;.nPiecesDown + "\t up&#58; " + &#40;&#40;BitTorrent&#41;&#40;Network.get&#40;i&#41;.getProtocol&#40;pid&#41;&#41;&#41;.nPiecesUp + " time&#58; " + CommonState.getTime&#40;&#41;&#41;;
				//System.out.println&#40;"&#91;OBS&#93; t " + CommonState.getTime&#40;&#41; + "\t pc " + numberOfCompletedPieces + "\t n " + &#40;&#40;BitTorrent&#41;&#40;Network.get&#40;i&#41;.getProtocol&#40;pid&#41;&#41;&#41;.getThisNodeID&#40;&#41;&#41;;
                                &#125;                       
			else &#123;
				//System.out.println&#40;"&#91;OBS&#93; t " + CommonState.getTime&#40;&#41; + "\t pc " + "0" + "\t n " + "0"&#41;;
			&#125;
		
		&#125;
		
		// prints the frequency of 0 &#40;leechers&#41; and 1 &#40;seeders&#41;
		nodeStatusStats.printAll&#40;System.out&#41;;
		
		// prints the average number of neighbors per peer
		System.out.println&#40;"Avg number of neighbors per peer&#58; " + neighborStats.getAverage&#40;&#41;&#41;;

                return false;
	&#125;
&#125;

Απάντηση

Επιστροφή στο “Java”

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 0 επισκέπτες