Impedisci a Excel di convertire automaticamente determinati valori di testo in date

StackOverflow https://stackoverflow.com/questions/165042

  •  03-07-2019
  •  | 
  •  

Domanda

Qualcuno capisce se esiste un token che posso aggiungere al mio csv per un determinato campo in modo che Excel non tenti di convertirlo in una data?

Sto provando a scrivere un file .csv dalla mia applicazione e uno dei valori sembra abbastanza simile a una data in cui Excel lo sta convertendo automaticamente da testo in una data. Ho provato a mettere tutti i miei campi di testo (incluso quello che sembra una data) tra virgolette doppie, ma questo non ha alcun effetto.

È stato utile?

Soluzione

Ho scoperto che mettere un '=' prima delle doppie virgolette realizzerà quello che vuoi. Forza i dati in testo.

ad es. = " 03-10-2008 ", = " più testo "

MODIFICA (secondo altri post) : a causa del bug di Excel 2007 notato da Jeffiekins si dovrebbe usare la soluzione proposta da Andrew : " = " " 2008-10-03 " " "

Altri suggerimenti

So che questa è una vecchia domanda, ma il problema non si risolverà presto. I file CSV sono facili da generare dalla maggior parte dei linguaggi di programmazione, piuttosto piccoli, leggibili dall'uomo in un attimo con un semplice editor di testo e onnipresente.

Il problema non è solo con date nei campi di testo, ma qualsiasi cosa numerica viene anche convertito da testo in numeri. Un paio di esempi in cui questo è problematico:

  • codici postali / CAP
  • numeri di telefono
  • numeri ID governo

che a volte può iniziare con uno o più zeri (0), che vengono eliminati quando convertiti in numerici. Oppure il valore contiene caratteri che possono essere confusi con operatori matematici (come nelle date: /, -).

Due casi a cui posso pensare che il " prepending = " soluzione, come menzionato in precedenza, potrebbe non essere l'ideale è

  • dove il file potrebbe essere importato in un programma diverso da MS Excel (viene in mente la funzione Stampa unione di MS Word),
  • dove la leggibilità umana potrebbe essere importante.

Il mio trucco per aggirare questo

Se uno pre / aggiunge un carattere non numerico e / o non di data nel valore, il valore verrà riconosciuto come testo e non convertito. Un carattere non stampabile sarebbe buono in quanto non altererà il valore visualizzato. Tuttavia, il semplice vecchio carattere spaziale (\ s, ASCII 32) non funziona per questo in quanto viene tagliato da Excel e quindi il valore viene ancora convertito. Ma ci sono vari altri caratteri di spazio di stampa e non che funzionano bene. Il più semplice tuttavia è aggiungere (aggiungere dopo) il carattere di scheda semplice (\ t, ASCII 9).

Vantaggi di questo approccio:

  • Disponibile da tastiera o con un codice ASCII facile da ricordare (9),
  • Non disturba l'importazione,
  • Normalmente non disturba i risultati di Stampa unione (a seconda del layout del modello - ma normalmente aggiunge solo un ampio spazio alla fine di una riga). (Se questo è comunque un problema, osserva altri caratteri, ad esempio lo spazio di larghezza zero (ZWSP, Unicode U + 200B)
  • non è un grosso ostacolo quando si visualizza il CSV in Blocco note (ecc.),
  • e potrebbe essere rimosso trovando / sostituendo in Excel (o Blocco note ecc.).
  • Non è necessario importare il CSV, ma è sufficiente fare doppio clic per aprire il CSV in Excel.

Se c'è un motivo per cui non si desidera utilizzare la scheda, cercare in una tabella Unicode qualcos'altro adatto.

Un'altra opzione

potrebbe essere quello di generare file XML, per i quali un certo formato è accettato anche per l'importazione dalle versioni più recenti di MS Excel e che consente molte più opzioni simili al formato .XLS, ma non ho esperienza con questo.

Quindi ci sono varie opzioni. A seconda dei requisiti / dell'applicazione, uno potrebbe essere migliore di un altro.


L'aggiunta

Bisogna dire che le versioni più recenti (2013+) di MS Excel non aprono più il CSV in formato foglio di calcolo - c'è ancora un altro ostacolo nel flusso di lavoro che rende Excel meno utile ... Almeno, esistono istruzioni per ottenere intorno ad esso. Vedi ad es. questo StackOverflow: Come visualizzare correttamente i file .csv in Excel 2013? .

Lavorando sulla soluzione di Jarod e sul problema sollevato da Jeffiekins, è possibile modificare

"May 16, 2011"

a

"=""May 16, 2011"""

Ho avuto un problema simile e questa è la soluzione che mi ha aiutato senza dover modificare il contenuto del file CSV:

Se hai la flessibilità di assegnare un nome al file diverso da " .csv " ;, puoi nominarlo con un " .txt " estensione, come " Myfile.txt " o " Myfile.csv.txt " ;. Quindi quando lo apri in Excel (non trascinandolo, ma usando File- > Apri o l'elenco dei file utilizzati più di recente), Excel ti fornirà un " Procedura guidata di importazione del testo " ;.

Nella prima pagina della procedura guidata, scegli " Delimitato " per il tipo di file.

Nella seconda pagina della procedura guidata scegli ", " come delimitatore e scegli anche il qualificatore di testo se hai racchiuso i tuoi valori tra virgolette

Nella terza pagina, seleziona ogni colonna singolarmente e assegna a ciascuna il tipo " Testo " invece di " Generale " per impedire a Excel di rovinare i tuoi dati.

Spero che questo aiuti te o qualcuno con un problema simile!

ATTENZIONE: Excel '07 (almeno) ha un bug (nother): se c'è una virgola nel contenuto di un campo, non analizza il campo = " contenuto " correttamente, ma piuttosto inserisce tutto dopo la virgola nel seguente campo, indipendentemente dalle virgolette.

L'unica soluzione che ho trovato funziona è eliminare il = quando il contenuto del campo include una virgola.

Ciò può significare che ci sono alcuni campi che sono impossibili da rappresentare esattamente "giusto". in Excel, ma ormai credo che nessuno sia troppo sorpreso.

Durante la creazione della stringa da scrivere nel mio file CSV in C # ho dovuto formattarla in questo modo:

"=\"" + myVariable + "\""

In Excel 2010 apri un nuovo foglio. Nella barra multifunzione Dati fai clic su " Ottieni dati esterni da testo " ;. Seleziona il tuo file CSV quindi fai clic su " Apri " ;. Fai clic su " Avanti " ;. Deseleziona " Tab " ;, metti un segno di spunta accanto a " Virgola " ;, quindi fai clic su " Successivo " ;. Fai clic in un punto qualsiasi della prima colonna. Tenendo premuto il tasto Maiusc, trascina il cursore fino a quando non puoi fare clic nell'ultima colonna, quindi rilascia il tasto Maiusc. Fai clic sul " testo " pulsante di opzione, quindi fai clic su " Fine "

Tutte le colonne verranno importate come testo, proprio come nel file CSV.

Ancora un problema nella versione di Microsoft Office 2016, piuttosto inquietante per quelli di noi che lavorano con nomi di geni come MARC1, MARCH1, SEPT1 ecc. La soluzione che ho trovato essere la più pratica dopo aver generato un ".csv" file in R, che verrà quindi aperto / condiviso con gli utenti di Excel:

  1. Apri il file CSV come testo (blocco note)
  2. Copialo (ctrl + a, ctrl + c).
  3. Incollalo in un nuovo foglio Excel: incollerà tutti in una colonna come stringhe di testo lunghe.
  4. Scegli / seleziona questa colonna.
  5. Vai a Dati- " Testo in colonne ... " ;, nella finestra aperta scegli " delimitato " (Il prossimo). Verifica che " virgola " è contrassegnato (contrassegnandolo mostrerà già la separazione dei dati nelle colonne sottostanti) (successivo), in questa finestra è possibile scegliere la colonna desiderata e contrassegnarla come testo (anziché generale) (Fine).

HTH

Ecco il semplice metodo che usiamo al lavoro qui quando si genera il file csv in primo luogo, cambia un po 'i valori quindi non è adatto a tutte le applicazioni:

Prepara uno spazio a tutti i valori nel csv

Questo spazio verrà rimosso da Excel da numeri come " 1 " " 2.3 " e " -2.9e4 " ma rimarrà in date come " 01/10/1993 " e booleani come " TRUE " ;, impedendo che vengano convertiti nei tipi di dati interni di Excel.

Impedisce anche che le doppie virgolette vengano zappate al momento della lettura, quindi un modo infallibile di rendere il testo in un CSV rimane invariato da Excel ANCHE SE è un testo simile a "3.1415". è racchiuderlo tra virgolette doppie e anteporre l'intera stringa con uno spazio, ovvero (usando virgolette singole per mostrare ciò che si digita) "" 3.1415 "". Quindi in Excel hai sempre la stringa originale, tranne che è racchiusa tra virgolette doppie e preceduta da uno spazio, quindi devi tener conto di quelle in qualsiasi formula ecc.

(Supponendo Excel 2003 ...)

Quando si utilizza la procedura guidata Text-to-Columns, al passaggio 3 è possibile dettare il tipo di dati per ciascuna delle colonne. Fai clic sulla colonna nell'anteprima e modifica la colonna di comportamento errato da " Generale " a " Testo. "

Questo è l'unico modo in cui so come farlo senza fare confusione nel file stesso. Come al solito con Excel, l'ho imparato battendo la testa sulla scrivania per ore.

Cambia l'estensione del file .csv in .txt; questo impedirà ad Excel di convertire automaticamente il file quando viene aperto. Ecco come lo faccio: apro Excel in un foglio di lavoro vuoto, chiudo il foglio bianco, quindi File = > Apri e scegli il tuo file con l'estensione .txt. Questo costringe Excel ad aprire la "Procedura guidata importazione testo" " dove ti farà domande su come vuoi che interpreti il ??file. Prima scegli il tuo delimitatore (virgola, tab, ecc ...), quindi (ecco la parte importante) scegli un set di colonne di colonne e seleziona la formattazione. Se vuoi esattamente cosa c'è nel file, scegli " Testo " ed Excel mostrerà esattamente cosa c'è tra i delimitatori.

2018

L'unica soluzione corretta che ha funzionato per me (e anche senza modificare il CSV ).

Excel 2010:

  1. Crea nuova cartella di lavoro
  2. Dati > Da Text > Seleziona il tuo file CSV
  3. Nel popup, seleziona " Delimitato " pulsante di opzione, quindi fai clic su " Avanti > "
  4. Caselle di controllo delimitatori: spuntare solo " Virgola " e deseleziona le altre opzioni, quindi fai clic su " Avanti > "
  5. In " Anteprima dati " ;, scorri fino all'estrema destra, quindi tieni premuto MAIUSC e fai clic sull'ultima colonna (questo selezionerà tutte le colonne). Ora nel formato dati colonna " seleziona il pulsante di opzione " Testo " ;, quindi fai clic su " Fine " ;.

Excel office365: (versione client)

  1. Crea nuova cartella di lavoro
  2. Dati > Da Text / CSV > Seleziona il tuo file CSV
  3. Rilevamento del tipo di dati > non rilevare

Nota: Excel Office365 (versione web), mentre sto scrivendo questo, non sarai in grado di farlo.

(EXCEL 2007 e versioni successive)

Come forzare Excel a non "rilevare" formati di data senza modificare il file di origine

O:

  • rinomina il file come .txt
  • Se non puoi farlo, invece di aprire il file CSV direttamente in Excel, crea una nuova cartella di lavoro, quindi vai a
    Dati > Ottieni dati esterni > Da Text
    e seleziona il tuo CSV.

Ad ogni modo, ti verranno presentate le opzioni di importazione, seleziona semplicemente ogni colonna contenente le date e dì a Excel di formattare come "testo" non " generale " ;.

Nessuna delle soluzioni offerte qui è una buona soluzione. Può funzionare per singoli casi, ma solo se hai il controllo del display finale. Prendi il mio esempio: il mio lavoro produce un elenco di prodotti che vendono al dettaglio. Questo è in formato CSV e contiene codici parte, alcuni dei quali iniziano con zero, impostati dai produttori (non sotto il nostro controllo). Elimina gli zeri iniziali e potresti effettivamente abbinare un altro prodotto. I clienti al dettaglio desiderano l'elenco in formato CSV a causa di programmi di elaborazione back-end, che sono anche fuori dal nostro controllo e diversi per cliente, quindi non possiamo modificare il formato dei file CSV. Nessun prefisso "=", né schede aggiunte. I dati nei file CSV non elaborati sono corretti; è quando i clienti aprono quei file in Excel iniziano i problemi. E molti clienti non sono davvero esperti di computer. Possono semplicemente aprire e salvare un allegato e-mail. Stiamo pensando di fornire i dati in due formati leggermente diversi: uno come Excel Friendly (utilizzando le opzioni suggerite sopra aggiungendo un TAB, l'altro come 'master'. Ma questo potrebbe essere un pio desiderio perché alcuni clienti non capiranno perché dobbiamo farlo. Nel frattempo continuiamo a spiegare perché a volte vedono dati "errati" nei loro fogli di calcolo. Fino a quando Microsoft non apporta una modifica adeguata, non vedo una soluzione adeguata a questo, purché non si abbia il controllo su come gli utenti finali utilizzano i file.

Quello che ho fatto per questo stesso problema è stato aggiungere quanto segue prima di ogni valore CSV: & Quot; = " " " e una doppia virgoletta dopo ogni valore CSV, prima di aprire il file in Excel. Prendi ad esempio i seguenti valori:

012345,00198475

Questi dovrebbero essere modificati prima dell'apertura in Excel a:

"="""012345","="""00198475"

Dopo aver fatto ciò, ogni valore di cella appare come una formula in Excel e quindi non sarà formattato come un numero, una data, ecc. Ad esempio, un valore di 012345 appare come:

="012345"

Ho trovato questa settimana questa convenzione, che sembra essere un approccio eccellente, ma non riesco a trovarla referenziata da nessuna parte. Qualcuno lo conosce? Puoi citarne una fonte? Non ho cercato ore e ore ma spero che qualcuno riconoscerà questo approccio.

Esempio 1: = (" 012345678905 ") viene visualizzato come 012345678905

Esempio 2: = (" 1954-12-12 ") viene visualizzato come 1954-12-12 , non 12/12/1954 .

Non è Excel. Windows riconosce la formula, i dati come una data e si corregge automaticamente. Devi modificare le impostazioni di Windows.

" Pannello di controllo " (- > " Passa alla visualizzazione classica ") - > " Regionale e lingua Opzioni " - > scheda " Opzioni regionali " - > & Quot; Personalizza ... " - > tab " Numbers " - > E quindi cambia i simboli in base a ciò che desideri.

http: // www. pcreview.co.uk/forums/enable-disable-auto-convert-number-date-t3791902.html

Funzionerà sul tuo computer, se queste impostazioni non vengono modificate, ad esempio sul computer dei tuoi clienti, vedranno le date invece dei dati.

Ciao, ho lo stesso problema,

Scrivo questo vbscipt per creare un altro file CSV. Il nuovo file CSV avrà uno spazio nel carattere di ciascun campo, quindi Excel lo comprenderà come testo.

Quindi crei un file .vbs con il codice seguente (ad esempio Modify_CSV.vbs), salvalo e chiudilo. Trascina e rilascia il file originale nel file vbscript. Creerà un nuovo file con " SPACE_ADDED " al nome del file nella stessa posizione.

Set objArgs = WScript.Arguments

Set objFso = createobject("scripting.filesystemobject")

dim objTextFile
dim arrStr ' an array to hold the text content
dim sLine  ' holding text to write to new file

'Looping through all dropped file
For t = 0 to objArgs.Count - 1
    ' Input Path
    inPath = objFso.GetFile(wscript.arguments.item(t))

    ' OutPut Path
    outPath = replace(inPath, objFso.GetFileName(inPath), left(objFso.GetFileName(inPath), InStrRev(objFso.GetFileName(inPath),".") - 1) & "_SPACE_ADDED.csv")

    ' Read the file
    set objTextFile = objFso.OpenTextFile(inPath)


    'Now Creating the file can overwrite exiting file
    set aNewFile = objFso.CreateTextFile(outPath, True) 
    aNewFile.Close  

    'Open the file to appending data
    set aNewFile = objFso.OpenTextFile(outPath, 8) '2=Open for writing 8 for appending

    ' Reading data and writing it to new file
    Do while NOT objTextFile.AtEndOfStream
        arrStr = split(objTextFile.ReadLine,",")

        sLine = ""  'Clear previous data

        For i=lbound(arrStr) to ubound(arrStr)
            sLine = sLine + " " + arrStr(i) + ","
        Next

        'Writing data to new file
        aNewFile.WriteLine left(sLine, len(sLine)-1) 'Get rid of that extra comma from the loop


    Loop

    'Closing new file
    aNewFile.Close  

Next ' This is for next file

set aNewFile=nothing
set objFso = nothing
set objArgs = nothing

Senza modificare il tuo file csv puoi:

  1. Modifica l'opzione Formato celle di Excel in " text "
  2. Quindi utilizzando la "Procedura guidata importazione testo" " per definire le celle CSV.
  3. Dopo l'importazione, eliminare tali dati
  4. quindi incolla come testo normale

excel formatterà e separerà correttamente le celle CSV come testo formattato ignorando i formati di data automatici.

Una specie di sciocco aggirare, ma batte la modifica dei dati CSV prima dell'importazione. Andy Baird e Richard si sono in qualche modo sfuggiti a questo metodo, ma hanno perso un paio di passaggi importanti.

So che questo è un vecchio thread. Per quelli come me, che hanno ancora questo problema utilizzando Office 2013 tramite l'oggetto com PowerShell possono utilizzare metodo opentext . Il problema è che questo metodo ha molti argomenti, che a volte si escludono a vicenda. Per risolvere questo problema, puoi utilizzare il metodo invoke-namedparameter introdotto in questo post . Un esempio potrebbe essere

$ex = New-Object -com "Excel.Application"
$ex.visible = $true
$csv = "path\to\your\csv.csv"
Invoke-NamedParameter ($ex.workbooks) "opentext" @{"filename"=$csv; "Semicolon"= $true}

Purtroppo ho appena scoperto che questo metodo in qualche modo interrompe l'analisi CSV quando le celle contengono interruzioni di riga. Questo è supportato da CSV, ma l'implementazione di microsoft sembra essere stata corretta. Inoltre, in qualche modo non ha rilevato caratteri specifici tedeschi. Dandogli la cultura corretta non ha cambiato questo comportamento. Tutti i file (csv e script) vengono salvati con codifica utf8. Per prima cosa ho scritto il seguente codice per inserire la cella CSV per cella.

$ex = New-Object -com "Excel.Application"
$ex.visible = $true;
$csv = "path\to\your\csv.csv";
$ex.workbooks.add();
$ex.activeWorkbook.activeSheet.Cells.NumberFormat = "@";
$data = import-csv $csv -encoding utf8 -delimiter ";"; 
$row = 1; 
$data | %{ $obj = 

So che questo è un vecchio thread. Per quelli come me, che hanno ancora questo problema utilizzando Office 2013 tramite l'oggetto com PowerShell possono utilizzare metodo opentext . Il problema è che questo metodo ha molti argomenti, che a volte si escludono a vicenda. Per risolvere questo problema, puoi utilizzare il metodo invoke-namedparameter introdotto in questo post . Un esempio potrebbe essere

$ex = New-Object -com "Excel.Application"
$ex.visible = $true
$csv = "path\to\your\csv.csv"
Invoke-NamedParameter ($ex.workbooks) "opentext" @{"filename"=$csv; "Semicolon"= $true}

Purtroppo ho appena scoperto che questo metodo in qualche modo interrompe l'analisi CSV quando le celle contengono interruzioni di riga. Questo è supportato da CSV, ma l'implementazione di microsoft sembra essere stata corretta. Inoltre, in qualche modo non ha rilevato caratteri specifici tedeschi. Dandogli la cultura corretta non ha cambiato questo comportamento. Tutti i file (csv e script) vengono salvati con codifica utf8. Per prima cosa ho scritto il seguente codice per inserire la cella CSV per cella.

function csvToExcel($csv,$delimiter){
     $a = New-Object -com "Excel.Application"
     $a.visible = $true

    $a.workbooks.add()
     $a.activeWorkbook.activeSheet.Cells.NumberFormat = "@"
     $data = import-csv -delimiter $delimiter $csv; 
     $array = ($data |ConvertTo-MultiArray).Value
     $starta = [int][char]'a' - 1
     if ($array.GetLength(1) -gt 26) {
         $col = [char]([int][math]::Floor($array.GetLength(1)/26) + $starta) + [char](($array.GetLength(1)%26) + $Starta)
     } else {
         $col = [char]($array.GetLength(1) + $starta)
     }
     $range = $a.activeWorkbook.activeSheet.Range("a1:"+$col+""+$array.GetLength(0))
     $range.value2 = $array;
     $range.Columns.AutoFit();
     $range.Rows.AutoFit();
     $range.Cells.HorizontalAlignment = -4131
     $range.Cells.VerticalAlignment = -4160
}

 function ConvertTo-MultiArray {
     param(
         [Parameter(Mandatory=$true, Position=1, ValueFromPipeline=$true)]
         [PSObject[]]$InputObject
     )
     BEGIN {
         $objects = @()
         [ref]$array = [ref]$null
     }
     Process {
         $objects += $InputObject
     }
     END {
         $properties = $objects[0].psobject.properties |%{

So che questo è un vecchio thread. Per quelli come me, che hanno ancora questo problema utilizzando Office 2013 tramite l'oggetto com PowerShell possono utilizzare metodo opentext . Il problema è che questo metodo ha molti argomenti, che a volte si escludono a vicenda. Per risolvere questo problema, puoi utilizzare il metodo invoke-namedparameter introdotto in questo post . Un esempio potrebbe essere

$ex = New-Object -com "Excel.Application"
$ex.visible = $true
$csv = "path\to\your\csv.csv"
Invoke-NamedParameter ($ex.workbooks) "opentext" @{"filename"=$csv; "Semicolon"= $true}

Purtroppo ho appena scoperto che questo metodo in qualche modo interrompe l'analisi CSV quando le celle contengono interruzioni di riga. Questo è supportato da CSV, ma l'implementazione di microsoft sembra essere stata corretta. Inoltre, in qualche modo non ha rilevato caratteri specifici tedeschi. Dandogli la cultura corretta non ha cambiato questo comportamento. Tutti i file (csv e script) vengono salvati con codifica utf8. Per prima cosa ho scritto il seguente codice per inserire la cella CSV per cella.

$ex = New-Object -com "Excel.Application"
$ex.visible = $true;
$csv = "path\to\your\csv.csv";
$ex.workbooks.add();
$ex.activeWorkbook.activeSheet.Cells.NumberFormat = "@";
$data = import-csv $csv -encoding utf8 -delimiter ";"; 
$row = 1; 
$data | %{ $obj = 

So che questo è un vecchio thread. Per quelli come me, che hanno ancora questo problema utilizzando Office 2013 tramite l'oggetto com PowerShell possono utilizzare metodo opentext . Il problema è che questo metodo ha molti argomenti, che a volte si escludono a vicenda. Per risolvere questo problema, puoi utilizzare il metodo invoke-namedparameter introdotto in questo post . Un esempio potrebbe essere

$ex = New-Object -com "Excel.Application"
$ex.visible = $true
$csv = "path\to\your\csv.csv"
Invoke-NamedParameter ($ex.workbooks) "opentext" @{"filename"=$csv; "Semicolon"= $true}

Purtroppo ho appena scoperto che questo metodo in qualche modo interrompe l'analisi CSV quando le celle contengono interruzioni di riga. Questo è supportato da CSV, ma l'implementazione di microsoft sembra essere stata corretta. Inoltre, in qualche modo non ha rilevato caratteri specifici tedeschi. Dandogli la cultura corretta non ha cambiato questo comportamento. Tutti i file (csv e script) vengono salvati con codifica utf8. Per prima cosa ho scritto il seguente codice per inserire la cella CSV per cella.

<*>

Ma questo è estremamente lento, motivo per cui ho cercato un'alternativa. Apparentemente Excel ti consente di impostare i valori di un intervallo di celle con una matrice. Quindi ho usato l'algoritmo in questo blog per trasformare il CSV in un multiarray.

<*>

Puoi usare il codice sopra come dovrebbe convertire qualsiasi CSV in Excel. Basta cambiare il percorso in CSV e il carattere delimitatore in basso.

; $col = 1;

So che questo è un vecchio thread. Per quelli come me, che hanno ancora questo problema utilizzando Office 2013 tramite l'oggetto com PowerShell possono utilizzare metodo opentext . Il problema è che questo metodo ha molti argomenti, che a volte si escludono a vicenda. Per risolvere questo problema, puoi utilizzare il metodo invoke-namedparameter introdotto in questo post . Un esempio potrebbe essere

$ex = New-Object -com "Excel.Application"
$ex.visible = $true
$csv = "path\to\your\csv.csv"
Invoke-NamedParameter ($ex.workbooks) "opentext" @{"filename"=$csv; "Semicolon"= $true}

Purtroppo ho appena scoperto che questo metodo in qualche modo interrompe l'analisi CSV quando le celle contengono interruzioni di riga. Questo è supportato da CSV, ma l'implementazione di microsoft sembra essere stata corretta. Inoltre, in qualche modo non ha rilevato caratteri specifici tedeschi. Dandogli la cultura corretta non ha cambiato questo comportamento. Tutti i file (csv e script) vengono salvati con codifica utf8. Per prima cosa ho scritto il seguente codice per inserire la cella CSV per cella.

<*>

Ma questo è estremamente lento, motivo per cui ho cercato un'alternativa. Apparentemente Excel ti consente di impostare i valori di un intervallo di celle con una matrice. Quindi ho usato l'algoritmo in questo blog per trasformare il CSV in un multiarray.

<*>

Puoi usare il codice sopra come dovrebbe convertire qualsiasi CSV in Excel. Basta cambiare il percorso in CSV e il carattere delimitatore in basso.

.psobject.properties.Name |%{if($row -eq1){$ex.ActiveWorkbook.activeSheet.Cells.item($row,$col).Value2=

So che questo è un vecchio thread. Per quelli come me, che hanno ancora questo problema utilizzando Office 2013 tramite l'oggetto com PowerShell possono utilizzare metodo opentext . Il problema è che questo metodo ha molti argomenti, che a volte si escludono a vicenda. Per risolvere questo problema, puoi utilizzare il metodo invoke-namedparameter introdotto in questo post . Un esempio potrebbe essere

$ex = New-Object -com "Excel.Application"
$ex.visible = $true
$csv = "path\to\your\csv.csv"
Invoke-NamedParameter ($ex.workbooks) "opentext" @{"filename"=$csv; "Semicolon"= $true}

Purtroppo ho appena scoperto che questo metodo in qualche modo interrompe l'analisi CSV quando le celle contengono interruzioni di riga. Questo è supportato da CSV, ma l'implementazione di microsoft sembra essere stata corretta. Inoltre, in qualche modo non ha rilevato caratteri specifici tedeschi. Dandogli la cultura corretta non ha cambiato questo comportamento. Tutti i file (csv e script) vengono salvati con codifica utf8. Per prima cosa ho scritto il seguente codice per inserire la cella CSV per cella.

<*>

Ma questo è estremamente lento, motivo per cui ho cercato un'alternativa. Apparentemente Excel ti consente di impostare i valori di un intervallo di celle con una matrice. Quindi ho usato l'algoritmo in questo blog per trasformare il CSV in un multiarray.

<*>

Puoi usare il codice sopra come dovrebbe convertire qualsiasi CSV in Excel. Basta cambiare il percorso in CSV e il carattere delimitatore in basso.

};$ex.ActiveWorkbook.activeSheet.Cells.item($row+1,$col).Value2 =$obj.

So che questo è un vecchio thread. Per quelli come me, che hanno ancora questo problema utilizzando Office 2013 tramite l'oggetto com PowerShell possono utilizzare metodo opentext . Il problema è che questo metodo ha molti argomenti, che a volte si escludono a vicenda. Per risolvere questo problema, puoi utilizzare il metodo invoke-namedparameter introdotto in questo post . Un esempio potrebbe essere

$ex = New-Object -com "Excel.Application"
$ex.visible = $true
$csv = "path\to\your\csv.csv"
Invoke-NamedParameter ($ex.workbooks) "opentext" @{"filename"=$csv; "Semicolon"= $true}

Purtroppo ho appena scoperto che questo metodo in qualche modo interrompe l'analisi CSV quando le celle contengono interruzioni di riga. Questo è supportato da CSV, ma l'implementazione di microsoft sembra essere stata corretta. Inoltre, in qualche modo non ha rilevato caratteri specifici tedeschi. Dandogli la cultura corretta non ha cambiato questo comportamento. Tutti i file (csv e script) vengono salvati con codifica utf8. Per prima cosa ho scritto il seguente codice per inserire la cella CSV per cella.

<*>

Ma questo è estremamente lento, motivo per cui ho cercato un'alternativa. Apparentemente Excel ti consente di impostare i valori di un intervallo di celle con una matrice. Quindi ho usato l'algoritmo in questo blog per trasformare il CSV in un multiarray.

<*>

Puoi usare il codice sopra come dovrebbe convertire qualsiasi CSV in Excel. Basta cambiare il percorso in CSV e il carattere delimitatore in basso.

; $col++ }; $row++;}

Ma questo è estremamente lento, motivo per cui ho cercato un'alternativa. Apparentemente Excel ti consente di impostare i valori di un intervallo di celle con una matrice. Quindi ho usato l'algoritmo in questo blog per trasformare il CSV in un multiarray.

<*>

Puoi usare il codice sopra come dovrebbe convertire qualsiasi CSV in Excel. Basta cambiare il percorso in CSV e il carattere delimitatore in basso.

.name} $array.Value = New-Object 'object[,]' ($objects.Count+1),$properties.count # i = row and j = column $j = 0 $properties |%{ $array.Value[0,$j] =

So che questo è un vecchio thread. Per quelli come me, che hanno ancora questo problema utilizzando Office 2013 tramite l'oggetto com PowerShell possono utilizzare metodo opentext . Il problema è che questo metodo ha molti argomenti, che a volte si escludono a vicenda. Per risolvere questo problema, puoi utilizzare il metodo invoke-namedparameter introdotto in questo post . Un esempio potrebbe essere

$ex = New-Object -com "Excel.Application"
$ex.visible = $true
$csv = "path\to\your\csv.csv"
Invoke-NamedParameter ($ex.workbooks) "opentext" @{"filename"=$csv; "Semicolon"= $true}

Purtroppo ho appena scoperto che questo metodo in qualche modo interrompe l'analisi CSV quando le celle contengono interruzioni di riga. Questo è supportato da CSV, ma l'implementazione di microsoft sembra essere stata corretta. Inoltre, in qualche modo non ha rilevato caratteri specifici tedeschi. Dandogli la cultura corretta non ha cambiato questo comportamento. Tutti i file (csv e script) vengono salvati con codifica utf8. Per prima cosa ho scritto il seguente codice per inserire la cella CSV per cella.

$ex = New-Object -com "Excel.Application"
$ex.visible = $true;
$csv = "path\to\your\csv.csv";
$ex.workbooks.add();
$ex.activeWorkbook.activeSheet.Cells.NumberFormat = "@";
$data = import-csv $csv -encoding utf8 -delimiter ";"; 
$row = 1; 
$data | %{ $obj = 

So che questo è un vecchio thread. Per quelli come me, che hanno ancora questo problema utilizzando Office 2013 tramite l'oggetto com PowerShell possono utilizzare metodo opentext . Il problema è che questo metodo ha molti argomenti, che a volte si escludono a vicenda. Per risolvere questo problema, puoi utilizzare il metodo invoke-namedparameter introdotto in questo post . Un esempio potrebbe essere

$ex = New-Object -com "Excel.Application"
$ex.visible = $true
$csv = "path\to\your\csv.csv"
Invoke-NamedParameter ($ex.workbooks) "opentext" @{"filename"=$csv; "Semicolon"= $true}

Purtroppo ho appena scoperto che questo metodo in qualche modo interrompe l'analisi CSV quando le celle contengono interruzioni di riga. Questo è supportato da CSV, ma l'implementazione di microsoft sembra essere stata corretta. Inoltre, in qualche modo non ha rilevato caratteri specifici tedeschi. Dandogli la cultura corretta non ha cambiato questo comportamento. Tutti i file (csv e script) vengono salvati con codifica utf8. Per prima cosa ho scritto il seguente codice per inserire la cella CSV per cella.

<*>

Ma questo è estremamente lento, motivo per cui ho cercato un'alternativa. Apparentemente Excel ti consente di impostare i valori di un intervallo di celle con una matrice. Quindi ho usato l'algoritmo in questo blog per trasformare il CSV in un multiarray.

<*>

Puoi usare il codice sopra come dovrebbe convertire qualsiasi CSV in Excel. Basta cambiare il percorso in CSV e il carattere delimitatore in basso.

; $col = 1;

So che questo è un vecchio thread. Per quelli come me, che hanno ancora questo problema utilizzando Office 2013 tramite l'oggetto com PowerShell possono utilizzare metodo opentext . Il problema è che questo metodo ha molti argomenti, che a volte si escludono a vicenda. Per risolvere questo problema, puoi utilizzare il metodo invoke-namedparameter introdotto in questo post . Un esempio potrebbe essere

$ex = New-Object -com "Excel.Application"
$ex.visible = $true
$csv = "path\to\your\csv.csv"
Invoke-NamedParameter ($ex.workbooks) "opentext" @{"filename"=$csv; "Semicolon"= $true}

Purtroppo ho appena scoperto che questo metodo in qualche modo interrompe l'analisi CSV quando le celle contengono interruzioni di riga. Questo è supportato da CSV, ma l'implementazione di microsoft sembra essere stata corretta. Inoltre, in qualche modo non ha rilevato caratteri specifici tedeschi. Dandogli la cultura corretta non ha cambiato questo comportamento. Tutti i file (csv e script) vengono salvati con codifica utf8. Per prima cosa ho scritto il seguente codice per inserire la cella CSV per cella.

<*>

Ma questo è estremamente lento, motivo per cui ho cercato un'alternativa. Apparentemente Excel ti consente di impostare i valori di un intervallo di celle con una matrice. Quindi ho usato l'algoritmo in questo blog per trasformare il CSV in un multiarray.

<*>

Puoi usare il codice sopra come dovrebbe convertire qualsiasi CSV in Excel. Basta cambiare il percorso in CSV e il carattere delimitatore in basso.

.psobject.properties.Name |%{if($row -eq1){$ex.ActiveWorkbook.activeSheet.Cells.item($row,$col).Value2=

So che questo è un vecchio thread. Per quelli come me, che hanno ancora questo problema utilizzando Office 2013 tramite l'oggetto com PowerShell possono utilizzare metodo opentext . Il problema è che questo metodo ha molti argomenti, che a volte si escludono a vicenda. Per risolvere questo problema, puoi utilizzare il metodo invoke-namedparameter introdotto in questo post . Un esempio potrebbe essere

$ex = New-Object -com "Excel.Application"
$ex.visible = $true
$csv = "path\to\your\csv.csv"
Invoke-NamedParameter ($ex.workbooks) "opentext" @{"filename"=$csv; "Semicolon"= $true}

Purtroppo ho appena scoperto che questo metodo in qualche modo interrompe l'analisi CSV quando le celle contengono interruzioni di riga. Questo è supportato da CSV, ma l'implementazione di microsoft sembra essere stata corretta. Inoltre, in qualche modo non ha rilevato caratteri specifici tedeschi. Dandogli la cultura corretta non ha cambiato questo comportamento. Tutti i file (csv e script) vengono salvati con codifica utf8. Per prima cosa ho scritto il seguente codice per inserire la cella CSV per cella.

<*>

Ma questo è estremamente lento, motivo per cui ho cercato un'alternativa. Apparentemente Excel ti consente di impostare i valori di un intervallo di celle con una matrice. Quindi ho usato l'algoritmo in questo blog per trasformare il CSV in un multiarray.

<*>

Puoi usare il codice sopra come dovrebbe convertire qualsiasi CSV in Excel. Basta cambiare il percorso in CSV e il carattere delimitatore in basso.

};$ex.ActiveWorkbook.activeSheet.Cells.item($row+1,$col).Value2 =$obj.

So che questo è un vecchio thread. Per quelli come me, che hanno ancora questo problema utilizzando Office 2013 tramite l'oggetto com PowerShell possono utilizzare metodo opentext . Il problema è che questo metodo ha molti argomenti, che a volte si escludono a vicenda. Per risolvere questo problema, puoi utilizzare il metodo invoke-namedparameter introdotto in questo post . Un esempio potrebbe essere

$ex = New-Object -com "Excel.Application"
$ex.visible = $true
$csv = "path\to\your\csv.csv"
Invoke-NamedParameter ($ex.workbooks) "opentext" @{"filename"=$csv; "Semicolon"= $true}

Purtroppo ho appena scoperto che questo metodo in qualche modo interrompe l'analisi CSV quando le celle contengono interruzioni di riga. Questo è supportato da CSV, ma l'implementazione di microsoft sembra essere stata corretta. Inoltre, in qualche modo non ha rilevato caratteri specifici tedeschi. Dandogli la cultura corretta non ha cambiato questo comportamento. Tutti i file (csv e script) vengono salvati con codifica utf8. Per prima cosa ho scritto il seguente codice per inserire la cella CSV per cella.

<*>

Ma questo è estremamente lento, motivo per cui ho cercato un'alternativa. Apparentemente Excel ti consente di impostare i valori di un intervallo di celle con una matrice. Quindi ho usato l'algoritmo in questo blog per trasformare il CSV in un multiarray.

<*>

Puoi usare il codice sopra come dovrebbe convertire qualsiasi CSV in Excel. Basta cambiare il percorso in CSV e il carattere delimitatore in basso.

; $col++ }; $row++;}

Ma questo è estremamente lento, motivo per cui ho cercato un'alternativa. Apparentemente Excel ti consente di impostare i valori di un intervallo di celle con una matrice. Quindi ho usato l'algoritmo in questo blog per trasformare il CSV in un multiarray.

<*>

Puoi usare il codice sopra come dovrebbe convertire qualsiasi CSV in Excel. Basta cambiare il percorso in CSV e il carattere delimitatore in basso.

.tostring() $j++ } $i = 1 $objects |% { $item =

So che questo è un vecchio thread. Per quelli come me, che hanno ancora questo problema utilizzando Office 2013 tramite l'oggetto com PowerShell possono utilizzare metodo opentext . Il problema è che questo metodo ha molti argomenti, che a volte si escludono a vicenda. Per risolvere questo problema, puoi utilizzare il metodo invoke-namedparameter introdotto in questo post . Un esempio potrebbe essere

$ex = New-Object -com "Excel.Application"
$ex.visible = $true
$csv = "path\to\your\csv.csv"
Invoke-NamedParameter ($ex.workbooks) "opentext" @{"filename"=$csv; "Semicolon"= $true}

Purtroppo ho appena scoperto che questo metodo in qualche modo interrompe l'analisi CSV quando le celle contengono interruzioni di riga. Questo è supportato da CSV, ma l'implementazione di microsoft sembra essere stata corretta. Inoltre, in qualche modo non ha rilevato caratteri specifici tedeschi. Dandogli la cultura corretta non ha cambiato questo comportamento. Tutti i file (csv e script) vengono salvati con codifica utf8. Per prima cosa ho scritto il seguente codice per inserire la cella CSV per cella.

$ex = New-Object -com "Excel.Application"
$ex.visible = $true;
$csv = "path\to\your\csv.csv";
$ex.workbooks.add();
$ex.activeWorkbook.activeSheet.Cells.NumberFormat = "@";
$data = import-csv $csv -encoding utf8 -delimiter ";"; 
$row = 1; 
$data | %{ $obj = 

So che questo è un vecchio thread. Per quelli come me, che hanno ancora questo problema utilizzando Office 2013 tramite l'oggetto com PowerShell possono utilizzare metodo opentext . Il problema è che questo metodo ha molti argomenti, che a volte si escludono a vicenda. Per risolvere questo problema, puoi utilizzare il metodo invoke-namedparameter introdotto in questo post . Un esempio potrebbe essere

$ex = New-Object -com "Excel.Application"
$ex.visible = $true
$csv = "path\to\your\csv.csv"
Invoke-NamedParameter ($ex.workbooks) "opentext" @{"filename"=$csv; "Semicolon"= $true}

Purtroppo ho appena scoperto che questo metodo in qualche modo interrompe l'analisi CSV quando le celle contengono interruzioni di riga. Questo è supportato da CSV, ma l'implementazione di microsoft sembra essere stata corretta. Inoltre, in qualche modo non ha rilevato caratteri specifici tedeschi. Dandogli la cultura corretta non ha cambiato questo comportamento. Tutti i file (csv e script) vengono salvati con codifica utf8. Per prima cosa ho scritto il seguente codice per inserire la cella CSV per cella.

<*>

Ma questo è estremamente lento, motivo per cui ho cercato un'alternativa. Apparentemente Excel ti consente di impostare i valori di un intervallo di celle con una matrice. Quindi ho usato l'algoritmo in questo blog per trasformare il CSV in un multiarray.

<*>

Puoi usare il codice sopra come dovrebbe convertire qualsiasi CSV in Excel. Basta cambiare il percorso in CSV e il carattere delimitatore in basso.

; $col = 1;

So che questo è un vecchio thread. Per quelli come me, che hanno ancora questo problema utilizzando Office 2013 tramite l'oggetto com PowerShell possono utilizzare metodo opentext . Il problema è che questo metodo ha molti argomenti, che a volte si escludono a vicenda. Per risolvere questo problema, puoi utilizzare il metodo invoke-namedparameter introdotto in questo post . Un esempio potrebbe essere

$ex = New-Object -com "Excel.Application"
$ex.visible = $true
$csv = "path\to\your\csv.csv"
Invoke-NamedParameter ($ex.workbooks) "opentext" @{"filename"=$csv; "Semicolon"= $true}

Purtroppo ho appena scoperto che questo metodo in qualche modo interrompe l'analisi CSV quando le celle contengono interruzioni di riga. Questo è supportato da CSV, ma l'implementazione di microsoft sembra essere stata corretta. Inoltre, in qualche modo non ha rilevato caratteri specifici tedeschi. Dandogli la cultura corretta non ha cambiato questo comportamento. Tutti i file (csv e script) vengono salvati con codifica utf8. Per prima cosa ho scritto il seguente codice per inserire la cella CSV per cella.

<*>

Ma questo è estremamente lento, motivo per cui ho cercato un'alternativa. Apparentemente Excel ti consente di impostare i valori di un intervallo di celle con una matrice. Quindi ho usato l'algoritmo in questo blog per trasformare il CSV in un multiarray.

<*>

Puoi usare il codice sopra come dovrebbe convertire qualsiasi CSV in Excel. Basta cambiare il percorso in CSV e il carattere delimitatore in basso.

.psobject.properties.Name |%{if($row -eq1){$ex.ActiveWorkbook.activeSheet.Cells.item($row,$col).Value2=

So che questo è un vecchio thread. Per quelli come me, che hanno ancora questo problema utilizzando Office 2013 tramite l'oggetto com PowerShell possono utilizzare metodo opentext . Il problema è che questo metodo ha molti argomenti, che a volte si escludono a vicenda. Per risolvere questo problema, puoi utilizzare il metodo invoke-namedparameter introdotto in questo post . Un esempio potrebbe essere

$ex = New-Object -com "Excel.Application"
$ex.visible = $true
$csv = "path\to\your\csv.csv"
Invoke-NamedParameter ($ex.workbooks) "opentext" @{"filename"=$csv; "Semicolon"= $true}

Purtroppo ho appena scoperto che questo metodo in qualche modo interrompe l'analisi CSV quando le celle contengono interruzioni di riga. Questo è supportato da CSV, ma l'implementazione di microsoft sembra essere stata corretta. Inoltre, in qualche modo non ha rilevato caratteri specifici tedeschi. Dandogli la cultura corretta non ha cambiato questo comportamento. Tutti i file (csv e script) vengono salvati con codifica utf8. Per prima cosa ho scritto il seguente codice per inserire la cella CSV per cella.

<*>

Ma questo è estremamente lento, motivo per cui ho cercato un'alternativa. Apparentemente Excel ti consente di impostare i valori di un intervallo di celle con una matrice. Quindi ho usato l'algoritmo in questo blog per trasformare il CSV in un multiarray.

<*>

Puoi usare il codice sopra come dovrebbe convertire qualsiasi CSV in Excel. Basta cambiare il percorso in CSV e il carattere delimitatore in basso.

};$ex.ActiveWorkbook.activeSheet.Cells.item($row+1,$col).Value2 =$obj.

So che questo è un vecchio thread. Per quelli come me, che hanno ancora questo problema utilizzando Office 2013 tramite l'oggetto com PowerShell possono utilizzare metodo opentext . Il problema è che questo metodo ha molti argomenti, che a volte si escludono a vicenda. Per risolvere questo problema, puoi utilizzare il metodo invoke-namedparameter introdotto in questo post . Un esempio potrebbe essere

$ex = New-Object -com "Excel.Application"
$ex.visible = $true
$csv = "path\to\your\csv.csv"
Invoke-NamedParameter ($ex.workbooks) "opentext" @{"filename"=$csv; "Semicolon"= $true}

Purtroppo ho appena scoperto che questo metodo in qualche modo interrompe l'analisi CSV quando le celle contengono interruzioni di riga. Questo è supportato da CSV, ma l'implementazione di microsoft sembra essere stata corretta. Inoltre, in qualche modo non ha rilevato caratteri specifici tedeschi. Dandogli la cultura corretta non ha cambiato questo comportamento. Tutti i file (csv e script) vengono salvati con codifica utf8. Per prima cosa ho scritto il seguente codice per inserire la cella CSV per cella.

<*>

Ma questo è estremamente lento, motivo per cui ho cercato un'alternativa. Apparentemente Excel ti consente di impostare i valori di un intervallo di celle con una matrice. Quindi ho usato l'algoritmo in questo blog per trasformare il CSV in un multiarray.

<*>

Puoi usare il codice sopra come dovrebbe convertire qualsiasi CSV in Excel. Basta cambiare il percorso in CSV e il carattere delimitatore in basso.

; $col++ }; $row++;}

Ma questo è estremamente lento, motivo per cui ho cercato un'alternativa. Apparentemente Excel ti consente di impostare i valori di un intervallo di celle con una matrice. Quindi ho usato l'algoritmo in questo blog per trasformare il CSV in un multiarray.

<*>

Puoi usare il codice sopra come dovrebbe convertire qualsiasi CSV in Excel. Basta cambiare il percorso in CSV e il carattere delimitatore in basso.

$j = 0 $properties | % { if ($item.(

So che questo è un vecchio thread. Per quelli come me, che hanno ancora questo problema utilizzando Office 2013 tramite l'oggetto com PowerShell possono utilizzare metodo opentext . Il problema è che questo metodo ha molti argomenti, che a volte si escludono a vicenda. Per risolvere questo problema, puoi utilizzare il metodo invoke-namedparameter introdotto in questo post . Un esempio potrebbe essere

$ex = New-Object -com "Excel.Application"
$ex.visible = $true
$csv = "path\to\your\csv.csv"
Invoke-NamedParameter ($ex.workbooks) "opentext" @{"filename"=$csv; "Semicolon"= $true}

Purtroppo ho appena scoperto che questo metodo in qualche modo interrompe l'analisi CSV quando le celle contengono interruzioni di riga. Questo è supportato da CSV, ma l'implementazione di microsoft sembra essere stata corretta. Inoltre, in qualche modo non ha rilevato caratteri specifici tedeschi. Dandogli la cultura corretta non ha cambiato questo comportamento. Tutti i file (csv e script) vengono salvati con codifica utf8. Per prima cosa ho scritto il seguente codice per inserire la cella CSV per cella.

$ex = New-Object -com "Excel.Application"
$ex.visible = $true;
$csv = "path\to\your\csv.csv";
$ex.workbooks.add();
$ex.activeWorkbook.activeSheet.Cells.NumberFormat = "@";
$data = import-csv $csv -encoding utf8 -delimiter ";"; 
$row = 1; 
$data | %{ $obj = 

So che questo è un vecchio thread. Per quelli come me, che hanno ancora questo problema utilizzando Office 2013 tramite l'oggetto com PowerShell possono utilizzare metodo opentext . Il problema è che questo metodo ha molti argomenti, che a volte si escludono a vicenda. Per risolvere questo problema, puoi utilizzare il metodo invoke-namedparameter introdotto in questo post . Un esempio potrebbe essere

$ex = New-Object -com "Excel.Application"
$ex.visible = $true
$csv = "path\to\your\csv.csv"
Invoke-NamedParameter ($ex.workbooks) "opentext" @{"filename"=$csv; "Semicolon"= $true}

Purtroppo ho appena scoperto che questo metodo in qualche modo interrompe l'analisi CSV quando le celle contengono interruzioni di riga. Questo è supportato da CSV, ma l'implementazione di microsoft sembra essere stata corretta. Inoltre, in qualche modo non ha rilevato caratteri specifici tedeschi. Dandogli la cultura corretta non ha cambiato questo comportamento. Tutti i file (csv e script) vengono salvati con codifica utf8. Per prima cosa ho scritto il seguente codice per inserire la cella CSV per cella.

<*>

Ma questo è estremamente lento, motivo per cui ho cercato un'alternativa. Apparentemente Excel ti consente di impostare i valori di un intervallo di celle con una matrice. Quindi ho usato l'algoritmo in questo blog per trasformare il CSV in un multiarray.

<*>

Puoi usare il codice sopra come dovrebbe convertire qualsiasi CSV in Excel. Basta cambiare il percorso in CSV e il carattere delimitatore in basso.

; $col = 1;

So che questo è un vecchio thread. Per quelli come me, che hanno ancora questo problema utilizzando Office 2013 tramite l'oggetto com PowerShell possono utilizzare metodo opentext . Il problema è che questo metodo ha molti argomenti, che a volte si escludono a vicenda. Per risolvere questo problema, puoi utilizzare il metodo invoke-namedparameter introdotto in questo post . Un esempio potrebbe essere

$ex = New-Object -com "Excel.Application"
$ex.visible = $true
$csv = "path\to\your\csv.csv"
Invoke-NamedParameter ($ex.workbooks) "opentext" @{"filename"=$csv; "Semicolon"= $true}

Purtroppo ho appena scoperto che questo metodo in qualche modo interrompe l'analisi CSV quando le celle contengono interruzioni di riga. Questo è supportato da CSV, ma l'implementazione di microsoft sembra essere stata corretta. Inoltre, in qualche modo non ha rilevato caratteri specifici tedeschi. Dandogli la cultura corretta non ha cambiato questo comportamento. Tutti i file (csv e script) vengono salvati con codifica utf8. Per prima cosa ho scritto il seguente codice per inserire la cella CSV per cella.

<*>

Ma questo è estremamente lento, motivo per cui ho cercato un'alternativa. Apparentemente Excel ti consente di impostare i valori di un intervallo di celle con una matrice. Quindi ho usato l'algoritmo in questo blog per trasformare il CSV in un multiarray.

<*>

Puoi usare il codice sopra come dovrebbe convertire qualsiasi CSV in Excel. Basta cambiare il percorso in CSV e il carattere delimitatore in basso.

.psobject.properties.Name |%{if($row -eq1){$ex.ActiveWorkbook.activeSheet.Cells.item($row,$col).Value2=

So che questo è un vecchio thread. Per quelli come me, che hanno ancora questo problema utilizzando Office 2013 tramite l'oggetto com PowerShell possono utilizzare metodo opentext . Il problema è che questo metodo ha molti argomenti, che a volte si escludono a vicenda. Per risolvere questo problema, puoi utilizzare il metodo invoke-namedparameter introdotto in questo post . Un esempio potrebbe essere

$ex = New-Object -com "Excel.Application"
$ex.visible = $true
$csv = "path\to\your\csv.csv"
Invoke-NamedParameter ($ex.workbooks) "opentext" @{"filename"=$csv; "Semicolon"= $true}

Purtroppo ho appena scoperto che questo metodo in qualche modo interrompe l'analisi CSV quando le celle contengono interruzioni di riga. Questo è supportato da CSV, ma l'implementazione di microsoft sembra essere stata corretta. Inoltre, in qualche modo non ha rilevato caratteri specifici tedeschi. Dandogli la cultura corretta non ha cambiato questo comportamento. Tutti i file (csv e script) vengono salvati con codifica utf8. Per prima cosa ho scritto il seguente codice per inserire la cella CSV per cella.

<*>

Ma questo è estremamente lento, motivo per cui ho cercato un'alternativa. Apparentemente Excel ti consente di impostare i valori di un intervallo di celle con una matrice. Quindi ho usato l'algoritmo in questo blog per trasformare il CSV in un multiarray.

<*>

Puoi usare il codice sopra come dovrebbe convertire qualsiasi CSV in Excel. Basta cambiare il percorso in CSV e il carattere delimitatore in basso.

};$ex.ActiveWorkbook.activeSheet.Cells.item($row+1,$col).Value2 =$obj.

So che questo è un vecchio thread. Per quelli come me, che hanno ancora questo problema utilizzando Office 2013 tramite l'oggetto com PowerShell possono utilizzare metodo opentext . Il problema è che questo metodo ha molti argomenti, che a volte si escludono a vicenda. Per risolvere questo problema, puoi utilizzare il metodo invoke-namedparameter introdotto in questo post . Un esempio potrebbe essere

$ex = New-Object -com "Excel.Application"
$ex.visible = $true
$csv = "path\to\your\csv.csv"
Invoke-NamedParameter ($ex.workbooks) "opentext" @{"filename"=$csv; "Semicolon"= $true}

Purtroppo ho appena scoperto che questo metodo in qualche modo interrompe l'analisi CSV quando le celle contengono interruzioni di riga. Questo è supportato da CSV, ma l'implementazione di microsoft sembra essere stata corretta. Inoltre, in qualche modo non ha rilevato caratteri specifici tedeschi. Dandogli la cultura corretta non ha cambiato questo comportamento. Tutti i file (csv e script) vengono salvati con codifica utf8. Per prima cosa ho scritto il seguente codice per inserire la cella CSV per cella.

<*>

Ma questo è estremamente lento, motivo per cui ho cercato un'alternativa. Apparentemente Excel ti consente di impostare i valori di un intervallo di celle con una matrice. Quindi ho usato l'algoritmo in questo blog per trasformare il CSV in un multiarray.

<*>

Puoi usare il codice sopra come dovrebbe convertire qualsiasi CSV in Excel. Basta cambiare il percorso in CSV e il carattere delimitatore in basso.

; $col++ }; $row++;}

Ma questo è estremamente lento, motivo per cui ho cercato un'alternativa. Apparentemente Excel ti consente di impostare i valori di un intervallo di celle con una matrice. Quindi ho usato l'algoritmo in questo blog per trasformare il CSV in un multiarray.

<*>

Puoi usare il codice sopra come dovrebbe convertire qualsiasi CSV in Excel. Basta cambiare il percorso in CSV e il carattere delimitatore in basso.

) -eq $null) { $array.value[$i,$j] = "" } else { $array.value[$i,$j] = $item.(

So che questo è un vecchio thread. Per quelli come me, che hanno ancora questo problema utilizzando Office 2013 tramite l'oggetto com PowerShell possono utilizzare metodo opentext . Il problema è che questo metodo ha molti argomenti, che a volte si escludono a vicenda. Per risolvere questo problema, puoi utilizzare il metodo invoke-namedparameter introdotto in questo post . Un esempio potrebbe essere

$ex = New-Object -com "Excel.Application"
$ex.visible = $true
$csv = "path\to\your\csv.csv"
Invoke-NamedParameter ($ex.workbooks) "opentext" @{"filename"=$csv; "Semicolon"= $true}

Purtroppo ho appena scoperto che questo metodo in qualche modo interrompe l'analisi CSV quando le celle contengono interruzioni di riga. Questo è supportato da CSV, ma l'implementazione di microsoft sembra essere stata corretta. Inoltre, in qualche modo non ha rilevato caratteri specifici tedeschi. Dandogli la cultura corretta non ha cambiato questo comportamento. Tutti i file (csv e script) vengono salvati con codifica utf8. Per prima cosa ho scritto il seguente codice per inserire la cella CSV per cella.

$ex = New-Object -com "Excel.Application"
$ex.visible = $true;
$csv = "path\to\your\csv.csv";
$ex.workbooks.add();
$ex.activeWorkbook.activeSheet.Cells.NumberFormat = "@";
$data = import-csv $csv -encoding utf8 -delimiter ";"; 
$row = 1; 
$data | %{ $obj = 

So che questo è un vecchio thread. Per quelli come me, che hanno ancora questo problema utilizzando Office 2013 tramite l'oggetto com PowerShell possono utilizzare metodo opentext . Il problema è che questo metodo ha molti argomenti, che a volte si escludono a vicenda. Per risolvere questo problema, puoi utilizzare il metodo invoke-namedparameter introdotto in questo post . Un esempio potrebbe essere

$ex = New-Object -com "Excel.Application"
$ex.visible = $true
$csv = "path\to\your\csv.csv"
Invoke-NamedParameter ($ex.workbooks) "opentext" @{"filename"=$csv; "Semicolon"= $true}

Purtroppo ho appena scoperto che questo metodo in qualche modo interrompe l'analisi CSV quando le celle contengono interruzioni di riga. Questo è supportato da CSV, ma l'implementazione di microsoft sembra essere stata corretta. Inoltre, in qualche modo non ha rilevato caratteri specifici tedeschi. Dandogli la cultura corretta non ha cambiato questo comportamento. Tutti i file (csv e script) vengono salvati con codifica utf8. Per prima cosa ho scritto il seguente codice per inserire la cella CSV per cella.

<*>

Ma questo è estremamente lento, motivo per cui ho cercato un'alternativa. Apparentemente Excel ti consente di impostare i valori di un intervallo di celle con una matrice. Quindi ho usato l'algoritmo in questo blog per trasformare il CSV in un multiarray.

<*>

Puoi usare il codice sopra come dovrebbe convertire qualsiasi CSV in Excel. Basta cambiare il percorso in CSV e il carattere delimitatore in basso.

; $col = 1;

So che questo è un vecchio thread. Per quelli come me, che hanno ancora questo problema utilizzando Office 2013 tramite l'oggetto com PowerShell possono utilizzare metodo opentext . Il problema è che questo metodo ha molti argomenti, che a volte si escludono a vicenda. Per risolvere questo problema, puoi utilizzare il metodo invoke-namedparameter introdotto in questo post . Un esempio potrebbe essere

$ex = New-Object -com "Excel.Application"
$ex.visible = $true
$csv = "path\to\your\csv.csv"
Invoke-NamedParameter ($ex.workbooks) "opentext" @{"filename"=$csv; "Semicolon"= $true}

Purtroppo ho appena scoperto che questo metodo in qualche modo interrompe l'analisi CSV quando le celle contengono interruzioni di riga. Questo è supportato da CSV, ma l'implementazione di microsoft sembra essere stata corretta. Inoltre, in qualche modo non ha rilevato caratteri specifici tedeschi. Dandogli la cultura corretta non ha cambiato questo comportamento. Tutti i file (csv e script) vengono salvati con codifica utf8. Per prima cosa ho scritto il seguente codice per inserire la cella CSV per cella.

<*>

Ma questo è estremamente lento, motivo per cui ho cercato un'alternativa. Apparentemente Excel ti consente di impostare i valori di un intervallo di celle con una matrice. Quindi ho usato l'algoritmo in questo blog per trasformare il CSV in un multiarray.

<*>

Puoi usare il codice sopra come dovrebbe convertire qualsiasi CSV in Excel. Basta cambiare il percorso in CSV e il carattere delimitatore in basso.

.psobject.properties.Name |%{if($row -eq1){$ex.ActiveWorkbook.activeSheet.Cells.item($row,$col).Value2=

So che questo è un vecchio thread. Per quelli come me, che hanno ancora questo problema utilizzando Office 2013 tramite l'oggetto com PowerShell possono utilizzare metodo opentext . Il problema è che questo metodo ha molti argomenti, che a volte si escludono a vicenda. Per risolvere questo problema, puoi utilizzare il metodo invoke-namedparameter introdotto in questo post . Un esempio potrebbe essere

$ex = New-Object -com "Excel.Application"
$ex.visible = $true
$csv = "path\to\your\csv.csv"
Invoke-NamedParameter ($ex.workbooks) "opentext" @{"filename"=$csv; "Semicolon"= $true}

Purtroppo ho appena scoperto che questo metodo in qualche modo interrompe l'analisi CSV quando le celle contengono interruzioni di riga. Questo è supportato da CSV, ma l'implementazione di microsoft sembra essere stata corretta. Inoltre, in qualche modo non ha rilevato caratteri specifici tedeschi. Dandogli la cultura corretta non ha cambiato questo comportamento. Tutti i file (csv e script) vengono salvati con codifica utf8. Per prima cosa ho scritto il seguente codice per inserire la cella CSV per cella.

<*>

Ma questo è estremamente lento, motivo per cui ho cercato un'alternativa. Apparentemente Excel ti consente di impostare i valori di un intervallo di celle con una matrice. Quindi ho usato l'algoritmo in questo blog per trasformare il CSV in un multiarray.

<*>

Puoi usare il codice sopra come dovrebbe convertire qualsiasi CSV in Excel. Basta cambiare il percorso in CSV e il carattere delimitatore in basso.

};$ex.ActiveWorkbook.activeSheet.Cells.item($row+1,$col).Value2 =$obj.

So che questo è un vecchio thread. Per quelli come me, che hanno ancora questo problema utilizzando Office 2013 tramite l'oggetto com PowerShell possono utilizzare metodo opentext . Il problema è che questo metodo ha molti argomenti, che a volte si escludono a vicenda. Per risolvere questo problema, puoi utilizzare il metodo invoke-namedparameter introdotto in questo post . Un esempio potrebbe essere

$ex = New-Object -com "Excel.Application"
$ex.visible = $true
$csv = "path\to\your\csv.csv"
Invoke-NamedParameter ($ex.workbooks) "opentext" @{"filename"=$csv; "Semicolon"= $true}

Purtroppo ho appena scoperto che questo metodo in qualche modo interrompe l'analisi CSV quando le celle contengono interruzioni di riga. Questo è supportato da CSV, ma l'implementazione di microsoft sembra essere stata corretta. Inoltre, in qualche modo non ha rilevato caratteri specifici tedeschi. Dandogli la cultura corretta non ha cambiato questo comportamento. Tutti i file (csv e script) vengono salvati con codifica utf8. Per prima cosa ho scritto il seguente codice per inserire la cella CSV per cella.

<*>

Ma questo è estremamente lento, motivo per cui ho cercato un'alternativa. Apparentemente Excel ti consente di impostare i valori di un intervallo di celle con una matrice. Quindi ho usato l'algoritmo in questo blog per trasformare il CSV in un multiarray.

<*>

Puoi usare il codice sopra come dovrebbe convertire qualsiasi CSV in Excel. Basta cambiare il percorso in CSV e il carattere delimitatore in basso.

; $col++ }; $row++;}

Ma questo è estremamente lento, motivo per cui ho cercato un'alternativa. Apparentemente Excel ti consente di impostare i valori di un intervallo di celle con una matrice. Quindi ho usato l'algoritmo in questo blog per trasformare il CSV in un multiarray.

<*>

Puoi usare il codice sopra come dovrebbe convertire qualsiasi CSV in Excel. Basta cambiare il percorso in CSV e il carattere delimitatore in basso.

).tostring() } $j++ } $i++ } $array } } csvToExcel "storage_stats.csv" ";"

Ma questo è estremamente lento, motivo per cui ho cercato un'alternativa. Apparentemente Excel ti consente di impostare i valori di un intervallo di celle con una matrice. Quindi ho usato l'algoritmo in questo blog per trasformare il CSV in un multiarray.

<*>

Puoi usare il codice sopra come dovrebbe convertire qualsiasi CSV in Excel. Basta cambiare il percorso in CSV e il carattere delimitatore in basso.

; $col = 1;

So che questo è un vecchio thread. Per quelli come me, che hanno ancora questo problema utilizzando Office 2013 tramite l'oggetto com PowerShell possono utilizzare metodo opentext . Il problema è che questo metodo ha molti argomenti, che a volte si escludono a vicenda. Per risolvere questo problema, puoi utilizzare il metodo invoke-namedparameter introdotto in questo post . Un esempio potrebbe essere

$ex = New-Object -com "Excel.Application"
$ex.visible = $true
$csv = "path\to\your\csv.csv"
Invoke-NamedParameter ($ex.workbooks) "opentext" @{"filename"=$csv; "Semicolon"= $true}

Purtroppo ho appena scoperto che questo metodo in qualche modo interrompe l'analisi CSV quando le celle contengono interruzioni di riga. Questo è supportato da CSV, ma l'implementazione di microsoft sembra essere stata corretta. Inoltre, in qualche modo non ha rilevato caratteri specifici tedeschi. Dandogli la cultura corretta non ha cambiato questo comportamento. Tutti i file (csv e script) vengono salvati con codifica utf8. Per prima cosa ho scritto il seguente codice per inserire la cella CSV per cella.

<*>

Ma questo è estremamente lento, motivo per cui ho cercato un'alternativa. Apparentemente Excel ti consente di impostare i valori di un intervallo di celle con una matrice. Quindi ho usato l'algoritmo in questo blog per trasformare il CSV in un multiarray.

<*>

Puoi usare il codice sopra come dovrebbe convertire qualsiasi CSV in Excel. Basta cambiare il percorso in CSV e il carattere delimitatore in basso.

.psobject.properties.Name |%{if($row -eq1){$ex.ActiveWorkbook.activeSheet.Cells.item($row,$col).Value2=

So che questo è un vecchio thread. Per quelli come me, che hanno ancora questo problema utilizzando Office 2013 tramite l'oggetto com PowerShell possono utilizzare metodo opentext . Il problema è che questo metodo ha molti argomenti, che a volte si escludono a vicenda. Per risolvere questo problema, puoi utilizzare il metodo invoke-namedparameter introdotto in questo post . Un esempio potrebbe essere

$ex = New-Object -com "Excel.Application"
$ex.visible = $true
$csv = "path\to\your\csv.csv"
Invoke-NamedParameter ($ex.workbooks) "opentext" @{"filename"=$csv; "Semicolon"= $true}

Purtroppo ho appena scoperto che questo metodo in qualche modo interrompe l'analisi CSV quando le celle contengono interruzioni di riga. Questo è supportato da CSV, ma l'implementazione di microsoft sembra essere stata corretta. Inoltre, in qualche modo non ha rilevato caratteri specifici tedeschi. Dandogli la cultura corretta non ha cambiato questo comportamento. Tutti i file (csv e script) vengono salvati con codifica utf8. Per prima cosa ho scritto il seguente codice per inserire la cella CSV per cella.

<*>

Ma questo è estremamente lento, motivo per cui ho cercato un'alternativa. Apparentemente Excel ti consente di impostare i valori di un intervallo di celle con una matrice. Quindi ho usato l'algoritmo in questo blog per trasformare il CSV in un multiarray.

<*>

Puoi usare il codice sopra come dovrebbe convertire qualsiasi CSV in Excel. Basta cambiare il percorso in CSV e il carattere delimitatore in basso.

};$ex.ActiveWorkbook.activeSheet.Cells.item($row+1,$col).Value2 =$obj.

So che questo è un vecchio thread. Per quelli come me, che hanno ancora questo problema utilizzando Office 2013 tramite l'oggetto com PowerShell possono utilizzare

Nel mio caso, " Sept8 " in un file CSV generato utilizzando R è stato convertito in "8 settembre" da Excel 2013. Il problema è stato risolto utilizzando la funzione write.xlsx2 () nel pacchetto xlsx per generare il file di output in formato xlsx, che può essere caricato da Excel senza conversione indesiderata. Quindi, se ti viene dato un file CSV, puoi provare a caricarlo in R e convertirlo in xlsx usando la funzione write.xlsx2 ().

Una soluzione alternativa utilizzando Google Drive (o Numbers se sei su un Mac):

  1. Apri i dati in Excel
  2. Imposta il formato della colonna con dati errati su Testo (Formatta > Celle > Numero > Testo)
  3. Carica il .csv in Google Drive e aprilo con Fogli Google
  4. Copia la colonna offensiva
  5. Incolla la colonna in Excel come testo (Modifica > Incolla testo speciale >)

In alternativa, se sei su un Mac per il passaggio 3, puoi aprire i dati in Numbers.

(EXCEL 2016 e versioni successive, in realtà non ho provato nelle versioni precedenti)

  1. Apri una nuova pagina vuota
  2. Vai alla scheda " Dati "
  3. Fai clic su " Da testo / CSV " e scegli il tuo file csv
  4. Controlla in anteprima se i tuoi dati sono corretti.
  5. In caso di conversione di una colonna alla data, fai clic su " modifica " e quindi selezionare il tipo di testo facendo clic sul calendario in testa alla colonna
  6. Fai clic su " Chiudi & amp; Carico "

Ok, ho trovato un modo semplice per farlo in Excel 2003 fino al 2007. Apri una cartella di lavoro xls vuota. Quindi vai al menu Dati, importa i dati esterni. Seleziona il tuo file CSV. Passa attraverso la procedura guidata e quindi nel formato dati colonna " seleziona qualsiasi colonna che deve essere forzata a "testo". Ciò importerà l'intera colonna come formato di testo impedendo ad Excel di provare a trattare qualsiasi cella specifica come una data.

Questo problema è ancora presente in Mac Office 2011 e Office 2013, non posso impedirlo. Sembra una cosa così semplice.

Nel mio caso avevo valori come " 1 - 2 " & Amp; "7 - 12" all'interno del CSV racchiuso correttamente tra virgolette, questo si converte automaticamente in una data all'interno di Excel, se si tenta successivamente di convertirlo in solo testo si otterrebbe una rappresentazione numerica della data come 43768. Inoltre riformatta grandi numeri trovati in codici a barre e Numeri EAN in 123E + numeri che non possono essere riconvertiti.

Ho scoperto che i Fogli Google di Google Drive non convertono i numeri in date. I codici a barre contengono virgole ogni 3 caratteri, ma questi possono essere facilmente rimossi. Gestisce i CSV molto bene, specialmente quando si tratta di CSV MAC / Windows.

Potrebbe salvare qualcuno prima o poi.

SOLUZIONE PIÙ FACILE L'ho appena capito oggi.

  • Apri in Word
  • Sostituisci tutti i trattini con trattini
  • Salva e chiudi
  • Apri in Excel

Una volta terminata la modifica, è sempre possibile riaprirlo nuovamente in Word per sostituire nuovamente i trattini con trattini.

Incolla la tabella in parola. Cerca / sostituisci e cambia tutto - (trattini) in - (trattino doppio). Copia e incolla in Excel. Può fare lo stesso per altri simboli (/), ecc. Se è necessario tornare a un trattino una volta in Excel, basta formattare la colonna in testo, quindi apportare la modifica. Spero che questo aiuti.

Faccio questo per i numeri di carta di credito che continuano a essere convertiti in notazione scientifica: finisco per importare il mio .csv in Fogli Google. Le opzioni di importazione ora consentono di disabilitare la formattazione automatica dei valori numerici. Ho impostato le colonne sensibili su Testo normale e ho scaricato come xlsx.

È un flusso di lavoro terribile, ma almeno i miei valori sono lasciati come dovrebbero essere.

Ho creato questa macro vba che sostanzialmente formatta l'intervallo di output come testo prima di incollare i numeri. Funziona perfettamente per me quando voglio incollare valori come 8/11, 23/6, 1/3 ecc. Senza che Excel li interpreti come date.

Sub PasteAsText()
' Created by Lars-Erik Sørbotten, 2017-09-17
Call CreateSheetBackup

Columns(ActiveCell.Column).NumberFormat = "@"

Dim DataObj As MSForms.DataObject
Set DataObj = New MSForms.DataObject
DataObj.GetFromClipboard

ActiveCell.PasteSpecial

End Sub

Sono molto interessato a sapere se questo funziona anche per altre persone. Ho cercato una soluzione a questo problema per un po ', ma non ho mai visto una soluzione VBA rapida prima che non includesse l'inserimento' davanti al testo di input. Questo codice conserva i dati nella sua forma originale.

Se inserisci una virgola capovolta all'inizio del campo, verrà interpretata come testo.

Esempio: 25/12/2008 diventa '25/12/2008

Puoi anche selezionare il tipo di campo durante l'importazione.

scroll top