Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/23.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
C# OleDbDataAdapter和Excel格式化带有数字的单元格时出错_C#_Excel - Fatal编程技术网

C# OleDbDataAdapter和Excel格式化带有数字的单元格时出错

C# OleDbDataAdapter和Excel格式化带有数字的单元格时出错,c#,excel,C#,Excel,你好,我有以下代码: OleDbConnection con = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=test.xls;Extended Properties=\"Excel 8.0;Imex=1;HDR=False;\""); OleDbDataAdapter da = new("select * from [" + TableName + "$]", con);

你好,我有以下代码:

        OleDbConnection con = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=test.xls;Extended Properties=\"Excel 8.0;Imex=1;HDR=False;\"");
        OleDbDataAdapter da = new("select * from [" + TableName + "$]", con);
        DataSet dsData = new System.Data.DataSet();

        con.Open();

        da.Fill(dsData); 

        dataGridView1.DataSource = dsData.Tables[0];
我尝试从Excel2007SP2创建的文件中读取数据

        OleDbConnection con = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=test.xls;Extended Properties=\"Excel 8.0;Imex=1;HDR=False;\"");
        OleDbDataAdapter da = new("select * from [" + TableName + "$]", con);
        DataSet dsData = new System.Data.DataSet();

        con.Open();

        da.Fill(dsData); 

        dataGridView1.DataSource = dsData.Tables[0];
如果我的Excel文件test.xls已关闭,则带有数字的单元格格式将显示在dataGridView1的表中

        OleDbConnection con = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=test.xls;Extended Properties=\"Excel 8.0;Imex=1;HDR=False;\"");
        OleDbDataAdapter da = new("select * from [" + TableName + "$]", con);
        DataSet dsData = new System.Data.DataSet();

        con.Open();

        da.Fill(dsData); 

        dataGridView1.DataSource = dsData.Tables[0];
如下所示:用一个逗号位格式化的5,0显示为5,0

        OleDbConnection con = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=test.xls;Extended Properties=\"Excel 8.0;Imex=1;HDR=False;\"");
        OleDbDataAdapter da = new("select * from [" + TableName + "$]", con);
        DataSet dsData = new System.Data.DataSet();

        con.Open();

        da.Fill(dsData); 

        dataGridView1.DataSource = dsData.Tables[0];
如果打开了我的Excel文件test.xls,则带有数字的单元格格式不正确

        OleDbConnection con = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=test.xls;Extended Properties=\"Excel 8.0;Imex=1;HDR=False;\"");
        OleDbDataAdapter da = new("select * from [" + TableName + "$]", con);
        DataSet dsData = new System.Data.DataSet();

        con.Open();

        da.Fill(dsData); 

        dataGridView1.DataSource = dsData.Tables[0];
像这样:5,0显示为5

        OleDbConnection con = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=test.xls;Extended Properties=\"Excel 8.0;Imex=1;HDR=False;\"");
        OleDbDataAdapter da = new("select * from [" + TableName + "$]", con);
        DataSet dsData = new System.Data.DataSet();

        con.Open();

        da.Fill(dsData); 

        dataGridView1.DataSource = dsData.Tables[0];
Excel 2007 SP2 Microsoft Visual C 2008 .Net Framework 2.0

        OleDbConnection con = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=test.xls;Extended Properties=\"Excel 8.0;Imex=1;HDR=False;\"");
        OleDbDataAdapter da = new("select * from [" + TableName + "$]", con);
        DataSet dsData = new System.Data.DataSet();

        con.Open();

        da.Fill(dsData); 

        dataGridView1.DataSource = dsData.Tables[0];

感谢您的帮助

我认为您无法使用OleDB设置格式,我认为这只关心数据。如果您想按自己的意愿格式化数据,您可能必须求助于Excel Automation,在Excel Automation中,您可以完全控制数据的格式,使用OleDB写入数据,然后使用Automation打开文件并设置格式可能会更有效

        OleDbConnection con = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=test.xls;Extended Properties=\"Excel 8.0;Imex=1;HDR=False;\"");
        OleDbDataAdapter da = new("select * from [" + TableName + "$]", con);
        DataSet dsData = new System.Data.DataSet();

        con.Open();

        da.Fill(dsData); 

        dataGridView1.DataSource = dsData.Tables[0];
如果你想沿着这条路线走下去,这里有一个例子:

        OleDbConnection con = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=test.xls;Extended Properties=\"Excel 8.0;Imex=1;HDR=False;\"");
        OleDbDataAdapter da = new("select * from [" + TableName + "$]", con);
        DataSet dsData = new System.Data.DataSet();

        con.Open();

        da.Fill(dsData); 

        dataGridView1.DataSource = dsData.Tables[0];
但请注意,如果在服务器上运行,则不建议这样做

        OleDbConnection con = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=test.xls;Extended Properties=\"Excel 8.0;Imex=1;HDR=False;\"");
        OleDbDataAdapter da = new("select * from [" + TableName + "$]", con);
        DataSet dsData = new System.Data.DataSet();

        con.Open();

        da.Fill(dsData); 

        dataGridView1.DataSource = dsData.Tables[0];