Excel 單元格存長數字(>11 位)默認顯示為科學計數法(如 1.23E+17),導致報表不可讀。
using Excel = Microsoft.Office.Interop.Excel;
using System.Reflection;
public void FixNumberFormat()
{
Excel.Application app = null;
Excel._Workbook wb = null;
Excel._Worksheet ws = null;
Excel.Range rng = null;
object opt = Missing.Value;
try
{
app = new Excel.Application();
wb = app.Workbooks.Open(@"e:\1.xls", opt, opt, opt, opt, opt, opt, opt, opt, opt, opt, opt, opt, opt);
ws = (Excel._Worksheet)wb.Worksheets[1];
rng = ws.get_Range("A1", opt);
// 關鍵:設置為文本/通用格式,# 表示按原數字顯示
rng.NumberFormatLocal = "#";
wb.SaveAs(@"e:\22.xls", opt, opt, opt, opt, opt,
Excel.XlSaveAsAccessMode.xlNoChange, opt, opt, opt, opt, opt);
}
catch (Exception ex) { MessageBox.Show(ex.Message); }
finally
{
wb?.Close(opt, opt, opt);
app?.Workbooks.Close();
app?.Quit();
Marshal.ReleaseComObject(wb);
Marshal.ReleaseComObject(app);
wb = null; app = null;
GC.Collect(); GC.WaitForPendingFinalizers();
}
}
| 格式字符串 | 效果 |
|---|---|
# | 按原數字顯示,不科學計數法 |
0 | 同 #,但強制顯示位數不足補 0 |
@ | 文本格式,完全按輸入字符串顯示 |
#,##0.00 | 千分位分隔,保留兩位小數 |
yyyy-mm-dd | 日期格式 |