View Full Version : butuh bantuan bikin program
gw dpt tugas bikin program yg bs baca data tabel dari text file untuk dibikin database...contoh datanya ada di attachment...
nah dimintanya datanya itu dipindahin ke tabel yang lebih teratur gitu (ada kolom dan barisnya ky excel gitu), trus dipisahin berdasarkan tanggal dan waktunya (yang ada di kanan atas tiap tabel)...
tu gimana caranya ya??
trus mending pake apa??visual c++??ato pake delphi??paling gampang pake apa ya??
mohon bantuannya ::maap::
Shaka_RDR
29-06-2006, 09:27 AM
wajib program yah ? sebenernya sih excel bisa meng-convert sendiri txt tersebut utk jadi tabel2.
klo mo program sih gw lebih menyarankan VB sih, tapi gw udah lupa cara akses excel lewat VB. mungkin ada yang bisa membantu mencerahkan.
aja_gile
30-06-2006, 11:55 AM
@1412
gue udah lihat datanya elu di txt file.......
kalu pakai delphi.... gue tdk begitu tahu...............
tapi kalu pakai VB atau VB.net gampang bangat..........
cuma gue saranin lebih baik data itu di export dulu ke exel lebih tdk ribet kodingnya
dari pada baca data ke txt. soalnya u mesti bikin logic buat baca space.... apa lagi
geu lihat tabel di txt u ada headernya lagi wah lebih rebet lagi codingnya.....
gimana cara nge-export ke excelnya??
soalnya itu buat kolom2nya pake spasi, jadi tiap barisnya itu cuma masuk 1 cell doank...kalo pake tab seh bisa...
kalo pake C++ gimana ya??
oia, nanya, kalo di C++, buat baca dari tiap baris gimana caranya ya??
nospacebar
30-06-2006, 06:50 PM
fread
http://www.cplusplus.com/ref/cstdio/fread.html
Sebelumnya fopen dulu
http://www.cplusplus.com/ref/cstdio/fopen.html
Shaka_RDR
04-07-2006, 09:14 AM
bisa pake fgets setau gw klo di C++.
klo fread setau gw sih bacanya per t_size dimana t_size nya kita tentuin deh. tapi tau juga, gw udah lama ga coding menggunakan borland C utk akses file :P
chephalonia
14-07-2006, 07:03 PM
sepertinya setiap data punya fixed length ... mau pake program apa aja sama gampangnya kok..
lady_donna24
16-07-2006, 03:00 AM
cuma mengerti Java, sorry...
bisa gue liat dulu contoh formatnya disini? posting aja.
kalo di Java mau rubah ke format microsoft bisa pake apache poi. sedangkan untuk membuka file txt itu bisa pake BufferedReader atau kelas FileReader lainnya. untuk dapetin isi dari tiap baris line bisa pake method readLine() dari bufferedReader.
sidhi
18-07-2006, 06:51 PM
ini sekedar saran, belum saya coba, karena kompi saya buat coding lg KO motherboardnya. hehehe... :P
Gini kalo dalma delphi, coba kamu bikin pake format typed file dan disimpan dalam file. txt. lalu kamu kemudian translatekan ke dalma .xls. gitchu kiranya... :)
amami234
18-07-2006, 11:27 PM
Gini kalo dalma delphi, coba kamu bikin pake format typed file dan disimpan dalam file. txt. lalu kamu kemudian translatekan ke dalma .xls. gitchu kiranya... :)
hmm kalo gitu sih mending langsung baca txt dan masuk ke database-nya..
kalo file txt nya itu diedit manual dulu boleh nggak?? misalnya tiap file dijadikan file terpisah, atau tanggal diberi kode khusus..?
amami234
18-07-2006, 11:32 PM
oh ya.. sama kamu bisa jelasin lebih detail nggak itu table tentang apaan..
juga mengenai kok ada kolom yang diinput 0 ada juga yang blank..
table data base yang akan dibuat terdiri dari berapa table? columnnya?
sidhi
19-07-2006, 04:28 AM
Gini, dalam delphi digunakan bahasa pascal. Kalo gak salah, buat tablenya cara itu seperti ini :
type table1;
colomnama : string,
colomalamat : string;
colomkota : string;
end;
dalam procedure untuk membuat / membuka type file itu, kalo gak salah pake fopen. kalo bingung tekan tombol ctrl+F1 untuk cari info tentang type file.
Kenapa saya sarankan pake type file, karena type file dapat dibuka pake notepad, dan data yang anda masukkan telah tersusun rapi.
Lalu untuk cara eksportnya ke excel, paling gampang, kamu liat aja dulu dari excel, lalu kamu save as sebagai unicode text file. (kalo gak salah unicode text file itu type file modelnya)
sidhi
19-07-2006, 04:31 AM
Sebenarnya excel sudah memfasilitasi hal tersebut dengan adanya menu data -> import external data, di situ bisa di lakukan import data dari text file untuk masuk ke cell excel.
Karena file mau masuk ke excel tentunya itu sebuah data kan, data tsb biasanya mempunyai delimeter tertentu, (yang temenku kasih sbg contoh termasuk tab delimeted).
Apabila delimeternya sudah jelas, maka gak ada kesusahan lagi untuk melakukan export data ke excel.
Jadi kalau mau membuat delimeter, saya sarankan pake type file, untuk leboh mudahnya. Gitcu.... ::hihi:: ::hihi:: ::hihi::
sidhi
19-07-2006, 04:38 AM
Ini hasil browsing saya, cuma dalam versi perl. Saya tidak bisa njelasin, karena kagak ngerti perl. Tapi setahu saya perl bahasanya mirip ama GCC. Jadi coba aja kalau mau... :P ::hihi:: ::hihi:: ::hihi::
::crow::
#!/usr/bin/perl -w
use strict;
use HTML::Parser 3.26 ();
use Spreadsheet::WriteExcel;
use Spreadsheet::WriteExcel::Utility;
# define variables:
my %inside;
my @colarray;
@colarray = (0) x 30;
my $inputfile = "";
my $outputfile = "";
my $maxcol = 0;
# Parse arguments
if(@ARGV < 4)
{
print "Usage: perl -w html2xls.pl -o <HTML File> -o <Excel File>\n";
exit(1);
}
foreach $a (@ARGV)
{
if ($a =~ /^-o/)
{
shift @ARGV;
$inputfile = $ARGV[0];
shift @ARGV;
shift @ARGV;
$outputfile = $ARGV[0];
}
else
{
last;
}
}
# Define variables
# Setup spreadsheet
my $workbook = Spreadsheet::WriteExcel->new($outputfile);
my $prevtext = "";
my $buffertext = "";
my $worksheet = $workbook->addworksheet();
$worksheet->hide_gridlines(2);
# Format1 = Bold text
my $format1 = $workbook->addformat();
$format1->set_bold(1);
$format1->set_color('black');
# Format2 = Title Text
my $format2 = $workbook->addformat();
$format2->set_bold(1);
$format2->set_underline;
$format2->set_color('blue');
$format2->set_size(16);
# Format3 = Title Text
my $format3 = $workbook->addformat();
$format3->set_bold(1);
$format3->set_color('blue');
$format3->set_size(14);
# Format4 = Background colour of green
#$format4 = $workbook->addformat();
#$format4->set_color('black');
#$format4->set_fg_color(42);
#$format4->set_pattern(1);
# Format 5 = Integer format
my $format5 = $workbook->addformat();
$format5->set_color('black');
$format5->set_num_format('0');
# Format 6 = Float format
my $format6 = $workbook->addformat();
$format6->set_color('black');
$format6->set_num_format('0.00');
# Format 7 = Date Format
my $format7 = $workbook->addformat();
$format7->set_color('black');
$format7->set_num_format('dd/mm/yy');
# Format 8 = Bold Integers
my $format8 = $workbook->addformat();
$format8->set_color('black');
$format8->set_bold(1);
$format8->set_num_format('0');
# Format 9 = Bold Float format
my $format9 = $workbook->addformat();
$format9->set_color('black');
$format9->set_bold(1);
$format9->set_num_format('0.00');
# Format 10 = Bold Date Format;
my $format10 = $workbook->addformat();
$format10->set_color('black');
$format10->set_bold(1);
$format10->set_num_format('dd/mm/yy');
# Format 11 - for horizontal lines
my $format11 = $workbook->addformat();
$format11->set_color('black');
$format11->set_bottom();
$format11->set_bottom_color('black');
# Format 12 = Date Format
my $format12 = $workbook->addformat();
$format12->set_color('black');
$format12->set_num_format('dd/mm/yyyy');
xl_parse_date_init("TZ=GMT","DateFormat=non-US");
my $intable = 0;
my $row = 0;
my $col = 0;
my $tdcheck = 1;
my $fieldtype = 0;
HTML::Parser->new(api_version => 3,
handlers=> [start => [\&tag, "tagname,'+1',attr"],
end=> [\&tag, "tagname, '-1'"],
text => [\&text, "dtext"],
],
marked_sections => 1,
)->parse_file($inputfile) || die "Can't open file: $!\n";;
# Attempt to auto-fit
my $i = 0;
my $j = 0;
for ($i = 0;$i<$maxcol;$i++)
{
$j += $colarray[$i];
$worksheet->set_column($i,$i,$colarray[$i]);
}
if($j > 100)
{
$worksheet->set_landscape();
}
else
{
$worksheet->set_portrait();
}
$worksheet->set_paper(9);
$worksheet->fit_to_pages(1, 0);
sub tag
{
my($tag, $num, $attr) = @_;
$inside{$tag} += $num;
if(@_ eq "table")
{
$intable++;
}
if(@_ eq "/table")
{
$intable--;
}
if($intable == 0)
{
$buffertext="";
}
if($tag eq "td")
{
if($tdcheck == 0)
{
$col++;
if( $col > $maxcol)
{
$maxcol = $col;
}
$tdcheck++;
}
else
{
$tdcheck--;
}
}
if($tag eq "br")
{
$row++;
$col=0;
}
if($tag eq "h1" && $num == -1 )
{
$row+=2;
$col=0;
}
if($tag eq "h2" && $num == -1 )
{
$row+=2;
$col=0;
}
if($tag eq "h3" && $num == -1 )
{
$row+=2;
$col=0;
}
if($tag eq "h4" && $num == -1 )
{
$row+=2;
$col=0;
}
if($tag eq "tr")
{
if($col >= 1)
{
$row++;
$col = 0;
}
}
if($tag eq "th")
{
if($col >= 1)
{
$row++;
$col = 0;
}
}
if($tag eq "hr")
{
$row++;
$col = 0;
# apply changes to column using format11
$worksheet->set_row($row, undef, $format11);
$row++;
}
if($tag eq "b")
{
return;
}
if($tag eq "td")
{
$prevtext = "";
if($attr){
$fieldtype = 0;
if(exists($attr->{style}))
{
if($attr->{style} eq "vnd.ms-excel.numberformat:@")
{
$fieldtype = 1;
}
if($attr->{style} eq "vnd.ms-excel.numberformat:0")
{
$fieldtype = 2;
}
if($attr->{style} eq "vnd.ms-excel.numberformat:0.00")
{
$fieldtype = 3;
}
if($attr->{style} eq "vnd.ms-excel.numberformat:dd/mm/yy")
{
$fieldtype = 4;
}
if($attr->{style} eq "vnd.ms-excel.numberformat:dd/mm/yyyy")
{
$fieldtype = 5;
}
}
}
}
}
sidhi
19-07-2006, 04:39 AM
sub text
{
return if(substr($_[0],0,9) eq "<!DOCTYPE");
return if $inside{script} || $inside{style} || $inside{title};
return if ($_[0] !~ /\S/);
my $subs = "";
my $test = 0;
my $test2 = 0;
my $date1 = 0;
if ( $inside{table} )
{
$prevtext = $prevtext . $_[0];
if( $inside{b} )
{
if($fieldtype == 0)
{
$worksheet->write($row,$col,$prevtext, $format1);
}
if($fieldtype == 1)
{
$worksheet->write($row,$col,$prevtext, $format1);
}
if($fieldtype == 2)
{
$prevtext =~ s/ //g;
$worksheet->write($row,$col,$prevtext, $format8);
}
if($fieldtype == 3)
{
$prevtext =~ s/ //g;
$worksheet->write($row,$col,$prevtext,$format9);
}
if($fieldtype == 4)
{
$date1 = xl_parse_date($prevtext);
$worksheet->write($row,$col,$date1,$format10);
}
if($fieldtype == 5)
{
$date1 = xl_parse_date($prevtext);
$worksheet->write($row,$col,$date1,$format12);
}
if ($colarray[$col] < length($prevtext))
{
$colarray[$col] = length($prevtext);
}
}
else
{
if($fieldtype == 1)
{
$test = $worksheet->write_string($row,$col,$prevtext);
if($test == -3)
{
print "string too long - ";
$test = $worksheet->write($row,$col,long_string($prevtext));
print $test . " " . long_string($prevtext);
}
}
if($fieldtype == 0)
{
$worksheet->write($row,$col,$prevtext);
}
if($fieldtype == 2)
{
$prevtext =~ s/ //g;
$worksheet->write($row,$col,$prevtext,$format5);
}
if($fieldtype == 3)
{
$prevtext =~ s/ //g;
$worksheet->write($row,$col,$prevtext,$format6);
}
if($fieldtype == 4)
{
$prevtext =~ s/ //g;
$date1 = xl_parse_date($prevtext);
$worksheet->write($row,$col,$date1,$format7);
}
if($fieldtype == 5)
{
$prevtext =~ s/ //g;
$date1 = xl_parse_date($prevtext);
$worksheet->write($row,$col,$date1,$format12);
}
if ($colarray[$col] < length($prevtext))
{
$colarray[$col] = length($prevtext);
}
}
}
else
{
$buffertext = $buffertext . $_[0];
$buffertext =~ s/\n//g;
$subs = $buffertext;
if( $inside{h1} || $inside{h2} || $inside{h3} || $inside{h4} )
{
if( $inside{h1} )
{
$col = 0;
$worksheet->write($row,$col,$subs, $format2);
#$row+=2;
}
if( $inside{h2} )
{
$col=0;
$worksheet->write($row,$col,$subs, $format3);
#$row+=2;
}
if( $inside{h3} || $inside{h4} )
{
$col=0;
$worksheet->write($row,$col,$subs);
#$row+=2;
}
}
else
{
$col = 0;
$worksheet->write($row,$col,$subs);
#$row++;
}
}
}
######################################################################
#
# long_string($str)
#
# Converts long strings into an Excel string concatenation formula.
# The concatenation is inserted between words to improve legibility.
#
# returns: An Excel formula if string is longer than 255 chars.
# The unmodified string otherwise.
#
sub long_string {
my $str= shift;
my $limit = 255;
# Return short strings
return $str if length $str <= $limit;
# Split the line at word boundaries where possible
my @segments = $str =~ m[.{1,$limit}$|.{1,$limit}\b|.{1,$limit}]sog;
# Join the string back together with quotes and Excel concatenation
$str = join '"&"', @segments;
# Add formatting to convert the string to a formula string
return $str = qq(="$str");
}
::crow::
Zero Cool
22-07-2006, 11:29 AM
Kalo gua boleh saran, elo pelajari pola dari data tesebut. Kalo emang ada polanya jadikan standar.
COntoh :
line 1 Awal
line 2 Isi
line 3 Isi
line 4 Akhir
line 5 Space
line 6 Awal
line 7 Isi
line 8 Isi
line 9 Akhir
line 10 Space
line 11 Awal
line 12 Isi
line 13 Isi
line 14 Akhir
line 15 Space
......
Khan ada polanya tuh, maka elo definisiin aja, kalo line kelipatan 1,6,11 tuh AWAL.
(2,3),(7,8),(12,13) tuh ISI. Jadi ngak susah.
Hanya sekedar IDE
ruboW
18-08-2006, 08:47 AM
gw malah bisa bikin pake PHP (huh???)
well sebenarnya C..
tapi ada beberapa pertanyaan yg membingungkan:
1.
GB1F/3502*3806/IDSCPZ1V11533170/013 04-06-14 11:03:45
9350 ENM CDC01 2893/06181
TRAFFIC MEASUREMENT : GRADE OF SERVICE 04-06-14 10:15
DATA QUALITY : SECURE
TC:EXCHANGE (DERL) = 51712
N A T I O N A L I N C O M I N G TRAFFIC
TERMINATE TRANSIT NAT
--------------------+------------+------------+------------+------------
diatas berubah gak?
TC (DERL) 1242 18385 3162
sebenarnya kalau lihat sekilas..
TC :menempati 1-3
(DERL): menempati 4-15 (hmm)
1234: menempati 16- (integer)
dst
kalau mau dibuat.. buatlah program yg baca satu baris co/
CC ICEPT FAILURE 7 77 6
lalu ambil pake substr (tergantung program) sesuai posisi dan masukkan ke var temp
lalu buat!!
saranku jadikan ini csv lalu buka di excel dan diperbaiki!!
gw dpt tugas bikin program yg bs baca data tabel dari text file untuk dibikin database...contoh datanya ada di attachment...
nah dimintanya datanya itu dipindahin ke tabel yang lebih teratur gitu (ada kolom dan barisnya ky excel gitu), trus dipisahin berdasarkan tanggal dan waktunya (yang ada di kanan atas tiap tabel)...
tu gimana caranya ya??
trus mending pake apa??visual c++??ato pake delphi??paling gampang pake apa ya??
mohon bantuannya ::maap::
Well, u bikin aja relational tablenya pake DBMS apa gitu... bisa MYSQL
Lalu, baca filenya jadiin input stream, lalu yah pake ODBC ke MYSQL database yg uda u siapin td...
Abis itu bisa munculin seperti apapun yg u mau deh... :)
Kalo mo design program yg asal jadi, yah tinggal baca file jadiin input stream, lalu diparse aja sesuai kebutuhan en tulis ke File baru dengan format yg diinginkan (XML cukup baik disarankan), ato kl mo ke excel document, tinggal ikutin aja formatnya... XSLT dalam XML bisa membantu kl u tertarik :)
Whew... setelah liat data yg diattach... kayaknya mendingan di-structure-in dulu deh...
dijadiin XML aja dulu deh... baru abis itu di-parse lagi... jadi datanya lebih gampang diprosess en dipake lagi suatu saat
KBH_BIO
08-09-2006, 09:48 AM
kalo mao make C bisa pake fstream aja. trus cari whitespace buat misahin antar cell. tapi gue lupa gimana kalo mao sambungin ke excel. Itu file headernya kalo tetap, bisa di skip aja langsung beberapa line
Tikus kecil
08-09-2006, 10:42 AM
Lbh mudah pake Oracle, soalnya gw udah pernah upload text ke DB pake Oracle.
vBulletin® v3.7.0, Copyright ©2000-2008, Jelsoft Enterprises Ltd.