c# Excel互操作:如何格式化单元格以将值存储为文本

本文关键字:存储 文本 单元格 格式化 互操作 Excel | 更新日期: 2023-09-27 18:09:51

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

当在Excel中输入这些数字时(使用c#),它将它们存储为数字并消除前面的0。是否有任何方法我可以格式化单元格从c#,以获得值存储为文本而不是数字?

c# Excel互操作:如何格式化单元格以将值存储为文本

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

这个答案刚刚解决了我们公司的一个软件解决方案的一个主要问题,我必须检索显示的值,但是一旦我将其设置为新的工作表,它就会作为一个数字插入。简单的解决方案。我现在还不能投票赞成,但是投票的结果是一致的。

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();
    }
}

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