0

i hav a tabular forms used to generate reports which are html files and i want to save these files by filling with data dynamically using obj-c..

any ideas how to do ..

Thanks in advance

Linux world
  • 3,750
  • 11
  • 44
  • 59
  • Not to be rude, but I have answered a lot of your questions and give you code samples. You have not even had the decency to mark my answer up, or even accept it. – John Smith Oct 23 '10 at 03:20
  • really i forgot it to tick ,ur past answer for html is really working... – Linux world Oct 23 '10 at 14:17

1 Answers1

1

I do a lot of this. My best friend here is NSString & Co.

Take a special look at the method stringWithFormat.

For example, here is me setting colors for an html table.

-(NSString *) colorcomponents:(int) i size:(int) s
{
    CGColorRef color = [[coltable objectAtIndex:i] CGColor];
    NSString * tablecompformat = @"<td style=\"background: rgb(%d, %d, %d)\" width=%d height=%d> <b>  </b>  </td>";
    int numComponents = CGColorGetNumberOfComponents(color);

    if (numComponents == 4)
    {
        const CGFloat *components = CGColorGetComponents(color);
        CGFloat red = components[0]*256;
        CGFloat green = components[1]*256;
        CGFloat blue = components[2]*256;

        return [NSString     stringWithFormat:tablecompformat,(int)red,(int)green,(int)blue,s,s];
    }
    return nil;
}

For each of the pieces you build you can add to your main html string using the NSString method appendString. After you have finished building your string you cah save it as a file or eamil it or whatever...

Here is the main routine. It should give you a good idea of how to dynamically build and html string:

-(NSString *) emailstr
{
    NSMutableString * ress=[[NSMutableString alloc] initWithCapacity:100];

    NSString * formatstring=@"<tr><td > <b> %@</b>  </td>  <td>: %@ </td></tr>\n";
    //NSString * formatstring2=@"<tr><td> <b> %@</b>  </td>  <td>: %@ </td> <td>: %@ </td> </tr>\n";
    NSString * hline=@"<tr><td colspan=\"3\">  <hr>  </td>  </tr>\n";

    [ress appendString:@"<html><body>\n"];
    [ress appendString:[NSString stringWithFormat:@"<h3> Game: %@ </h3> \n", [gm name]  ]];

    [ress appendString:@"<table border=\"0\">"];// beginning of main table
    [ress appendString:@"<tr><td > <b> Initial</b>  </td> <td>"];

    [ress appendString:@"<table border=\"0\">"];
    for (int i=0;i<[gm xcount];i++)
    {
        [ress appendString:@"<tr> "];
        for(int j=0;j<[gm ycount];j++)
        {
            int k=[gm getinitpos:i y:j];
            [ress appendString:[self colorcomponents:k size:10]];
        }
        [ress appendString:@"</tr> "];
    }
    [ress appendString:@"</table><br>\n "];
    [ress appendString:@"</td></tr>\n"];

    [ress appendString:@"<tr><td> <b> End</b>  </td> <td>"];
    [ress appendString:@"<table border=\"0\">"];
    for (int i=0;i<[gm xcount];i++)
    {
        [ress appendString:@"<tr> "];
        for(int j=0;j<[gm ycount];j++)
        {
            int k=[gm getpos:i y:j];
            [ress appendString:[self colorcomponents:k size:10]];

        }
        [ress appendString:@"</tr> "];
    }
    [ress appendString:@"</table><br>"];
    [ress appendString:@"</td></tr>\n"];


    [ress appendString:[NSString stringWithFormat:formatstring,@"Rules",[sql getrulesname:[gm rules_id]]]];
    if ([gm step]>0) 
    {
        //[ress appendString:@"<table border=\"0\">"];
        [ress appendString:hline]; 

        for (int i=1; i<=[gm step];i++)
        {
            int x=[sql getlogx:[gm session_id] step:i];
            int y=[sql getlogy:[gm session_id] step:i];

            NSString * pnum = [NSString stringWithFormat:@"Move %d",i];
            NSString * posstring=[NSString stringWithFormat:@"(%d, %d)",x+1,y+1 ];
            [ress appendString:[NSString stringWithFormat:formatstring,pnum,posstring]];
        }
        [ress appendString:hline];
        //[ress appendString:@"</table><br>"];
    }

    [ress appendString:@"</table><br>"]; //end of main table

    [ress appendString:@"</body></html>"];

    return ress;
}
John Smith
  • 12,491
  • 18
  • 65
  • 111