Как сохранить две цифры двузначной строки в одной ячейке Excel после импорта таблицы данных в C # - PullRequest
0 голосов
/ 29 октября 2019

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

Я использовал следующий код для импорта данных и 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появляется в ряду под ним. Я не уверен, почему именно эта строка разбивается. Это единственный код, который у меня есть, который влияет на этот столбец идентификатора.

1 Ответ

0 голосов
/ 29 октября 2019

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

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

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

до

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

...