我正在使用一个 DataTable
向 Excel 电子表格写入数字,这些数字都是5位数,如果数字本身不足5位,则前面有0(例如,395将存储为00395)。
使用 C#将这些数字输入到 Excel 中时,它会将它们保存为数字并消除前导的0。是否有任何方法可以通过 C#对单元格进行格式化,以便将值存储为文本而不是数字?
我正在使用一个 DataTable
向 Excel 电子表格写入数字,这些数字都是5位数,如果数字本身不足5位,则前面有0(例如,395将存储为00395)。
使用 C#将这些数字输入到 Excel 中时,它会将它们保存为数字并消除前导的0。是否有任何方法可以通过 C#对单元格进行格式化,以便将值存储为文本而不是数字?
您可以使用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);