Newsgroup: it.hobby.fai-da-te
Titolo: OT*10^9 aiuto informatico!

Vengo subito al dunque: vorrei produrre un file di testo facile da 
importare in OpenOffice calc (compatibile con excel) a partire da N 
files di testo con due colonne di dati di lunghezza costante (numeri con 
notazione esponenziale e punto come separatore decimale) e circa 200 
righe. Del primo file mi interessano entrambe le colonne, dei successivi 
solo la seconda. I files sono una ventina. Il problema ad usare 
direttamente il foglio elettronico è l'immane lavoro di copia e incolla 
di colonne e la ricerca della successione logica dei files. Che sappiate 
voi c'è in giro un programma che mi possa andare bene? In alternativa 
come fareste voi un programma simile? Io avevo pensato di creare un 
programma ad oggetto che crei un'istanza di un oggetto per ogni file, in 
questa istanza una lista concatenata contenente tutti i 200 valori della 
seconda colonna, poi chiamare un metodo dell'oggetto all'interno di un 
ciclo che scriva le 200 righe della tabella totale. Che dite? Ci vuole 
un camion di RAM?

 come fareste voi un programma simile? Io avevo pensato di creare un
io lo farei con delphi perche' mi e' piu' comodo, ma non la vedo cosi'  
complessa ... apri i files di testo e poi o scrivi direttamente un file  
nel formato che vuoi, oppure apri una ole a excel o oo
-- 
===============================================================
Alberto Rubinelli - A2 SISTEMI  Opera 8.50->
news.bbip.it
Via Costantino Perazzi 22 - 28100 NOVARA - ITALY
Tel 0321 640149  Fax 0321 391769 BBS 0321 392320
Mail: 
alb...@retrocomputing.net
  ICQ : 49872318
Skype : albertorubinelli
Visita il mio museo di computers: 
http://www.oldcomputers.it
---------------------------------------------------------------
Per favore, non scrivetemi in html, testo ascii a 7 bit
Non rispondo a chi mi scrive con indirizzo di reply alterato

 ha scritto nel messaggio 
news:ire6f.2423$65.7...@twister1.libero.it...

Senza scomodare un linguaggio ad oggetti un programmino in Basic
(anche quello per DOS) puo' fare al caso tuo.
Io cercherei di produrre dai file di testo un semplice file in formato .CSV
(e' sempro testo ma usando i separatori giusti)
Questo file viene aperto da Excel, e penso quindi anche da Calc,
ed incolonnato correttamente.
Non mi e' chiaro pero' cosa intendi con "ricerca della successione logica 
dei files".
questo e' uno Pseudo codice di "MASSIMA" la cui sintasssi non sara'
canonica ma dovrebbe rendere l'idea.
Sempre ovviamente se ho capito il problema.
Open file 1 in read
Open file TEMP in write
Do while end of file 1
Leggi riga file 1
Converti in CSV
Write riga in TEMP
EndWhile
Close file 1
Close file TEMP
Do While end of N files
Opne file n di N in read
Open file TEMP in write
Do while end of TEMP
Read riga TEMP
Read riga n
Append colonna  2 di n a riga di TEMP in formato CSV
endwhile
close temp
close n
incrementa n
endwhile
END

 (anche quello per DOS) puo' fare al caso tuo.
non scomoderei nemmeno il basic del dos. Si possono importare 
direttamente anche i files a recod di lunghezza fissa.
Con excel si puo' di sicuro, ma non vedo perche' calc non possa fare 
altrettanto
Adrino

 ha scritto nel messaggio 
news:mn.b2c67d5ab...@hotmail.com...

Se ho capito bene e' perche' lo deve fare molte volte e quindi
anche le semplici impostazioni che bisogna fare per l'importazione
diventano noiose.
Non so se una via possa essere una macro sempre se in Calc ci sono.

 nel formato che vuoi, oppure apri una ole a excel o oo
Che cos'è una ole? Mi sembra interessante... se riuscissi a riempire le 
righe di una file excel con un programmino esterno, sarei a cavallo.

 righe di una file excel con un programmino esterno, sarei a cavallo.
Beh, cerco di spiegartelo in due parole, visto che non so bene a che  
livello di conoscenza sei, percio' non cominciate a criticare  
imprecisioni/approssimazioni.
Ogni parte di windows e' ormai un oggetto. Quindi anche il foglio che hai  
aperto in excel lo e'
Con qualsiasi ambiente di sviluppo si puo' creare un "riferimento" a  
questo oggetto, o meglio, linkarlo, ed usarne le sue funzioni.
Percio' dal tuo programma , per scrivere in una cella di excel, farai  
qualcosa del genere :
oExcel.Foglio.Cells[1,1] := "testo, numero, quel che vuoi"
Ciao.Alberto.


 diventano noiose.
ok, se si trattasse di una quintalata di files, o se fosse un'attivita' 
ricorrente; altrimenti, per solo 20 files in 10 minuti si fa tutto.
Adriano

Scusate... mi sono espresso male. Sono 20 files per ogni dispositivo, 
per 40 dispositivi... fanno 800 files!

andre...@nospam-inwind.it
 wrote:

La tua e' una domanda complicata. Oltretutto vedi che in alcune risposta
fanno riferimento ad Excel.
Perche' non provi in:
free.it.comp.software.openoffice
ove conoscono tutti i trucchi di Calc. Ed oltretutto, nonostante sia un
free.it
 e' anche piuttosto frequentato.
Pekilan

Grazie.

 dispositivi... fanno 800 files!
ok, conviene automatizzare con un programmino ;-)
Adriano

Alla fine ce l'ho fatta. Per risparmiare tempo ho usato Java perché è 
l'unico linguaggio ad alto livello che so usare decentemente. Allego le 
due classi che ho usato per raggiungere lo scopo, se a qualcuno si 
presentasse un problema analogo.
---------------------------------------------------------------------------
Prima classe
---------------------------------------------------------------------------
import java.io.*;
import java.util.*;
public class tabella
{
public static void main (String[] args)
{
	try
	{
		BufferedReader lista = new BufferedReader (new FileReader ("files"));
		int nfiles = contaRighe.conta (lista);
		lista = new BufferedReader (new FileReader ("files"));
		String nomeFile = lista.readLine();
		BufferedReader colonna = new BufferedReader (new FileReader (nomeFile));
		int rows = contaRighe.conta (new BufferedReader (new FileReader 
(lista.readLine())));
		String [][] tabella = new String[rows][nfiles];	
		lista = new BufferedReader (new FileReader ("files"));
//		System.out.println (nfiles + " " + rows);
		String cella;
		String [] splitted;
		for (int x = 0; x < nfiles; x++)
		{
			colonna = new BufferedReader (new FileReader (lista.readLine()));
			for (int y = 0; y < rows; y++)
			{
				cella = colonna.readLine();
				splitted = cella.split("	");
				cella = splitted[1];
				tabella[y][x] = cella;	
			}
		}
		for (int x = 0; x < rows; x++)
		{
			for (int y = 0; y < nfiles; y++)
			{
				System.out.print (tabella[x][y] + "	");
			}
			System.out.print ("\n");
		}
	}
	catch (FileNotFoundException e)
	{
		System.out.println ("Me lo devi creare il file con la lista delle 
tabelle! E che cazzo!!!");
	}
	catch (IOException e) {}
}
}
---------------------------------------------------------------------------
Seconda classe
---------------------------------------------------------------------------
public class contaRighe
{
public static int conta (java.io.BufferedReader file) throws
java.io.IOException
{
	int numLines = 0;
	String line;
	do
	{
		line = file.readLine();
		if (line != null)
		{
			numLines++;
		}
	}
		while (line != null);
return numLines;
}
}

 tabelle! E che cazzo!!!");
Suggerirei una modifica :-)
System.out.println ("Me lo devi creare il file con la lista delle
tabelle! Perdiana!!!");
Tra parentesi, perdiana deriva da: "Per Diana Artemide cacciatrice !!!" :-)
Pekilan