2012-07-13 20 views
0

我想採取一個簡單的Excel和csv文件的x和y值,並將其放入一個NSArray,這樣我就可以使用它來繪製散點圖核心情節。我已經設置了代碼,以顯示某些數據圖這裏的圖形:把一個CVS文件放入一個NSArray來與核心圖libararies

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)

回答

0

假設您的數據導出爲UTF8文本。將此CSV文檔的網址傳遞給此通話。

您可以使用

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行是一個標題,並且空行或格式不正確的行會使例程崩潰,但顯示您需要執行的基本代碼。

相關問題