从.xlsx而不是.xls导入时,DataTable包含带有Hashtags的字符串

时间:2015-06-11 12:46:15

标签: c# string excel formatting oledb

我正在开发一个ASP.NET MVC应用程序,您可以在其中上传Excel文件。

这些文件包含几列,在一列中我们有一些日期,格式不同。日期有两种不同的格式,第一种是M/dd/yy h:mm:ss tt常规格式),第二种是自定义格式dd.mm.yyyy hh:mm

当我使用.xlsx文件时,使用第二种格式的单元格在导入########之后包含为String值,这是完全错误的。当我将自定义格式更改为预定义格式时,如Text,导入工作正常。

无论如何,当我导出 .xlsx文件到.xls 然后执行导入时,自定义格式的单元格的值是正确的。

有人在任何时候遇到过同样的问题吗?有人可以帮我解决这个问题吗?

我需要使用.xlsx文件来完成这一切,因为在上传之前不需要手动编辑文件。

表示“完整性”,这是我的代码,它使用一个表从excel文件导入到dataSet:

public DataSet ExcelToDataSet(object value, String path)
{
    String firstDatasheetName = "";
    String connectionString = BuildConnectionString(value, path);
    OleDbConnection oleConnection = new OleDbConnection(connectionString);

    if (oleConnection.State == System.Data.ConnectionState.Closed)
    {
        oleConnection.Open();
    }

    DataTable dataSchema = oleConnection.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);
    if (dataSchema == null | dataSchema.Rows.Count < 0)
    {
        firstDatasheetName = "";
        // throw new Exception("Can´t access the first Datasheet in your Excel. Please check if there is one!");
    }
    else
    {
        firstDatasheetName = dataSchema.Rows[0]["TABLE_NAME"].ToString();
    }
    String query = "Select * from [" + firstDatasheetName + "]";

    OleDbCommand oleCmd = new OleDbCommand(query, oleConnection);//OleDbCommand
    OleDbDataAdapter oleDA = new OleDbDataAdapter(oleCmd);
    DataSet dataSet = new DataSet();
    oleDA.Fill(dataSet);
    oleDA.Dispose();
    oleConnection.Close();
    oleConnection.Dispose();
    return (dataSet);
}

我的连接字符串是:

Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\\Users\\user\\Documents\\v0-0-5\\project\\project\\App_Data\\Data\\Import\\file.xlsx;Extended Properties=\"Excel 12.0;HDR=YES;IMEX=1\"

我感谢任何帮助!

1 个答案:

答案 0 :(得分:0)

当列太窄时,它会对数字值(例如日期)执行此操作。使列更宽,或文本更小,是否可以修复它?