Как мне скопировать данные NSTableView, используя NSPasteBoard? - PullRequest
0 голосов
/ 12 апреля 2019

Я пытаюсь скопировать данные NSTableView, используя pasteboard, и хочу вставить их в виде таблицы в Microsoft Word. Как мне это сделать?

Я попытался скопировать источник данных TableView в виде строки, но не смог скопировать сам TableView.

    NSPasteboard *pasteboard=[NSPasteboard generalPasteboard];


    //_fillvalue,_levelfill(Mutable array) are the data source for my tableview with 2 column


    [pasteboard clearContents];
    int i=0;
    NSMutableArray *tval=[[NSMutableArray alloc]init];
    NSInteger row=[_tableView numberOfRows]; 

    for(i=0;i<(int)row;i++){

        NSString *s1=[_levelfill objectAtIndex:i]; //levelfill is datasource array

        NSLog(@"s1 value is  %@",s1);
        NSString *s2=[_fillvalue objectAtIndex:i];
        s1=[s1 stringByAppendingString:@"  "];
        s1=[s1 stringByAppendingString:s2];
        [tval addObject:s1];

    }
    [pasteboard writeObjects:tval];

Я ожидаю, что вывод будет скопирован из таблицы, а не из источника данных таблицы. Также есть способ скопировать как саму таблицу, которая может быть вставлена ​​как таблица непосредственно в Microsoft word.

1 Ответ

0 голосов
/ 12 апреля 2019

Вы должны сделать что-то вроде этого

NSPasteboard *pasteboard = [NSPasteboard generalPasteboard];
[pasteboard clearContents];

NSMutableArray *tval = [[NSMutableArray alloc]init];

//This is the equivalent of your for
[_levelfill enumerateObjectsUsingBlock:^(NSString *object, NSUInteger idx, BOOL *stop) {
    NSLog(@"_levelfill value is %@", object);
    NSString *s2 = [_fillvalue objectAtIndex:idx];
    NSString *s1 = object;
    s1 = [s1 stringByAppendingString:@"  "];
    s1 = [s1 stringByAppendingString:s2];
    // Create the string representing the row and add it to the array
    [tval addObject:s1];
}];

// Set the string in the pasteboard
[pasteboard declareTypes:[NSArray arrayWithObject:NSPasteboardTypeString] owner:nil];
[pasteboard setString:[tval componentsJoinedByString:@"\n"] forType:NSPasteboardTypeString];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...