自定义函数,用于根据Excel VBA中的列值从JSON API中提取数据

时间:2016-12-01 10:35:43

标签: json excel vba excel-vba

我的excel工作簿看起来像这样:

public class MainActivity extends AppCompatActivity implements View.OnTouchListener,CameraBridgeViewBase.CvCameraViewListener2 {

private static final String TAG = MainActivity.class.getCanonicalName();
private CameraBridgeViewBase mOpenCvCameraView;
private Mat mRgba;
private Scalar mBlobColorHsv;
private Scalar mBlobColorRgba;

private Mat mIntermediateMat;
private Mat mGray;
Mat hierarchy;


List<MatOfPoint> contours;


private BaseLoaderCallback mLoaderCallback=new BaseLoaderCallback(this) {
    @Override
    public void onManagerConnected(int status) {
        switch (status) {
            case LoaderCallbackInterface.SUCCESS: {
                Log.i(TAG, "OpenCV loaded successfully");
                mOpenCvCameraView.enableView();
                mOpenCvCameraView.setOnTouchListener(MainActivity.this);
            }
            break;
            default: {
                super.onManagerConnected(status);
            }
            break;

        }
    }

};
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);


    mOpenCvCameraView=(CameraBridgeViewBase)findViewById(R.id.opencv_tutorial_activity_surface_view);
    mOpenCvCameraView.setVisibility(SurfaceView.VISIBLE);
    mOpenCvCameraView.setCvCameraViewListener(this);
}
@Override
public void onPause(){
    super.onPause();
    if(mOpenCvCameraView!=null)
        mOpenCvCameraView.disableView();
}
@Override
public void onResume(){
    {
        super.onResume();
        if(!OpenCVLoader.initDebug()) {
            OpenCVLoader.initAsync(OpenCVLoader.OPENCV_VERSION_2_4_2, this, mLoaderCallback);
        }
        else{
            mLoaderCallback.onManagerConnected(LoaderCallbackInterface.SUCCESS);
        }
    }
}
@Override
public void onDestroy(){
    super.onPause();
    if(mOpenCvCameraView!=null)
        mOpenCvCameraView.disableView();
}

@Override
public boolean onTouch(View v, MotionEvent event) {

    return false;
}


@Override
public void onCameraViewStarted(int width, int height) {
    mRgba=new Mat();
    mBlobColorRgba=new Scalar(255);
    mBlobColorHsv=new Scalar(255);
    mRgba = new Mat(height, width, CvType.CV_8UC4);
    mIntermediateMat = new Mat(height, width, CvType.CV_8UC4);
    mGray = new Mat(height, width, CvType.CV_8UC1);
    hierarchy = new Mat();
}

我还有一个JSON api,其中包含以下结构的URL:

/-------------------------------------\
|   Lat    |   Long   |     Area      |
|-------------------------------------|
| 5.3      | 103.8    |   AREA_NAME   |
\-------------------------------------/

返回具有以下结构的JSON对象:

https://example.com/api?token=TOKEN&lat=X.X&lng=X.X

我尝试实施VBA功能,以帮助我提取AREA_NAME。但是,我不断收到语法错误。我不知道自己哪里出错了。

{ "Area": "AREA_NAME", "OTHERS": "Other_details"}

我故意将lat和long值硬编码用于开发目的。最后,我希望函数接受lat和long作为参数。我从PowerQuery Editor获得了该函数的第一行。

我哪里错了?如何在VBA中正确执行此操作?或者使用PowerQuery有更简单的方法吗?

0 个答案:

没有答案