Hi,
I am trying to convert in one excel sheet data in JSON on some specific format .but i am not getting any solution to change dataset format .
My CSV data is in below format (CSV.png file)

I need data of JSON in below format only
{
"Map":{
"University": "VBU",
"Dept1":{
"Dept": "MCA",
"Data1":
{
"Name ": "Waugh, Timothy",
"Age": 10,
"Country": "UK"
},
"Data2":
{
"Name ": "Freeman, Neil",
"Age": 20,
"Country": "USA"
},
"Data3":
{
"Name ": "Andy, Robert",
"Age": 30,
"Country": "Poland"
}
},
"Dept2":{
"Dept": "BCA",
"Data1":
{
"Name ": "Timothy",
"Age": 10,
"Country": "UK"
},
"Data2":
{
"Name ": "Neil",
"Age": 21,
"Country": "USA"
}
}
}
}
I have tried to convert using Microsoft.Office.Interop.Excel.Application and Newsoft lib but i am not getting output as i expected .it is showing all data and not categories my data as per dept.
Below code sample to convert CSV to JSON
public void ExcelFileToJson(string excelpath)
{
DataTable dt_excel_content= READExcel(excelpath);
DataSet excelData = new DataSet();
excelData.Tables.Add(dt_excel_content);
string spreadsheetjson = "";
spreadsheetjson= SheetTolson(excelData, dt_excel_content.TableName);
string fileName = dt_excel_content.TableName.Replace("", string.Empty);
System.IO.File.WriteAllText(fileName + ".json", spreadsheetjson);
}
public string SheetTolson(DataSet excelDataSet, string sheetName)
{
DataTable dataTable= excelDataSet.Tables[sheetName];
return JsonConvert.SerializeObject(dataTable);
}
public DataTable READExcel(string path)
{
Microsoft.Office.Interop.Excel.Application objXL = null;
Microsoft.Office.Interop.Excel.Workbook objWB = null;
objXL = new Microsoft.Office.Interop.Excel.Application();
objWB = objXL.Workbooks.Open(path);
Microsoft.Office.Interop.Excel.Worksheet objSHT = (Microsoft.Office.Interop.Excel.Worksheet)objWB.Sheets["Sheet1"];
int rows = objSHT.UsedRange.Rows.Count;
int cols = objSHT.UsedRange.Columns.Count;
DataTable dt = new DataTable();
int noofrow = 1;
for (int c = 1; c <= cols; c++)
{
string colname = objSHT.Cells[1, c].ToString();
dt.Columns.Add(colname);
noofrow = 2;
}
for (int r = noofrow; r <= rows; r++)
{
DataRow dr = dt.NewRow();
for (int c = 1; c <= cols; c++)
{
dr[c - 1] = objSHT.Cells[r, c].ToString();
}
dt.Rows.Add(dr);
}
objWB.Close();
objXL.Quit();
return dt;
}