Jump to content

incompativel no excel


André Parreira
 Share

Recommended Posts

Boas a todos

Eu estou a fazer um programa, onde consigo mexer nas celulas de excel a partir de uma daragrid, no vb.net.

mas agora so aceita o sheet1, plant ou folha1, so posso abrir a folha de excel da folha 1, este codigo.

Dim da As New OleDbDataAdapter("SELECT * FROM [Folha1$]", conexao_Excel)

se aparecer como sheet1, vai logo dar erro, como fasso para poder ser kualkuer 1 deles??

Obrigado pla ajuda

Link to comment
Share on other sites

testei, nao deu

Obrigado

Mas acho que já resolvi esse problema, já consigo criar tudo como ( Folha1) mas agora, aparece sempre, " nao esta no formato esperado) a folha de excel, mas esta tudo como antes.

 Dim dt As New DataTable
        Dim conexao_Excel As String = "Provider=Microsoft.Jet.OleDb.4.0;data source=" & direto & ";Extended Properties=Excel 8.0;"
        Dim da As New OleDbDataAdapter("SELECT * FROM [Folha1$]", conexao_Excel)

        da.Fill(dt)

direto= variavel

Nao consigo abrir 2 vezes a mesma folha excel, na 2º diz que o formato não está o espero, mas quando abro a folha excel está na mesma.

pode ter haver quando a versao do xml, que se vê a versao no excel2007 do xml, ou qual é? eu estou a usar no programa a 1.0.

Depois quando gravo o datagrid quando as alteraçoes que quiser, abro a folha excel, já la estão as alteraçoes, se eu voltar a gravar quando 97-2003, depois já posso voltar a abrir no datagrid, se nao o fizer, diz que o formato nao é o espera.

Nao estou a ver onde esta o problema.

Obrigado

EDIT: Corrigido texto

Link to comment
Share on other sites

Vê estas soluções:

http://www.experts-exchange.com/Programming/Languages/.NET/Visual_Basic.NET/Q_21563285.html

Atenção: não estás a escrever num telemóvel. Lê as regras do fórum:

2) Procedimentos e recomendações na criação de tópicos:

  • 2.2) O tópico deve conter o menor número de erros ortográficos possível. Tópicos com 'k' e 'x' não são agradáveis para a leitura dos utilizadores, muito menos sendo esta uma comunidade nacional.

Link to comment
Share on other sites

Boas

Agradeço pelo site, mas ele não me ajudou muito, continuo com o mesmo erro( não consigo explicar muito bem qual é e entendo que assim fique difícil de tentar ajudar)

Quando eu fasso a actualização da folha excel a partir do datagrid que é com este código.

Dim fs As New IO.StreamWriter(direto, False)
        fs.WriteLine("<?xml version=""1.0""?>")
        fs.WriteLine("<?mso-application progid=""Excel.Folha""?>")
        fs.WriteLine("<ss:Workbook xmlns:ss=""urn:schemas-microsoft-com:office:spreadsheet"">")
        fs.WriteLine("    <ss:Styles>")
        fs.WriteLine("        <ss:Style ss:ID=""1"">")
        fs.WriteLine("           <ss:Font ss:Bold=""1""/>")
        fs.WriteLine("        </ss:Style>")
        fs.WriteLine("    </ss:Styles>")
        fs.WriteLine("    <ss:Worksheet ss:Name=""Folha1"">")
        fs.WriteLine("        <ss:Table>")
        For x As Integer = 0 To dgexcel.Columns.Count - 1
            fs.WriteLine("            <ss:Column ss:Width=""{0}""/>", dgexcel.Columns.Item(x).Width)
        Next
        'fs.WriteLine("            <ss:Row ss:StyleID=""1"">")
        For i As Integer = 0 To dgexcel.Columns.Count - 1
            fs.WriteLine("                <ss:Cell>")
            fs.WriteLine(String.Format("                   <ss:Data ss:Type=""String"">{0}</ss:Data>", dgexcel.Columns.Item(i).HeaderText))
            fs.WriteLine("                </ss:Cell>")
        Next
        fs.WriteLine("            </ss:Row>")
        For intRow As Integer = 0 To dgexcel.RowCount - 2
            fs.WriteLine(String.Format("            <ss:Row ss:Height =""{0}"">", dgexcel.Rows(intRow).Height))
            For intCol As Integer = 0 To dgexcel.Columns.Count - 1
                fs.WriteLine("                <ss:Cell>")
                fs.WriteLine(String.Format("                   <ss:Data ss:Type=""String"">{0}</ss:Data>", dgexcel.Item(intCol, intRow).Value.ToString))
                fs.WriteLine("                </ss:Cell>")
            Next
            fs.WriteLine("            </ss:Row>")
        Next
        fs.WriteLine("        </ss:Table>")
        fs.WriteLine("    </ss:Worksheet>")
        fs.WriteLine("</ss:Workbook>")
        fs.Close()

Acho que é ai que ele esta a fazer alguma alteração na folha excel, porque ele depois quando tento abrir no datagrid, ele diz que o formato não é o esperado.

Obrigado pela ajuda

Link to comment
Share on other sites

Boas pessoa

(desculpem insistir mas já falta mesmo muito pouco para dar o programa estar acabado)

Tenho esta duvida( e espero ter sido a ultima neste projecto)

Eu quando a partir do datagrid, guardo numa folha  excel alguns dados, depois quando vou voltar a abrir a mesma  folha excel pelo datagrid, ele diz que o formato já não é o esperado.

Acho que tem haver com o código acima, mas não sei bem.

Alguém tem alguma sugestão??

Obrigado

Link to comment
Share on other sites

A extensão é a mesma quando vou buscar a primeira vez, se consigo importar 1 vez, tambem devia conseguir a 2º vez, a extensão nao muda, esta la tambem guardado como xls.

Penso que  esta no codigo que meti acima onde possa estar o erro, porque é com esse codigo que consigo gravar, e so quando gravo é que não consigo depois voltar a abrir pelo datagrid

Obrigado por tentar ajudar

Link to comment
Share on other sites

Criei esta função e está a gravar e a abrir vezes sem conta 😛

Public Sub ExportToExcel(ByVal dg As DataGrid, ByVal pth As String)

        Dim excel As Object = CreateObject("Excel.Application")
        System.Threading.Thread.CurrentThread.CurrentCulture = System.Globalization.CultureInfo.CreateSpecificCulture("en-US")
        Dim MyDT As System.Data.DataTable = CType(dg.DataSource, DataTable)
        Dim wb As Microsoft.Office.Interop.Excel.Workbook = excel.Workbooks.Add
        Dim ws As Microsoft.Office.Interop.Excel.Worksheet = wb.Worksheets(1)
        For c As Integer = 0 To MyDT.Columns.Count - 1
            ws.Cells(1, c + 1).Value = MyDT.Columns(c).Caption
        Next
        For r As Integer = 0 To MyDT.Rows.Count - 1
            For i As Integer = 0 To MyDT.Columns.Count - 1
                ws.Cells(r + 2, i + 1).Value = CStr(MyDT.Rows(r).Item(i))
            Next
        Next
        wb.SaveAs(pth)
        ws = Nothing
        wb = Nothing
        excel.Quit()
        excel = Nothing

    End Sub

There are two ways to write error-free programs; only the third one works.

Link to comment
Share on other sites

Boas

Testei o código que meteste, mas acho que me esta a dar um erro meio basco de resolver.

Copiei o código todo, mas não estou a perceber uma coisa.

Para que serve o pth.

e esse código e para aplicar no botão gravar, como é num botão não tenho que mete

Public Sub ExportToExcel(ByVal dg As DataGrid, ByVal pth As String)[glow=red,2,300] Handles btgravar.click[/glow]

Obrigado pela ajuda

Link to comment
Share on other sites

lol claro que nao podes dizer que isso e um evento do butao porque o evento butao tem como parametro de entrada um object e um eventargs 🙂 dentro do evento do butao e que vais chamar essa função 😞 do tipo

Private Sub BtnGravar_Click(Byval sender as System.Object, Byval e as System.EventArgs) Handles btnGravar.Click

ExportToExcel(TuaDataGrid, CaminhoParaGravar)

End Sub

There are two ways to write error-free programs; only the third one works.

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.