我目前正在编写一个包含读取excel文件的系统。我想阅读这个excel文件,并可能将其吐出到csv中。但是,我遇到的问题是它保留了excel使用的格式。例如,我有一个很长的数字,在Excel中显示为3.9151 + E15,并且它会像这样读取它。当我突出显示excel中的单元格时,它显示实数“3915100000026840”。这是我想收到的号码。它还为我不想要的日期添加时间戳。它增加了00:00 00:00:000或类似于17/05/2018的东西,这就是我想要的。所以基本上,我想从这个excel电子表格中检索实际文本值。
我现在的代码是
public static DataTable READExcel(string path)
{
Microsoft.Office.Interop.Excel.Application objXL = null;
Microsoft.Office.Interop.Excel.Workbook objWB = null;
objXL = new Microsoft.Office.Interop.Excel.Application();
objWB = objXL.Workbooks.Open(path);
Microsoft.Office.Interop.Excel.Worksheet objSHT = objWB.Worksheets[1];
int rows = objSHT.UsedRange.Rows.Count;
int cols = objSHT.UsedRange.Columns.Count;
DataTable dt = new DataTable();
int noofrow = 1;
for (int c = 1; c <= cols; c++)
{
string colname = objSHT.Cells[1, c].Value.ToString();
dt.Columns.Add(colname);
noofrow = 2;
}
for (int r = noofrow; r <= rows; r++)
{
DataRow dr = dt.NewRow();
for (int c = 1; c <= cols; c++)
{
dr[c - 1] = objSHT.Cells[r, c].Value.ToString();
}
dt.Rows.Add(dr);
}
objWB.Close();
objXL.Quit();
return dt;
}
(另一个有点相关但稍微不相关的问题,我有一个csv开始,其值为'0003915100000026845'。当我将此csv转换为excel文件时,它将其更改为上面引用的值。 excel在任何地方都记得这些前导零?)