首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在C#中处理Excel文件

在C#中处理Excel文件
EN

Stack Overflow用户
提问于 2011-05-26 07:18:28
回答 2查看 1.9K关注 0票数 0

我有2000和2003格式的Excel文件。我需要通过C#代码将它们导入到access DB中。我已经编写了一个将文件读入数据表的方法。无论我使用哪种连接字符串(我已经检查过这个主题的其他帖子),我仍然会收到"Table is is not in the which format“错误。有人能给我解释一下我哪里做错了吗?

代码语言:javascript
复制
        public static DataSet ParseExcel(string excelFile)
        {
            string sheetName = Path.GetFileNameWithoutExtension(excelFile);
            string excelQuery = @"SELECT * FROM [" + sheetName + "]";
            string excelConnctionString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + "" + excelFile + "" +
                                    @";Extended Properties=" + "" + @"Excel 8.0;HDR=Yes;" + "";
            if(File.Exists(excelFile))
            {
                var myConnection = new OleDbConnection(excelConnctionString);
                myConnection.Open();
                var myCommand = new OleDbDataAdapter(excelQuery, excelConnctionString);
                myCommand.TableMappings.Add("Table", "TestTable");
                var dtSet = new DataSet();
                myCommand.Fill(dtSet);
                myConnection.Close();
                return dtSet;                
            }
            return null;
        }
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-01-09 21:22:08

仔细阅读此代码示例,并尝试了解其工作流程。根据您的需求,您可以很容易地编写任何访问excel数据的程序。

1.这里我只有一个上传字段,以便选择.aspx文件中的Excel文件

代码语言:javascript
复制
<asp:FileUpload ID="Upload_File" runat="server" />
<asp:Button ID="Upload_Button" runat="server"  Text="Upload" onclick="btnUpload_Click"/>
<asp:GridView ID="Gridview_Name" runat="server">
</asp:GridView>

  1. 现在让我们看看代码隐藏文件(.aspx.cs文件)

中发生了什么

protected void Upload_Button_Click(object sender,EventArgs e) { string connectionString = "";if (Upload_File.HasFile) //检查是否选择上传文件

代码语言:javascript
复制
{
       //getting name of the file
 string fileName = Path.GetFileName(Upload_File.PostedFile.FileName);  
//getting extension of the file (for checking purpose - which type .xls or .xlsx)
string fileExtension = Path.GetExtension(Upload_File.PostedFile.FileName);  
string fileLocation = Server.MapPath("" + fileName);    //exact location of the excel files
Upload_File.SaveAs(fileLocation);
 //Check whether file extension is xls or xslx

 if (fileExtension == ".xls")
 {
connectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + fileLocation + ";Extended Properties=\"Excel 8.0;HDR=Yes;IMEX=2\"";
     }
 else if (fileExtension == ".xlsx")
    {
   connectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + fileLocation + ";Extended Properties=\"Excel 12.0;HDR=Yes;IMEX=2\"";
      }   
     //Create OleDB Connection and OleDb Command

                    OleDbConnection con = new OleDbConnection(connectionString);
                    OleDbCommand cmd = new OleDbCommand();
                    //cmd.CommandType = System.Data.CommandType.Text;
                    cmd.Connection = con;
                    OleDbDataAdapter dAdapter = new OleDbDataAdapter(cmd);
                    DataTable dtExcelRecords = new DataTable();
                    con.Open();
DataTable dtExcelSheetName = con.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);
string getExcelSheetName = dtExcelSheetName.Rows[0]["Table_Name"].ToString();
                    cmd.CommandText = "SELECT * FROM [" + getExcelSheetName + "]";
                    dAdapter.SelectCommand = cmd;
                    dAdapter.Fill(dtExcelRecords);
                    con.Close();
                    Gridview_Name.DataSource = dtExcelRecords;
                    GridView_Name.DataBind();
                }
                else
                {
                    Response.Write("Please Select a File to extract data ");
                }
            }

分步说明:

  • 我们得到文件名,扩展名,位置。打开连接并检查它是类型(.xls或.xlsx -特别是对于excel of 2003或根据上一步的其他formats).
  • Set连接字符串。
  • connection
  • store oledb connection
  • 创建必要的数据适配器和数据表
  • 在数据表实例中打开数据表(存储excel中的数据的位置)
  • 通过从当前表中获取表的名称将其存储在字符串中
  • 用我们的数据表将网格的connection
  • Set数据源绑定为输出数据表。
  • 将其与我们的网格绑定。

...And我们完成了!

希望能有所帮助。

票数 2
EN

Stack Overflow用户

发布于 2011-05-26 07:25:32

尝尝这个

代码语言:javascript
复制
OLEDB;Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\MyExcel.xls;Extended Properties="Excel 8.0;HDR=Yes;IMEX=1";
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6132058

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档