JSON(JavaScript Object Notation)是一種輕量級數據交換格式,常用于Web應用中傳遞數據。Excel是一款廣泛使用的電子表格軟件,可以方便地對數據進行處理和管理。在某些情況下,需要將JSON數據導入Excel中進行進一步處理,下面介紹一種使用C語言實現的方法。
#include "cJSON.h" #include "xls.h" int main() { // 讀取JSON數據 FILE *fp = fopen("data.json", "r"); if (!fp) { printf("Failed to open file!\n"); return 1; } char *json_data; long length; fseek(fp, 0, SEEK_END); length = ftell(fp); fseek(fp, 0, SEEK_SET); json_data = (char *)malloc(length + 1); fread(json_data, 1, length, fp); fclose(fp); json_data[length] = '\0'; // 解析JSON數據 cJSON *json_obj = cJSON_Parse(json_data); if (!json_obj) { printf("Failed to parse JSON data!\n"); return 1; } // 獲取數據行數和列數 cJSON *rows = cJSON_GetObjectItem(json_obj, "rows"); cJSON *cols = cJSON_GetObjectItem(json_obj, "cols"); int row_num = cJSON_GetNumberValue(rows); int col_num = cJSON_GetNumberValue(cols); // 新建Excel xlsWorkBook *wb = xlsNewWorkbook(); xlsWorkSheet *ws = xlsAddSheet(wb, "Sheet1"); // 寫入數據 for (int i = 0; i< row_num; i++) { for (int j = 0; j< col_num; j++) { cJSON *data = cJSON_GetObjectItem(json_obj, "data"); cJSON *cell = cJSON_GetArrayItem(data, i * col_num + j); xlsWriteStr(ws, i+1, j+1, cell->valuestring, NULL); } } // 保存Excel文件 xlsSave(wb, "data.xls"); xlsDeleteSheet(wb, ws); xlsClose(wb); // 釋放內存 cJSON_Delete(json_obj); free(json_data); return 0; }
以上代碼使用了開源的cJSON庫和xlslib庫,需要在項目中導入相關頭文件和庫文件。其中,通過cJSON_Parse函數解析JSON數據,通過cJSON_GetObjectItem和cJSON_GetNumberValue函數獲取JSON數據中的行數和列數,并根據行數和列數寫入Excel數據。最后,通過xlsSave函數保存Excel文件,并釋放內存。