v2.5.2
Giriş yap

Bir diziyi kopyalayıp Excel'e yapıştırmak (Bilgi paylaşımı)

trsherlock
350 defa görüntülendi ve 3 kişi tarafından değerlendirildi

İyi günler arkadaşlar

Bugün efatura, earşiv faturalalarını çözümleyip muhasebe kaydı olarak çıktısını alıp excele yapıştırmak istiyordum.
Kopyalama işleminin ardından Excel'e yapıştırdığım zaman metin olarak kalması "600.001" değerlerim var.
Kopyala, yapıştır işleminin ardından 600.001 gibi değerler sayı olarak algılanıyor.
Hatta \"600.001\" tırnak içinde kullanıp yapıştırmama rağmen istediğim sonucu alamadım hep sayı..

Şimdilik bir çözüm buldum. Belki ihtiyacı olan olur paylaşmak istedim.

Sayı gibi görünen değerleri excel formülü olarak tırnak içine alırsak. Excel tarafından metin olarak algılanacaktır.

600.001 => ="600.001"

let gmFisi = [
    {
        gmkod: "600.018",
        vergino: "2222222222",
        aciklama: "FATURALI SATIŞ",
        borclu: 0,
        alacakli: 500,
    },
    {
        gmkod: "391.018",
        vergino: "2222222222",
        aciklama: "FATURALI SATIŞ",
        borclu: 0,
        alacakli: 90,
    }
    {
        gmkod: "100",
        vergino: "2222222222",
        aciklama: "FATURALI SATIŞ",
        boclu: 590,
        alacakli: 0
    }
]
let gmfisiExcel = "Hesap Kodu\tVergi No\tAçıklama\tBorçu\tAlacaklı";
gmFisi.forEach(r=>{
    gmFisiExcel += `="${r.gmkod}"\t="${r.vergino}"\t${r.aciklama}\t${r.borclu}\t${r.alacakli}\n`
})
navigator.clipboard.writeText(gmfisiExcel)
Cevap yaz
Cevaplar (1)
trsherlock
559 gün önce

Web sayfasındaki biçimlendirilmiş bir tabloyu seçip kopyalayıp, biçimlendirilmiş olarak Excel'e yapıştırmanın javascript ile yapılması.

  • Sütun genişlikleri alınmıyor.
  • Metin olarak saklanması istenen td etiketlerinin niteliğinde type="text" olması yeterli.
  • Sayı formatlarının da ülkemize göre ondalık değer "," olmalı. Tabloya işlenen veya arka planda oluşturulan bir tabloda sayılara dikkat edilmeli.
<table>
    <style>
        table {
            border: solid 2px blue;
        }
        td {
            border: solid 1px blue
        }
        tbody > tr:nth-child(odd){
            background-color: #e8eef7;
        }
        tbody > tr:nth-child(even){
            background-color: #ffffec
        }
    </style>
    <thead>
        <tr>
            <th style="width:150pt">GmKod</th>
            <th style="width:150pt">Tutar</th>
        </tr>
    </thead>
    <tbody>
        <tr>
            <td type="text">600.001</td>
            <td type="number">500,00</td>
        </tr>
        <tr>
            <td type="text">391.018</td>
            <td type="number">90,00</td>
        </tr>
        <tr>
            <td type="text">600.001</td>
            <td type="number">500,00</td>
        </tr>
        <tr>
            <td type="text">391.018</td>
            <td type="number">90,00</td>
        </tr>
        <tr>
            <td type="text">600.001</td>
            <td type="number">500,00</td>
        </tr>
        <tr>
            <td type="text">391.018</td>
            <td type="number">90,00</td>
        </tr>
        <tr>
            <td type="text">600.001</td>
            <td type="number">500,00</td>
        </tr>
        <tr>
            <td type="text">391.018</td>
            <td type="number">90,00</td>
        </tr>
    </tbody>
  </table>
  <button onclick="copy()">Koyala</button>
function copy(){
        let $table = document.querySelector("table")
        $tableTxt = $table.outerHTML.replaceAll(/\n/g, "");
      $csTxt = $tableTxt.replaceAll(/(?<=<td type="text">)(.*?)(?=<.*\/.+.?>)/g,"=\"$1\"")
     // console.log($csTxt);
        const type = "text/html";
        const blob = new Blob([$csTxt], { type });
        const data = [new ClipboardItem({ [type]: blob })];
        navigator.clipboard.write(data).then(
            () => {
                console.log("Başarılı");
            },
            () => {
                console.log("error");
            }
        );
    }