使用OLE DB从标准格式化的Excel字段中获取整数值

时间:2017-07-20 15:17:58

标签: c# excel oledb type-conversion

我使用OLE DB将excel文件转换为制表符分隔的文本文件。在这个excel文件中可以是GTIN或EAN代码。如果excel列被格式化为标准,它将例如54260279477798切换为5,42602E + 13,这与我到达我的文件的字符串相同。

我的OLE DB连接字符串如下所示:

Provider=Microsoft.ACE.OLEDB.12.0;
Data Source={filename};
Extended Properties="Excel 12.0 Xml;HDR=NO;IMEX=1";

我将代码放到字符串中的代码如下所示:

for (int x = 0; x < tDataTable.Rows.Count; x++)
{
    string tRowString = String.Empty;

    for (int y = 0; y < tDataTable.Columns.Count; y++)
    {
        if (y == maxColumns)
        {
            tRowString += tDataTable.Rows[x][y].ToString();
        }
        else
        {
            tRowString += tDataTable.Rows[x][y].ToString() + "\t";
        }
    }
    tRowString = Regex.Replace(tRowString, @"(?<!\r)\n", "");
    tStreamWriter.WriteLine(tRowString);
}

我使用

访问工作表
tCommand = new OleDbCommand("SELECT * FROM [" + "Tabelle1" + "$]", tConnection)
{
    CommandType = CommandType.Text
};

是否有提取值时重新格式化值?

1 个答案:

答案 0 :(得分:0)

如果我的朋友向我展示了一个解决方案。我不得不解析它加倍。

string tColumnString = String.Empty;

tColumnString = tDataTable.Rows[x][y].ToString();

if (tColumnString.Contains("e+013") || tColumnString.Contains("e+012") || tColumnString.Contains("e+011") || tColumnString.Contains("e+07"))
{
    double tColumnDouble = 0;
    if (double.TryParse(tColumnString, out tColumnDouble))
    {
        Console.WriteLine("Double konvertiert: " + tColumnDouble.ToString());
        tColumnString = Convert.ToString(tColumnDouble);
    }
}

我希望这也可以帮助其他人。