求C#高手,Excel中单元格显示的是日期格式,当我读取到DataGridView中时,就变成了文本格式了

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了求C#高手,Excel中单元格显示的是日期格式,当我读取到DataGridView中时,就变成了文本格式了相关的知识,希望对你有一定的参考价值。

Excel中单元格显示的是日期格式,当我读取到DataGridView中时,就变成了文本格式了,这个要怎么解决呢?
我用到的代码:
DataSet ds = GetWorkbook(Application.StartupPath + @"\App_Data\Book1.xls");

public static DataSet GetWorkbook(string filename)

DataSet ds = new DataSet();
Excel.Application app = new Excel.Application(); //初始化Excel对象
app.Visible = false;
app.DisplayAlerts = false;
object missing = System.Reflection.Missing.Value;
Excel.Workbook wb;
try

wb = app.Workbooks.Open(filename, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing);

catch (Exception ex)

MessageBox.Show(ex.ToString());
throw;

foreach (Excel.Worksheet ws in wb.Sheets)

ds.Tables.Add(GetWorksheet(ws));

app.Workbooks.Close();
app.Quit();
return ds;


public static DataTable GetWorksheet(Excel.Worksheet ws)

DataTable dt = new DataTable();
dt.TableName = ws.Name;

int row = ws.UsedRange.Rows.Count + 1;
int col = ws.UsedRange.Columns.Count + 1;

for (int c = 1; c < col; c++)

dt.Columns.Add("F" + c);


for (int r = 1; r < row; r++)

DataRow newRow = dt.NewRow();
for (int c = 1; c < col; c++)

newRow[c - 1] = ((Excel.Range)ws.Cells[r, c]).Value2; //从这里得到的值

dt.Rows.Add(newRow);

我们要求这样操作Excel,不能用SQL的方式,这个主要是能把每个Sheet都要读出来,就像图2的那个下拉框里面的Sheet就是读取出来的
return dt;

现在我用newRow[c - 1] = ((Excel.Range)ws.Cells[r, c]).text解决了问题,但新的问题又来了,比如显示时间内容太长的单元格的值显示到DataGridView中会全部是“#####”

设置列宽根据内容自动调整大小 worksheet.Columns.EntireColumn.AutoFit();希望对你有用。 参考技术A 出现####是因为列宽不够宽,只要把它加宽就可以了。追问

是DataGridVIew中出现“#######”,不是在编辑Excel中出现的

我试了下加宽Excel中的列,能解决问题,但是这是为什么呢,我不可能每增加一个Excel就要去慢慢增加它的列,有没有通用的解决方法

以上是关于求C#高手,Excel中单元格显示的是日期格式,当我读取到DataGridView中时,就变成了文本格式了的主要内容,如果未能解决你的问题,请参考以下文章

怎么使用excel填写时间2010-10-12

java生成csv格式文件后,用excel打开,单元格显示问题

excel表格里只显示了时间,怎样把隐藏的日期也显示出来?

C# 读取Excel日期格式

我的excel表格打开的单元格格式默认为日期,请问如何让excel表格打开的单元格格式默认为常规

怎么把EXCEL表格日期2017-02-03 11:59:12 自定义格式改为常规且单元格仍显示那个日期呢?