0

我正在尝试使用带有 x 和 y 值的简单 excel csv 文件并将其放入 NSArray 中,以便我可以使用它来使用 core-plot 绘制散点图。我已经设置了代码来显示带有某些数据图的图表:

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 回答