Я написал синтаксический анализатор, который берет некоторую информацию из листов Excel, используя библиотеку Spire.xls и затем записывает информацию в другой файл Excel.
Я столкнулся со странной проблемой. По какой-то причине программа принимает серийные номера, такие как
03-02281
03-02282
03-01975
И записать их в лист Excel как
3/1/2281
3/1/2282
3/1/1975
Это происходит только с некоторыми значениями.
Другие, такие как
30-04761
03-00613
03-00614
транскрибируются без изменений.
Я проверил в файле excel, поля установлены в формате text
. Таким образом, они либо хранились таким образом изначально, либо Excel интерпретирует серийные номера как даты. Другая возможность заключается в том, что этого не происходит в исходном файле, и текст не исправляется/изменяется автоматически, если я вручную ввожу правильные значения.
Кто-нибудь знает, почему это происходит и как я могу сказать Excel, чтобы он просто обрабатывал их как текст и ничего больше?
Я думал о добавлении к ним '
в начале каждого значения, но они должны быть прочитаны другими парсерами, так что это не самый удобный вариант.
Редактировать: Вот некоторый код, который я использую для этого, надеюсь, он может дать вам, ребята, представление о том, где я ошибаюсь.
Это код, который добавляет все значения:
Workbook workbook = new Workbook();
workbook.LoadFromFile(templateExcelFileUri);
Worksheet sheet = workbook.Worksheets[0];
int ColumnIndex = 0; //for the datatable columns iteration
int columnCounter = 1; //for the excel sheet columns iteration
int ColumnsToAdd = 6; //(Seccion, seccion desc, marca, marca desc, **IdArticulo**, articulo desc)
//get the data of the new column
DataColumn DescriptionsDataColumn;
//First, add the suggestions.
for (; ColumnIndex < ColumnsToAdd; ColumnIndex++,
columnCounter++)
{
sheet.InsertColumn(columnCounter);
if(columnCounter==5)
sheet.Columns[5].NumberFormat = "@";// the column with the serial numbers.
DescriptionsDataColumn = AutomatController.DescriptionsTable.Columns[ColumnIndex];
//insert the data into the new column
sheet.InsertDataColumn(DescriptionsDataColumn, true, 2, columnCounter);
}
И для справки, таблица, значения которой я добавляю:
public static void SetDescriptionsTable()
{
DescriptionsTable.Columns.Add("Seccion", typeof(string));
DescriptionsTable.Columns.Add("SeccionDescripcion", typeof(string));
DescriptionsTable.Columns.Add("Marca", typeof(string));
DescriptionsTable.Columns.Add("MarcaDescripcion", typeof(string));
DescriptionsTable.Columns.Add("IdArticulo", typeof(string)); //Serial numbers
DescriptionsTable.Columns.Add("ArticuloDescripcion", typeof(string));
}
Спасибо за правки формата моего вопроса и заголовка. Я все еще немного новичок здесь, и я учусь делать это лучше.