我有一個Excel工作表,它有一組包含數據的列和行。我想將完整的Excel工作表數據作爲JSON讀取,以便稍後可以將JSON寫入文件。我怎樣才能做到這一點?從excel中讀取數據到JSON對象的c#
的樣本數據:
Names RegNo Description
ABCD 12345 DemoInfo
XYZ 67890 DemoInfo2
我有一個Excel工作表,它有一組包含數據的列和行。我想將完整的Excel工作表數據作爲JSON讀取,以便稍後可以將JSON寫入文件。我怎樣才能做到這一點?從excel中讀取數據到JSON對象的c#
的樣本數據:
Names RegNo Description
ABCD 12345 DemoInfo
XYZ 67890 DemoInfo2
將它保存爲CSV。然後使用File.ReadLines枚舉每行,然後使用String.Split來讀取每列。將數據格式化爲JSON字符串並將其保存到文件中。
通過ADO.NET OleDb提供程序連接到Excel工作表。然後,使用C#的JSON庫生成JSON字符串,並保存該文件。 (或者使用JavascriptSerialzer,建議使用@boades)。
本示例使用JSON.NET庫。
using System;
using System.Linq;
using System.Data.OleDb;
using System.Data.Common;
using Newtonsoft.Json;
using System.IO;
namespace ConsoleApplication1 {
class Program {
static void Main(string[] args) {
var pathToExcel = @"C:\path\to\excel\file.xlsx";
var sheetName = "NameOfSheet";
var destinationPath = @"C:\path\to\save\json\file.json";
//Use this connection string if you have Office 2007+ drivers installed and
//your data is saved in a .xlsx file
var connectionString=String.Format(@"
Provider=Microsoft.ACE.OLEDB.12.0;
Data Source={0};
Extended Properties=""Excel 12.0 Xml;HDR=YES""
",pathToExcel);
//Creating and opening a data connection to the Excel sheet
using (var conn=new OleDbConnection(connectionString)) {
conn.Open();
var cmd=conn.CreateCommand();
cmd.CommandText = String.Format(
@"SELECT * FROM [{0}$]",
sheetName
);
using (var rdr=cmd.ExecuteReader()) {
//LINQ query - when executed will create anonymous objects for each row
var query =
from DbDataRecord row in rdr
select new {
name = row[0],
regno = row[1],
description = row[2]
};
//Generates JSON from the LINQ query
var json = JsonConvert.SerializeObject(query);
//Write the file to the destination path
File.WriteAllText(destinationPath, json);
}
}
}
}
}
鏈接:
你可以給一個嘗試http://exceldatareader.codeplex.com/庫。 您必須閱讀從Excel數據到一些對象,並比其轉換使用JavaScriptSerializer
public class MyRow
{
public string Cell1;
public string Cell2;
public string Cell3;
}
class Program
{
static void Main()
{
var list = new List<MyRow>();
FileStream stream = File.Open(filePath, FileMode.Open, FileAccess.Read);
//1. Reading from a binary Excel file ('97-2003 format; *.xls)
IExcelDataReader excelReader = ExcelReaderFactory.CreateBinaryReader(stream);
//...
//2. Reading from a OpenXml Excel file (2007 format; *.xlsx)
IExcelDataReader excelReader = ExcelReaderFactory.CreateOpenXmlReader(stream);
//5. Data Reader methods
while (excelReader.Read())
{
var obj = new MyRow
{
Cell1 = excelReader.GetString(0),
Cell2 = excelReader.GetString(1),
Cell3 = excelReader.GetString(2),
}
list.Add(obj);
}
//6. Free resources (IExcelDataReader is IDisposable)
excelReader.Close();
var json = new JavaScriptSerializer().Serialize(list);
Console.WriteLine(json);
}
}
請注意,您不需要安裝Excel也爲JSON,你可以下載Microsoft Access數據庫引擎可再發行,這在這個時候是可在這裏:http://www.microsoft.com/en-gb/download/details.aspx?id=13255 – Family
@Family更新,謝謝。 –