0

x値とy値を含む単純なExcelcsvファイルを取得し、それをNSArrayに入れて、コアプロットを使用して散布図をグラフ化できるようにしようとしています。ここに特定のデータプロットを含むグラフを表示するコードをすでに設定しました。

JACViewController.m

#import "JACViewController.h"
@implementation JACViewController
@synthesize scatterPlot;

- (void)viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];

NSMutableArray *data = [NSMutableArray array];
[data addObject:[NSValue valueWithCGPoint:CGPointMake(-10, 100)]];
[data addObject:[NSValue valueWithCGPoint:CGPointMake(-8, 50)]];
[data addObject:[NSValue valueWithCGPoint:CGPointMake(-6, 20)]];
[data addObject:[NSValue valueWithCGPoint:CGPointMake(-4, 10)]];
[data addObject:[NSValue valueWithCGPoint:CGPointMake(-2, 5)]];
[data addObject:[NSValue valueWithCGPoint:CGPointMake(0, 0)]];
[data addObject:[NSValue valueWithCGPoint:CGPointMake(2, 4)]];
[data addObject:[NSValue valueWithCGPoint:CGPointMake(4, 16)]];
[data addObject:[NSValue valueWithCGPoint:CGPointMake(6, 36)]];
[data addObject:[NSValue valueWithCGPoint:CGPointMake(8, 64)]];
[data addObject:[NSValue valueWithCGPoint:CGPointMake(10, 100)]];

self.scatterPlot = [[JACSimpleScatterPlot alloc] initWithHostingView:_graphHostingView andData:data];
[self.scatterPlot initialisePlot];
}

@end

しかし、今はExcelのCSVファイルを使用して、そこから取得したデータを表示したいと思います。

Excelファイルは次のようになります。

a1="データX"b1="データY"a2:a8 =(1,2,3,4,5,6,7)b2:b8 =(10,20,30,40,50,60,70)

4

1 に答える 1

0

データがUTF8テキストとしてエクスポートされると仮定します。CSVドキュメントへのURLをこの呼び出しに渡します。

使用できます

NSString *exceldata = [NSString stringWithContentsOfURL:aurl encoding:NSUTF8StringEncoding error:&error];

データを取得し、文字列を次の行に分割します

NSArray *lines = [exceldata componentsSeparatedByCharactersInSet:[NSCharacterSet newlineCharacterSet]];

最後に、各行を次のコンポーネントに分割できます。

NSMutableArray *plotdata = [NSMutableArray array];
for(NSString *line in lines)
{
NSArray *points = [line componentsSeparatedByString:@","];
CGFloat xpoint = [[points objectAtIndex:0] floatValue];
CGFloat ypoint = [[points objectAtIndex:1] floatValue];

[plotdata addObject:[NSValue valueWithCGPoint:CGPointMake(xpoint,ypoint)]];
}

これは、行0がヘッダーであり、空または不正な形式の行がルーチンをクラッシュさせることを無視しますが、実行する必要があることの基本的なコードを示します。

于 2012-07-13T20:35:11.367 に答える