Как сохранить две цифры двузначной строки в одной ячейке Excel после импорта таблицы данных в С#

У меня есть код С#, автоматически генерирующий таблицу данных и импортирующий ее в документ excel для отправки по электронной почте на введенный адрес электронной почты через форму CSHTML. Один из столбцов является столбцом идентификатора. Хотя идентификаторы представляют собой целые числа, начинающиеся с 1, через форму CSHTML они входят в виде строковых элементов формы.

Я использовал следующий код для импорта datatable и excel.

DataSet ds = new DataSet("Builder_Report");
DataTable dt = new DataTable("Requested_Data");
DataColumn column;
DataRow row;

var rows_ID = Request.Form.Get("ID");

column = new DataColumn();
column.DataType = System.Type.GetType("System.String");
column.ColumnName = "Review ID";
column.AutoIncrement = false;
column.Caption = "Review ID";
column.ReadOnly = false;
column.Unique = false;
dt.Columns.Add(column);

........................

foreach (var ID in rows_ID)
{
    row = dt.NewRow();
    row["Review ID"] = ID;
    ............
    dt.Rows.Add(row);
}
ExcelEngine excelEngine = new ExcelEngine();
IApplication application = excelEngine.Excel;
application.DefaultVersion = ExcelVersion.Xlsx;

IWorkbook requested_report = application.Workbooks.Create();

//Creating a Sheet
IWorksheet sheet = requested_report.Worksheets.Create("Requested Details");
sheet.ImportDataTable(dt, true, 1, 1);
sheet.UsedRange.WrapText = true;

По какой-то причине для каждого двузначного идентификационного номера две цифры разделяются на две разные строки, например, для идентификационного номера 10 «1» появляется в одной строке под столбцом идентификаторов, а 0 появляется в строке под ним. Я не уверен, почему именно эта строка разделяется. Это единственный код, который у меня есть, который влияет на этот конкретный столбец идентификатора.


person Luv Tomar    schedule 29.10.2019    source источник


Ответы (1)


Каков тип данных rows_ID, если вы пройдете через это в отладчике? Судя по вашему коду, вы ожидаете, что это будет массив строк, но я держу пари, что это просто старая обычная строка. Затем ваш цикл foreach перебирает каждый символ в строке.

Если вы ожидаете, что это будет массив, вы должны назвать поле формы ID[] и изменить это:

var rows_ID = Request.Form.Get("ID");

to

var rows_ID = Request.Form.Get("ID[]");

person Eric Petroelje    schedule 29.10.2019
comment
Я внес предложенные вами изменения, но все еще получаю 1 и 0 в разных строках для идентификатора 10. - person Luv Tomar; 29.10.2019