| [reply] |
My favourite is HTML::TokeParser::Simple, where you get a token (tag, piece of text, comment...) at a time, like you read a text file one line at a time; and each token is an object, which eases unified access. For example, $token->as_is returns the original token's text, whatever kind of token it is.
| [reply] [d/l] |
Cheers my good man. I'll let you know how it goes.
MonkPaul
| [reply] |
MonkPaul, judging by the other replies in this thread, I think you morphed a previous post of yours (asking about HTML parsers) into another. :-)
The short answer to the new question is Spreadsheet::WriteExcel.
| [reply] [d/l] |
To convert a tab-delimited text file into Excel, you simply open it in excel, you don't need no stinkin' perl.
update the word stinkin' is a joke, no offence meant :-) ... cf. Treasure of the Sierra Madre
update2 yes, of course perl can be brought into the mix, and modules like Spreadsheet::WriteExcel and DBD::Excel can be useful for that.
MonkPaul PLEASE stop changing your node. This website is intended to be a permanent record to help others with questions. Never erase a node's content, rather use update as I have. Think about other people coming to the site - they want to be able to read a node and see the responses in a way that answers questions. If you start a new question, start a new node. If you modify your question, update it, don't erase it and start over. | [reply] |
| [reply] |
Sure, I assume the OP knows that and is asking in PM because he has a big raft of these files to convert and wants to do it programmatically. It's no fun to convert 500 tab-delimited files by opening them from within Excel, even if one uses the "lazy-evaluation" model.
| [reply] |
The point i was trying to make was that the user shouldnt have to leave the web page environment, but should only have to choose which file they want to view the data of.
The user doesnt want to see any of the actual raw data, but merely an overall graph to display the data on the screen in a graphical format that can easily be understood.
** not meaning to be arsey about it :)****
I may be a bit stupid but can you tell me of a way that i can loop through all the column headings in the file (say writing them to the screen), i.e. stored in an array, then for each row do the same. Currently i have the following code, although i know it doesnt work. I was thinking of a hash table for the column and value but im new to this perl game. The problem i have is to recognise the number of columns there are and loop through each row upto and including the last column, then go to the next line and start again. My brain is wrecked at this stage. Im normally a java programmer and cant seem to see a way forward....HELP!.
# read from a file and extract the contents into an Excel file
sub write_to_Excel()
{
use Spreadsheet::WriteExcel;
my @columnNames;
my @rowValues;
my $count = 0;
my $row = 0;
my $fileArray = "F:/User_Interface/dbStuff/ArrayExpress.txt";
open( INFILE, "<$fileArray") or
die "Cannot open the file";
print("Searching File...");
foreach $line ( <INFILE> )
{
if( $line =~ /^Name/ )
{
@columnNames = split(/\t/, $line);
}
else
{
@rowValues = split(/\t/, $line);
}
}
# Create a new workbook and save a file called example.xls
# and add a worksheet called Summary to that.
my $workbook = Spreadsheet::WriteExcel->new("ArrayExpress.xls");
my $worksheet = $workbook->add_worksheet(`Summary`);
# Set text bold, red, underlined for values
# designated as high
# my $high_val = $workbook->add_format();
# $high_val->set_bold();
# $high_val->set_color(`red`);
# $high_val->set_underline();
###### not sure how to loop through array to put rows across then do
+wn and same with cols
$worksheet->write($row,$count,$element);
foreach $element(@columnNames)
{
$count++;
$worksheet->write($row,$count,$element);
}
foreach my $element(@rowValues)
{
$worksheet->write($row,$count,$element);
$count++;
$row++;
}
}
Sorry about the mess with the node changing. Again im new to this.
MonkPaul.
| [reply] [d/l] |
Although XML::DT is a XML tool, it uses libxml2 and XML::LibXML which support HTML. XML::DT has a very simple syntax and might be what you want.
| [reply] |