Azure cosmos DB 資料使用 JSON 格式, 在 Azure portal 的控制台介面可以直接瀏覽插入和更新資料。此外還可以批量 import 資料, 不過首先需要把資料轉化 JSON 文字檔。
使用 NPOI 讀取 Excel
透過 NuGet 安裝 NPOI, 先加入namespace :
using NPOI.SS.UserModel;
using NPOI.XSSF.UserModel;
讀取 Excel 資料用到 IWorkbook 和 ISheet :
IWorkbook wbook = new XSSFWorkbook(file);
ISheet sheet = wbook.GetSheetAt(0);
GetRow 方法取得每一行 Row:
IRow row = sheet.GetRow(i);
GetCell 方法取得每行中的 Cell:
ICell cell = row.GetCell(j);
使用 Newtonsoft.Json 的 JArray 和 JObject 生成 JSON 物件
下面完整程式碼:
public string ExcelTable(string file)
{
var list = new JArray() as dynamic;
using (FileStream fstream = new FileStream(file, FileMode.Open))
{
IWorkbook wbook = new XSSFWorkbook(fstream);
//only 1 sheet
ISheet sheet = wbook.GetSheetAt(0);
//Row 1 為 header
var header = sheet.GetRow(0).Cells;
for (int i = 1; i <= sheet.LastRowNum; i++)
{
IRow row = sheet.GetRow(i);
if (row == null) continue;
//建立 dynamic 物件
dynamic obj = new JObject();
for (int j = 0; j < header.Count; j++)
{
ICell cell = row.GetCell(j);
if (cell != null)
{
obj.Add(header[j].ToString(), cell.ToString());
}
}
list.Add(obj);
}
}
return list.ToString();
}
最后用 File.WriteAllText(file, json) 產生文字檔, 然后上傳到 Cosmos DB 中。
發表留言