通过将单元格值转换为字符串格式将Excel数据导入数据表

时间:2019-02-18 12:21:44

标签: c# excel datatable oledb c#-3.0

我正在尝试将excel文件读取到数据表中,并且成功获取了数据,但是在将数据读取到数据表中时十进制值被截断了

因此,如果我的单元格值为64.00,那么我在数据表中得到的是64,而不是64.00。

我尝试将excel单元格值格式设置为“文本”,但是没有用。

下面是我正在处理的代码。

 public static DataTable GetDataTableFromCsv(string path, bool 
 isFirstRowHeader)
    {
        string header = isFirstRowHeader ? "Yes" : "No";

        string pathOnly = System.IO.Path.GetDirectoryName(path);
        string fileName = System.IO.Path.GetFileName(path);

        string sql = @"SELECT * FROM [" + fileName + "]";

        using (OleDbConnection connection = new OleDbConnection(
                  @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + pathOnly +
                  ";Extended Properties=\"Text;HDR=" + header + "\""))
        using (OleDbCommand command = new OleDbCommand(sql, connection))
        using (OleDbDataAdapter adapter = new OleDbDataAdapter(command))
        {
            DataTable dataTable = new DataTable();
            dataTable.Locale = CultureInfo.CurrentCulture;
            adapter.Fill(dataTable);
            return dataTable;
        }
    }

1 个答案:

答案 0 :(得分:0)

如果您还没有这样做,可以尝试使用Worksheet.Cell [x,y] .Text获取单元格的内容。 这会强制将输出转换为字符串文字,因此在读取时会跳过截断