Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Database 将db作为所有文本读取_Database_Overriding_Xlsx - Fatal编程技术网

Database 将db作为所有文本读取

Database 将db作为所有文本读取,database,overriding,xlsx,Database,Overriding,Xlsx,我正在读一个xlsx文件作为数据库来做一些工作 我注意到它以int和date的形式读取一些feild,尽管我只是希望它以文本的形式出现。是否仍有覆盖此功能的方法 代码如下 (请随时指出我可以用代码做得更好的任何事情) 在每个单元格值前面添加一个“”(撇号)。这将告诉Excel“即使它看起来像数字/日期/任何东西,也要将其视为文本” 不是你想要的吗?然后不要使用DB连接器,因为它已严重损坏。您会注意到,当您有一个包含混合单元格的列时。在这种情况下,DB驱动程序将查看前8行,并将该类型设置为它找到的

我正在读一个xlsx文件作为数据库来做一些工作

我注意到它以int和date的形式读取一些feild,尽管我只是希望它以文本的形式出现。是否仍有覆盖此功能的方法

代码如下

(请随时指出我可以用代码做得更好的任何事情)

在每个单元格值前面添加一个“
(撇号)。这将告诉Excel“即使它看起来像数字/日期/任何东西,也要将其视为文本”

不是你想要的吗?然后不要使用DB连接器,因为它已严重损坏。您会注意到,当您有一个包含混合单元格的列时。在这种情况下,DB驱动程序将查看前8行,并将该类型设置为它找到的大多数类型,并为该列中不适合的任何类型返回NULL。通过入侵你的注册表


而是使用OLE API打开工作簿,然后从那里开始,逐行读取,根据需要转换数据(这应该包含从C#访问Excel的所有可能方法,以及可能遇到的所有错误和问题).

您是否有一个读取xls或xlsx的旧api的好例子?您可以在这里找到Excel api:PS:它是OLE,而不是“旧”:-)
  private DataSet ExceltoDT(OpenFileDialog dialog)
    {
        try
        {
            string connst = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + dialog.FileName + ";Extended Properties=\"Excel 12.0 Xml;HDR=NO\";";
            string sheet = "Sheet1$";
            string strSQL = "SELECT * FROM [" + sheet + "]";
            //string Table = "081710";
            OleDbConnection xlsdb = new OleDbConnection(connst);
            xlsdb.Open();
            OleDbDataAdapter adp = new OleDbDataAdapter(strSQL, xlsdb);
            DataSet ds2 = new DataSet();
            adp.Fill(ds2);


            adp.Dispose();
            xlsdb.Close();
            xlsdb.Dispose();

            return ds2;
        }
        catch (StackOverflowException stack_ex2)
        {
            MessageBox.Show("(2007 Excel file) Stack Overflowed!" + "\n" + stack_ex2.Message);
            return null;

        }
        catch (OleDbException ex_oledb2)
        {
            MessageBox.Show("An OleDb Error Thrown!" + "\n" + ex_oledb2.Message);
            return null;
        }
    }