gpt4 book ai didi

c# - excel中如何在数字前输入零?

转载 作者:行者123 更新时间:2023-11-30 20:01:08 25 4
gpt4 key购买 nike

我有一个用 C# 编写的应用程序,它从 Datagridview 中提取数据到 excel。我的问题是当我导出到 excel 时有一个像 010498 的数字变成 10498,开头没有零 (0)。我希望那里是零 (0)。是否有任何可能的解决方案,在应用程序中用 C# 编写代码或通过 excel 编写代码?
谢谢,抱歉英语不好。

In the Datagridview

After export to excel

在第一张图片中,似乎是 datagridview,在第二张图片中,导出到 excel 后如何。在单元格 A3、F3、F4 中,开头缺少零 (0)。任何解决方案我该如何解决?谢谢。
导出到Excel的代码。

private void excel_toolstripmenuitem_Click(object sender, EventArgs e)
{
Microsoft.Office.Interop.Excel.Application excelApp = null;
try
{
// instantiating the excel application class
object misValue = System.Reflection.Missing.Value;
excelApp = new Microsoft.Office.Interop.Excel.Application();
Microsoft.Office.Interop.Excel.Workbook currentWorkbook = excelApp.Workbooks.Add(Type.Missing);
Microsoft.Office.Interop.Excel.Worksheet currentWorksheet = (Microsoft.Office.Interop.Excel.Worksheet)currentWorkbook.ActiveSheet;
currentWorksheet.Columns.ColumnWidth = 18;
if (dg1.Rows.Count > 0)
{
currentWorksheet.Cells[1, 1] = DateTime.Now.ToLongDateString() + " " + DateTime.Now.ToShortTimeString();
int i = 1;
foreach (DataGridViewColumn dgviewColumn in dg1.Columns)
{
// Excel work sheet indexing starts with 1
currentWorksheet.Cells[2, i] = dgviewColumn.Name;
++i;
}
Microsoft.Office.Interop.Excel.Range headerColumnRange = currentWorksheet.get_Range("A2", "AY2");
headerColumnRange.Font.Bold = true;
headerColumnRange.Font.Color = 0xFF0000;
int rowIndex = 0;
for (rowIndex = 0; rowIndex < dg1.Rows.Count; rowIndex++)
{
DataGridViewRow dgRow = dg1.Rows[rowIndex];
for (int cellIndex = 0; cellIndex < dgRow.Cells.Count; cellIndex++)
{
currentWorksheet.Cells[rowIndex + 3, cellIndex + 1] = dgRow.Cells[cellIndex].Value;
}
}
Microsoft.Office.Interop.Excel.Range fullTextRange = currentWorksheet.get_Range("A1", "AY" + (rowIndex + 1).ToString());
fullTextRange.WrapText = true;
fullTextRange.HorizontalAlignment = Microsoft.Office.Interop.Excel.XlHAlign.xlHAlignLeft;
}

using (SaveFileDialog exportSaveFileDialog = new SaveFileDialog())
{
exportSaveFileDialog.Title = "Save as";
exportSaveFileDialog.Filter = "Microsoft Office Excel Workbook(*.xls)|*.xls";

if (DialogResult.OK == exportSaveFileDialog.ShowDialog())
{
string fullFileName = exportSaveFileDialog.FileName;

currentWorkbook.SaveAs(fullFileName, Microsoft.Office.Interop.Excel.XlFileFormat.xlWorkbookNormal, System.Reflection.Missing.Value, misValue, false, false, Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlNoChange, Microsoft.Office.Interop.Excel.XlSaveConflictResolution.xlUserResolution, true, misValue, misValue, misValue);
currentWorkbook.Saved = true;
MessageBox.Show("The export was successful", "Export to Excel", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "Exception", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
finally
{
if (excelApp != null)
{
excelApp.Quit();
excelApp = null;
}
}
}

最佳答案

方式一

currentWorksheet.Cells[rowIndex + 3, cellIndex + 1] = 
"'0" + dgRow.Cells[cellIndex].Value;

方式二

Case 1

我相信您的数据网格单元格可以有不同长度的数字,例如 000123400123。因此,如果您想保留数据网格中的数字,则不要设置像 0000000 这样的前缀格式。使用方法 1 或单独格式化单元格。我能想到的另一种方法是将 DG 单元格的值存储在 int 变量中,然后在考虑 DG 单元格值的长度后使用 .PadLeft。因此像 0000123 这样的数字的长度为 7。然而,在 int 变量中,它将存储为 123(长度 - 3)。您所要做的就是使用 .PadLeft7-3=4 zeros,然后将结果字符串存储在 excel 单元格中。

Case 2

如果您希望所有数字以相同长度存储,格式为 00000000,请使用此代码。

//~~> This will format Column 1 with "00000000"
currentWorksheet.Columns[1].NumberFormat = "00000000";

PS:在 Excel 2010 + VS 2010 Ultimate 中测试

关于c# - excel中如何在数字前输入零?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19469227/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com