Oppure

Loading
18/02/16 14:27
robypiro
Si, nel visualizzatore della clipboard si vede correttamente tutto copiato. Ho provato ad incollare anche in altri programmi tipo word o excel e da lo stesso problema. Ho provato anche con diverse versioni di office, ma il problema permane. Credo che i miei utenti si dovranno accontentare di copiare poche righe alla volta... :d
aaa
19/02/16 13:39
robypiro
ho notato una cosa stranissima, modificando il tuo codice in questo modo:

            'inizializzo la stringa da mettere nella clipboard con l'header, per ora senza settare gli indici. Al loro posto metto degli zeri, in modo da fissare una lunghezza per la stringa
            Dim a As String = "Version:0.9" + vbCrLf + "StartHTML:000000" + vbCrLf + "EndHTML:000000" + vbCrLf + "StartFragment:000000" + vbCrLf + "EndFragment:000000" + vbCrLf
            'ora aggiungiamo alla stringa da copiare l'html necessario.
            'ottengo la dimensione della stringa convertendo la stringa in un array di byte con la codifica UTF8 e leggendone la dimensione
            Dim headerSize As Integer = System.Text.Encoding.UTF8.GetBytes(a).Length
            a += tabella
            'ottengo la dimensione della stringa convertendo la stringa in un array di byte con la codifica UTF8 e leggendone la dimensione
            Dim totalSize As Integer = System.Text.Encoding.UTF8.GetBytes(a).Length
            'l'HTML inizia appena dopo l'header e finisce alla fine della clipboard,
            'quindi abbiamo l'indice di inizio in headerSize e quello di fine in totalSize.
            'A questo punto posso sostituire gli zeri con i valori trovati, facendo attenzione che questi siano di esattamente 6 cifre come i 6 zeri
            '(utilizzando padLeft sulla stringa la porto ad dimensione di 6 caratteri aggiungendo zeri a sinistra)
            Dim inizio As String = headerSize.ToString().PadLeft(6, "0")
            Dim fine As String = totalSize.ToString().PadLeft(6, "0")
            'la prima occorrenza degli zeri (per StartHTML) la sostituisco con l'indice di inizio
            a = replaceFirst(a, "0000000", inizio)
            'la seconda (EndHTML) con l'indice di fine
            a = replaceFirst(a, "0000000", fine)
            'stessa cosa per StartFragment e EndFragment
            a = replaceFirst(a, "0000000", inizio)
            a = replaceFirst(a, "0000000", fine)
            Clipboard.SetText(a, TextDataFormat.Html)


Il copia incolla funziona anche se, prima di copiarmi la tabella, mi copia anche l'header. In pratica, ho modificato i replaceFirst mettendo uno zero in più rispetto a quelli che dovrebbero essere. E' stata una modifica abbastanza casuale che però risolve il problema, ma perchè????
aaa