vercesi
asked on
How to import Excel worksheet to DataGridView keeping cell colors
Hi there
I am developing a small app to help manage huge Excel worksheets.
These worksheets have multiple cells colored within.
I am loading the worksheets to a DataGridView as show below but I want to keep the cell colors.
Any ideias on how to achieve this? Would help if I didn't have to cycle all cells as the worksheets have near to on hundred columns and close to four hundred rows.
Regards
I am developing a small app to help manage huge Excel worksheets.
These worksheets have multiple cells colored within.
I am loading the worksheets to a DataGridView as show below but I want to keep the cell colors.
Any ideias on how to achieve this? Would help if I didn't have to cycle all cells as the worksheets have near to on hundred columns and close to four hundred rows.
Regards
Dim connectionStringTemplate As String = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Extended Properties=""Excel 12.0;HDR=Yes;IMEX=1"""
Dim connectionString As String = String.Format(connectionStringTemplate, sFileName)
Dim sqlSelect As String = "SELECT * FROM [Sheet1$];"
' Load the Excel worksheet into a DataTable
Dim workbook As DataSet = New DataSet()
Dim excelAdapter As System.Data.Common.DataAdapter = New System.Data.OleDb.OleDbDataAdapter(sqlSelect, connectionString)
Try
excelAdapter.Fill(workbook)
Dim worksheet As DataTable = workbook.Tables(0)
dgv.DataSource = worksheet
Catch
'MANAGE EXCEPTION
End Try
ASKER
Just tried your solution but got an error:
"Old format or invalid type format"
Do I need to add some expecific reference?
"Old format or invalid type format"
Do I need to add some expecific reference?
Hmm. I just noticed in your code you are using XL2007. If you add a reference to "Microsoft Excel 12.0 Object Library", the below should work.
If not, it'd help to know which line caused the error.
If not, it'd help to know which line caused the error.
Dim xlApp As New Microsoft.Office.Interop.Excel.Application
Dim xlWB As Microsoft.Office.Interop.Excel.Workbook = xlApp.Workbooks.Open("C:\Path\File.xls")
Dim xlWS As Microsoft.Office.Interop.Excel.Worksheet = xlWB.Worksheets("Sheet1")
DataGridView1.RowCount = xlWS.UsedRange.Rows.Count
DataGridView1.ColumnCount = xlWS.UsedRange.Columns.Count
Try
For r As Integer = 1 To xlWS.UsedRange.Rows.Count
For c As Integer = 1 To xlWS.UsedRange.Columns.Count
With DataGridView1(c - 1, r - 1)
.Value = xlWS.UsedRange.Cells(r, c).Value
.Style.BackColor = ColorTranslator.FromOle(xlWS.Usedrange.Cells(r, c).Interior.Color)
End With
Next
Next
Catch ex As Exception
'empty catch
End Try
xlWS = Nothing
xlWB.Close(False)
xlWB = Nothing
xlApp.Quit()
xlApp = Nothing
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER
Still got the same error.
I have googled the error and found this:
"In some deployment scenarios, you must know the locale identifier (LCID) for a language in order to install the correct MUI Pack."
I will try the solution provided (installing MUI Pack) and get back on this.
I have googled the error and found this:
"In some deployment scenarios, you must know the locale identifier (LCID) for a language in order to install the correct MUI Pack."
I will try the solution provided (installing MUI Pack) and get back on this.
ASKER
I've got it working using:
System.Threading.Thread.Cu rrentThrea d.CurrentC ulture = System.Globalization.Cultu reInfo.Cre ateSpecifi cCulture(" en-US")
Thanks you
System.Threading.Thread.Cu
Thanks you
It's impossible to determine the cell color through ADO.Net, so unfortunately the only way to color the DatGridView cells is to iterate through each cell in the imported range. Something like the below code snippet. Yes, it could take a while, but that is the only option you have for importing the cell colors.
Wayne
Open in new window