不通过DataRow,直接往DataTable中添加新行DataTable.LoadDataRow(object[],bool)

本文介绍如何使用C#创建DataTable实例,并向其添加列和数据行。具体操作包括定义列名、添加列、以及使用LoadDataRow方法加载数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

DataTable dtver = new DataTable();
                dtver.Columns.Add("VERSION");
                dtver.Columns.Add("EFF");
                dtver.Columns.Add("OUT");

dtver.LoadDataRow(new string[3] { CDNaipVersion.Version, CDNaipVersion.Eff_date, "" }, true);

转载于:https://www.cnblogs.com/mol1995/p/6051245.html

帮我在以下代码里加一个处理json字符串特殊字符的功能using System; using System.Collections.Generic; using System.Data; using System.IO; using System.Web; using System.Web.UI; using Newtonsoft.Json; using Newtonsoft.Json.Linq; using OfficeOpenXml; namespace JsonToExcelWeb { public partial class UploadPage : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { } protected void btnUpload_Click(object sender, EventArgs e) { if (FileUpload1.HasFile) { try { // 获取上传的文件 HttpPostedFile file = FileUpload1.PostedFile; // 读取文件内容 using (StreamReader reader = new StreamReader(file.InputStream)) { string jsonContent = reader.ReadToEnd(); // 将JSON转换为DataTable DataTable dt = JsonToDataTable(jsonContent); // 生成Excel并返回给用户 GenerateExcelFile(dt, "converted.xlsx"); } } catch (Exception ex) { lblMessage.Text = "Error: " + ex.Message; } } else { lblMessage.Text = "Please select a file."; } } private DataTable JsonToDataTable(string jsonString) { // 解析JSON字符串 JArray jsonArray = JArray.Parse(jsonString); DataTable dt = new DataTable(); // 如果数组为空,则返回空表 if (jsonArray.Count == 0) return dt; // 收集列名(考虑嵌套对象,这里我们简单处理:只取第一行元素的所有属性,且如果属性是对象或数组,则将其转换为字符串) JObject firstRow = (JObject)jsonArray[0]; foreach (JProperty property in firstRow.Properties()) { // 根据值的类型来创建列 JToken value = firstRow[property.Name]; Type columnType = GetColumnType(value); dt.Columns.Add(property.Name, columnType); } // 遍历每一行 foreach (JObject row in jsonArray) { DataRow dr = dt.NewRow(); foreach (DataColumn column in dt.Columns) { JToken token = row[column.ColumnName]; if (token != null) { // 如果类型是复杂类型,则序列化为字符串;否则直接取值 if (token.Type == JTokenType.Object || token.Type == JTokenType.Array) { dr[column] = token.ToString(Formatting.None); } else { dr[column] = token.ToObject(column.DataType); } } } dt.Rows.Add(dr); } return dt; } private Type GetColumnType(JToken token) { if (token == null) return typeof(string); switch (token.Type) { case JTokenType.Integer: return typeof(long); case JTokenType.Float: return typeof(double); case JTokenType.Boolean: return typeof(bool); case JTokenType.Date: return typeof(DateTime); case JTokenType.Object: case JTokenType.Array: return typeof(string); // 复杂类型存储为字符串 default: return typeof(string); } } private void GenerateExcelFile(DataTable dt, string fileName) { // 使用EPPlus using (ExcelPackage package = new ExcelPackage()) { ExcelWorksheet worksheet = package.Workbook.Worksheets.Add("Sheet1"); // 加载数据表 worksheet.Cells["A1"].LoadFromDataTable(dt, true); // 设置响应头 Response.Clear(); Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"; Response.AddHeader("content-disposition", "attachment; filename=" + fileName); // 将Excel写入响应流 Response.BinaryWrite(package.GetAsByteArray()); Response.Flush(); Response.End(); } } } }
最新发布
08-13
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值