C # Excel Interop: как отформатировать ячейки для хранения значений в виде текста - PullRequest
18 голосов
/ 28 сентября 2011

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

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

Ответы [ 3 ]

24 голосов
/ 28 сентября 2011

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

2 голосов
/ 20 февраля 2015

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

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();
    }
}
0 голосов
/ 10 ноября 2017

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

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

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

// путь к файлу Excel сохраняется

string 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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...