Подтвердить что ты не робот

С# Excel Interop: как форматировать ячейки для хранения значений в виде текста

Я пишу цифры в электронную таблицу Excel из DataTable, и все эти числа составляют 5 цифр с предшествующими 0, если само число меньше 5 цифр (так что 395 будет храниться как 00395, например).

При вводе этих чисел в Excel (используя С#), они сохраняют их как числа и исключают предыдущие 0. Есть ли способ форматировать ячейки из С# для того, чтобы значения сохранялись как текст, а не числа?

4b9b3361

Ответ 1

Вы можете SomeRange.NumberFormat = "@"; или префиксное значение с помощью ' и записать его в ячейку. excel будет обрабатывать его как числовой-сохраненный как текст и предоставлять визуальную метку.

Ответ 2

Этот ответ только что решил серьезную проблему с решением одного из наших программных продуктов компании, мне пришлось извлечь значение, как показано, но как только я установил его на новый лист, он вставлялся в виде числа. Простое решение. Я пока не могу проголосовать, но вниз следует, как это закончилось.

for (int h = 1; h <= 1; h++)
{
    int col = lastColl(sheets);
    for (int r = 1; r <= src.Count; r++)
    {
        sheets.Cells[r, col + 1] = "'"+src.Cells[r, h].Text.ToString().Trim();
    }
}

Ответ 3

//где [1] - номер столбца, который вы хотите сделать

ExcelWorksheet.Columns[1].NumberFormat = "@";

//Если вы хотите отформатировать конкретный столбец на всех листах в книге - используйте ниже код. Удалите петлю для отдельного листа вместе с небольшими изменениями.

//путь был сохранен в файле excel

строка ResultsFilePath = @ "C:\Users\krakhil\Desktop\TGUW EXCEL\TEST";

    Excel.Application ExcelApp = new Excel.Application();
    Excel.Workbook ExcelWorkbook = ExcelApp.Workbooks.Open(ResultsFilePath);
    ExcelApp.Visible = true;

    //Looping through all available sheets
    foreach (Excel.Worksheet ExcelWorksheet in ExcelWorkbook.Sheets)
    {                
        //Selecting the worksheet where we want to perform action
        ExcelWorksheet.Select(Type.Missing);
        ExcelWorksheet.Columns[1].NumberFormat = "@";
    }

    //saving excel file using Interop
    ExcelWorkbook.Save();

    //closing file and releasing resources
    ExcelWorkbook.Close(Type.Missing, Type.Missing, Type.Missing);
    Marshal.FinalReleaseComObject(ExcelWorkbook);
    ExcelApp.Quit();
    Marshal.FinalReleaseComObject(ExcelApp);