PDA

View Full Version : مشکل در باز کردن فایل های اکسل 2007 در vb.net 2005



safasoft
یک شنبه 01 اردیبهشت 1387, 12:56 عصر
من با کدی در نرم افزار خود فایل های اکسل با پسوند xls را باز می کردم و از آنها اطلاعات استخراج می نمودم حال این کد برای باز کردن فایل های اکسل 2007 با پسوند xlsx جواب نمی دهد .
از کمکتون ممنون می شم .
کد قبلی :


provider=microsoft.jet.oledb.4.0;data source=" + addresssanad + "; Extended Properties=Excel 8.0;

ضمنا من نی خوام فرمت xlsx را به xls تبدیل کنم .

علیرضا مداح
یک شنبه 01 اردیبهشت 1387, 13:20 عصر
سلام ،
شما میبایست کانکشن استرینگ را به صورت زیر تنظیم کنید :


"Provider=Microsoft.ACE.OLEDB.12.0;
FONT-SIZE: 10pt; COLOR: #a31515; FONT-FAMILY: 'Courier New'">Data Source=C:\Members.xlsx;Extended
FONT-SIZE: 10pt; COLOR: #a31515; FONT-FAMILY: 'Courier New'">Properties=""Excel 12.0;HDR=YES;""";

برای اطلاعات بیشتر مقاله زیر را مطالعه نمایید :
How to read MS Excel 2007 using a connection string in C# (http://www.codeproject.com/KB/database/ReadExcel07.aspx)

در ضمن برای تبدیل فایلهای xlsx به xls میتوانید در نرم افزار Excel 2007 و در پنجره Save As ، نوع فایل را بر روی Excel 97-2003 Document قرار دهید.

ReikiGrandMaster
چهارشنبه 11 اردیبهشت 1387, 15:44 عصر
سلام
من مشكلي در همين رابطه دارم - جستجوي گوگل نتوانستم راه حل مناسبي پيدا كنم.
من نياز دارم كه اطلاعات موجود در يك DataGridView رو كه در WinForm استفاده مي كنم در يك فايل Excel خروجي بگيرم.
از زبان برنامه نويسي VB.Net 2005 استفاده ميكنم
از بانك اطلاعاتي SQL 2005 و از Data Table براي پركردن DataGridView استفاده ميكنم.
متشكر مي شم اگه بتونيد راهنمايي كنيد.


Private DataTbl AsNew DataTable
PrivateSub Save2Excel()
Dim filename AsString
Dim col, row AsInteger
Try
If DataTbl.Rows.Count = 0 Then
ExitSub
EndIf
Catch ex As Exception
MsgBox(ex.Message)
EndTry
Dim Excel AsObject = CreateObject("Excel.Application")
If Excel IsNothingThen
MsgBox("It appears that Excel is not installed on this machine. This operation requires MS Excel to be installed on this machine.", MsgBoxStyle.Critical)
Return
EndIf

'Export to Excel process
Try
With Excel
.SheetsInNewWorkbook = 1
.Workbooks.Add()
.Worksheets(1).Select()
Dim i AsInteger = 1
For col = 0 To DataTbl.Columns.Count - 1
.cells(1, i).value = DataTbl.Columns(col).ColumnName
.cells(1, i).EntireRow.Font.Bold = True
i += 1
Next
i = 2
Dim k AsInteger = 1
For col = 0 To DataTbl.Columns.Count - 1
i = 2
For row = 0 To DataTbl.Rows.Count - 1
.Cells(i, k).Value = DataTbl.Rows(row).ItemArray(col)
i += 1
Next
k += 1
Next
filename = "E:\File_Exported" & Format(Now(), "dd-MM-yyyy_hh-mm-ss") & ".xlsx"
.ActiveCell.Worksheet.SaveAs(filename)
EndWith
System.Runtime.InteropServices.Marshal.ReleaseComO bject(Excel)
Excel = Nothing
MsgBox("Data's are exported to Excel Succesfully in '" & filename & "'", MsgBoxStyle.Information)
Catch ex As Exception
MsgBox(ex.Message)
EndTry
Dim pro() As Process = System.Diagnostics.Process.GetProcessesByName("EXCEL")
ForEach i As Process In pro
i.Kill()
Next
EndSub

davood-ahmadi
چهارشنبه 11 اردیبهشت 1387, 18:00 عصر
من با استفاده از روش زیر استفاده کردم شاید بدرد شما بخوره.
این هم کد:


Dim cnt As New ADODB.Connection
Dim rst As New ADODB.Recordset
Dim recArray As Object
Dim strDB As String
Dim fldCount As Integer
Dim recCount As Long
Dim iCol As Integer
Dim iRow As Integer
strDB = "c:\program files\Microsoft office\office11\samples\Northwind.mdb"
cnt.Open("Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & strDB & ";")
rst.Open("Select * From Orders", cnt)
Dim xlApp As Object
Dim xlWb As Object
Dim xlWs As Object
xlApp = CreateObject("Excel.Application")
xlWb = xlApp.Workbooks.Add
xlWs = xlWb.Worksheets("Sheet1")
xlApp.Visible = True
xlApp.UserControl = True
fldCount = rst.Fields.Count
For iCol = 1 To fldCount
xlWs.Cells(1, iCol).Value = rst.Fields(iCol - 1).Name
Next

If Val(Mid(xlApp.Version, 1, InStr(1, xlApp.Version, ".") - 1)) > 8 Then
Else

recCount = UBound(recArray, 2) + 1
For iCol = 0 To fldCount - 1
For iRow = 0 To recCount - 1
If IsDate(recArray(iCol, iRow)) Then
recArray(iCol, iRow) = Format(recArray(iCol, iRow))
ElseIf IsArray(recArray(iCol, iRow)) Then
recArray(iCol, iRow) = "Array Field"
End If
Next iRow
Next iCol
xlWs.Cells(2, 1).Resize(recCount, fldCount).Value = _
TransposeDim(recArray)
End If
rst.Close()
cnt.Close()
rst = Nothing
cnt = Nothing
xlWs = Nothing
xlWb = Nothing
xlApp = Nothing