Excel以普通文本格式导出

时间:2018-05-30 14:00:39

标签: c# excel datatable

我目前正在编写一个包含读取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在任何地方都记得这些前导零?)

0 个答案:

没有答案