C#Excel Interop:如何格式化单元格以将值存储为文本

时间:2011-09-28 13:05:43

标签: c# excel interop

我正在从DataTable向Excel电子表格中写入数字,如果数字本身长度小于5位,则所有这些数字都是5位数字,前面有0(因此395将存储为00395,例如)。

将这些数字输入Excel(使用C#)时,它将它们存储为数字并消除前面的0。有没有什么办法可以格式化C#中的单元格,以便将值存储为文本而不是数字?

3 个答案:

答案 0 :(得分:24)

您可以SomeRange.NumberFormat = "@";或者如果您使用'作为前缀,并将其写入单元格excel会将其视为数字存储为文本并提供视觉提示。

答案 1 :(得分: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();
    }
}

答案 2 :(得分:0)

//其中[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);