我正在从DataTable
向Excel电子表格中写入数字,如果数字本身长度小于5位(例如,395将存储为00395 ),则所有这些数字都是5位数的长度,并且前面都是0。
当将这些数字输入到Excel中(使用C#)时,它会将它们存储为数字并删除前面的0。有没有什么方法可以格式化C#中的单元格,以便将值存储为文本而不是数字?
发布于 2011-09-28 13:23:56
您可以使用SomeRange.NumberFormat = "@";
,或者,如果您使用'
作为值的前缀并将其写入单元格,则excel会将其视为存储为文本的数字,并提供可视化提示。
发布于 2015-02-19 22:43:18
这个答案刚刚解决了我们公司的一个软件的解决方案的一个主要问题,我必须检索显示的值,但一旦我将它设置到新的工作表中,它就被作为一个数字插入。简单的解决方案。到目前为止,我还不能投票,但下面是它是如何结束的。
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();
}
}
发布于 2017-11-10 06:08:59
//其中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);
https://stackoverflow.com/questions/7583704
复制