May 11, 2011

Read and write Excel File in Asp.net



In this article, we will see how to display data from an Excel spreadsheet using ASP.NET. We will connect to a Microsoft Excel workbook using the OLEDB.NET data provider, extract data and then display the data in a GridView. Let us get started.
Step 1: Open Visual Studio > File > New >Website > Under Templates, click ASP.NET WebSite and choose either Visual C# or Visual Basic as the language. Select a location and click Ok.
Step 2: We will create two excel sheets and add them to the project. One excel sheet will be created in Office 2003(.xls) and the other one using Office 2007(.xlsx). Add 4 columns called EID, EName, Age and City to the ‘Sheet1’. Also add some data into the columns. Once these excel files are created, add them to your project. To add them to the project, right click project > Add Existing Item > Add the two excel files.
Step 3: We will now create a web.config file to store the connection string information. Right click project > Add New Item > Web.config. Add the following entries to the file
      <connectionStrings>
            <add name="xlsconnectionString="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=Sample1.xls;Extended Properties=Excel 8.0"/>
            <add name="xlsxconnectionString="Provider=Microsoft.ACE.OLEDB.12.0;Data Source=Sample.xlsx;Extended Properties=Excel 12.0"/>
      connectionStrings>
As you can observe, the connection string for xlsx (Excel 2007) contains Microsoft.ACE.OLEDB.12.0 as the provider. This is the new Access database engine OLE DB driver and is also capable of reading Excel 2003.
Step 4: Add a GridView to the Default.aspx page. We will extract  data from the excel file and bind it to the GridView.
Step 5: Let us now create a connection to the excel file and extract data from it. Before that add a reference to System.Data.OleDb;
C#
    protected void Page_Load(object sender, EventArgs e)
    {
        string connString = ConfigurationManager.ConnectionStrings["xls"].ConnectionString;
        // Create the connection object
        OleDbConnection oledbConn = new OleDbConnection(connString);
        try
        {
            // Open connection
            oledbConn.Open();
            // Create OleDbCommand object and select data from worksheet Sheet1
            OleDbCommand cmd = new OleDbCommand("SELECT * FROM [Sheet1$]", oledbConn);
            // Create new OleDbDataAdapter
            OleDbDataAdapter oleda = new OleDbDataAdapter();
            oleda.SelectCommand = cmd;
            // Create a DataSet which will hold the data extracted from the worksheet.
            DataSet ds = new DataSet();
            // Fill the DataSet from the data extracted from the worksheet.
            oleda.Fill(ds, "Employees");
            // Bind the data to the GridView
            GridView1.DataSource = ds.Tables[0].DefaultView;
            GridView1.DataBind();
        }
        catch
        {
        }
        finally
        {
            // Close connection
            oledbConn.Close();
        }     
    }
VB.NET
      Protected Sub Page_Load(ByVal sender As ObjectByVal e As EventArgs)
            Dim connString As String = ConfigurationManager.ConnectionStrings("xls").ConnectionString
            ' Create the connection object
            Dim oledbConn As OleDbConnection = New OleDbConnection(connString)
            Try
                  ' Open connection
                  oledbConn.Open()
                  ' Create OleDbCommand object and select data from worksheet Sheet1
                  Dim cmd As OleDbCommand = New OleDbCommand("SELECT * FROM [Sheet1$]", oledbConn)
                  ' Create new OleDbDataAdapter
                  Dim oleda As OleDbDataAdapter = New OleDbDataAdapter()
                  oleda.SelectCommand = cmd
                  ' Create a DataSet which will hold the data extracted from the worksheet.
                  Dim ds As DataSet = New DataSet()
                  ' Fill the DataSet from the data extracted from the worksheet.
                  oleda.Fill(ds, "Employees")
                  ' Bind the data to the GridView
                  GridView1.DataSource = ds.Tables(0).DefaultView
                  GridView1.DataBind()
            Catch
            Finally
                  ' Close connection
                  oledbConn.Close()
            End Try
      End Sub
All set!! Run the application and see the data getting displayed in the GridView. If you want to target the Excel 2007 sheet, just change xls to xlsx in the ConfigurationManager.ConnectionString.
I hope this article was useful and I thank you for viewing it.

Google Finally Delivers On Promise Of Admin-Free Chrome Frame Installs For IE


Today at Google I/O in San Francisco, Google developers Amit Joshi and Alex Russell took the stage at a breakout session to announce an important milestone: a version of Chrome Frame that doesn’t require admin rights to install.
While this might not jump out at you as a huge thing, it’s big news for millions of users stuck working at offices or schools with older machines where admins won’t allow them to upgrade to newer, modern browsers. And some 30 percent of these users were not even able to install plug-ins for IE. Now there’s a way around that with the new dev build of Chrome Frame. You can install this within IE without needing admin access.
Huge.
Google has actually been working on this problem for months. While Chrome Frame was always a great idea for helping the world ween itself off IE6, 7, and 8, the admin issue remained a large one as users couldn’t do much without this access to install the plug-in. Google has finally figured out a way around that.
Russell was quick to note however that they also offer a range of tools for admins to use if they choose to, in order to set boundaries for Chrome Frame. But the admin issue was “a major roadblock” to the quick iterations that the entire Chrome team loves to do.
So how did the team get around this problem? “Let’s talk backstage,” Joshi said with a big smile when asked this question. He said it’s a bit of a technical discussion. Russell said at a high level it was just about getting the technology to work in the browser itself rather than being seen as a traditional plug-in.
When asked what Microsoft thought of this, neither Joshi nor Russell would comment. That probably says all you need to know right there.
Again, this new feature is a part of the new dev build of Chrome Frame right now. It will be tested here and then roll out to the beta channel and then the stable channel eventually.