PDF'te ki bilgiler ile nasıl Excel dosyası oluşturulur?

mrtard50

Hectopat
Katılım
29 Aralık 2021
Mesajlar
248
Daha fazla  
Cinsiyet
Erkek
Merhaba benım ıcın Excel dosyası olusturabılecek ya da işimi hızlandırabılecek bir şeye ihtiyacım var sahip oldugum PDF'in içindeki bazı bilgileri alıp Excel dosyası yapmam lazım.
 
Halledebildiniz mi? Benim de böyle bir şeye ihtiyacım olabilir. Katalog ve fiyat listesi revize etme gibi bir planım var.
 
Halledebildiniz mi? Benim de böyle bir şeye ihtiyacım olabilir. Katalog ve fiyat listesi revize etme gibi bir planım var.

PDF gelen faturaları Excel Power query ile Excel sheet haline getirmiştim birkeresinde, bu yöntemi deneyebilirsiniz. Link.

Linkteki yöntem güzel fakat her seferinde bunu yapmak bana daha çok iş çıkarabalir PDF'in içinden bilgilerden sadece burayı almam gerekiyor ve bu şekilde 1000 PDF var.
1722770796472.png
 
Linkteki yöntem güzel fakat her seferinde bunu yapmak bana daha çok iş çıkarabalir PDF'in içinden bilgilerden sadece burayı almam gerekiyor ve bu şekilde 1000 PDF var. Eki Görüntüle 2273599
Eğer işleyeceğiniz PDF dosyaları aynı formatta ise dediğim yöntem kullanılabilir, benim E-Faturaları Excel tablosuna çevirmek için kullandığım Power Query'i buraya yazıyorum sizin için birkaç yorum satırı ekledim. Biraz denemeyle kodu kendi ihtiyacınıza göre uyarlayabilirsiniz.

Power Query' deki bazı fonksiyonlar (Pdf.Tables) gibileri Excel sürümü eski ise çalışmayabilir, benim kullandığım sürüm ise Excel 2019.

Kod:
let
    // PDF dosyalarını içeren klasör
    Source = Folder.Files("D:\\Desktop\\Dosyalar\\İş\\faturalar"),
    // Sadece PDF uzantılı dosyaları seç
    FilteredFiles = Table.SelectRows(Source, each [Extension] = ".pdf"),
    // PDF dosyalarını kullanabilmek için ek bir sütun oluştur, her bir dosyayı bu döngüde işle.
    AddCustom = Table.AddColumn(FilteredFiles, "ProcessedTables", each let
    // Döngü kısmı
        // PDF dosyasını bir değişkene yükle
        PdfFile = [Content],
        // PDF dosyasındaki tabloları sütundaki hücreye veri olarak ekle
        ExtractedTables = Pdf.Tables(PdfFile, [Implementation = "1.3"]),
        // PDF Dosyasından çıkan "Table002" tablosunu al(benim işlediğim e-faturalarda pdf dosyasının sadece bu tablo gerekliydi)
        TableData = ExtractedTables{[Id="Table002"]}[Data],
        // İlk satırı silme işlemi(veriyi ayıklama kısmı)
        RemovedFirstRow = Table.Skip(TableData, 1),
        // Son 5 satırı silme işlemi
        RemovedLast5Rows = Table.RemoveLastN(RemovedFirstRow, 5),
        // Boş satırları tablodan silme işlemi
        NonEmptyRows = Table.SelectRows(RemovedLast5Rows, each List.NonNullCount(List.Transform(Record.FieldValues(_), each Text.Trim(Text.From(_)))) > 0)
    in
        NonEmptyRows),
    // Bütün PDF tablolarını birleştir
    CombinedData = Table.Combine(AddCustom[ProcessedTables]),

    // Burasını editörle kendim ayarlamıştım, burayı kendinize göre yaparsınız
    #"Renamed Columns" = Table.RenameColumns(CombinedData,{{"Column10", "Fiyat"}}),
    #"Replaced Value" = Table.ReplaceValue(#"Renamed Columns","TL","",Replacer.ReplaceText,{"Fiyat"}),
    #"Changed Type" = Table.TransformColumnTypes(#"Replaced Value",{{"Fiyat", Currency.Type}}),
    #"Filtered Rows" = Table.SelectRows(#"Changed Type", each [Fiyat] <> null and [Fiyat] <> ""),
    #"Renamed Columns1" = Table.RenameColumns(#"Filtered Rows",{{"Column2", "İsim"}}),
    #"Removed Columns" = Table.RemoveColumns(#"Renamed Columns1",{"Column1"}),
    #"Renamed Columns2" = Table.RenameColumns(#"Removed Columns",{{"Column3", "Adet"}}),
    #"Replaced Value1" = Table.ReplaceValue(#"Renamed Columns2","Adet","",Replacer.ReplaceText,{"Adet"}),
    #"Renamed Columns3" = Table.RenameColumns(#"Replaced Value1",{{"Column4", "Adet Fiyat"}}),
    #"Replaced Value2" = Table.ReplaceValue(#"Renamed Columns3","TL","",Replacer.ReplaceText,{"Adet Fiyat"}),
    #"Changed Type1" = Table.TransformColumnTypes(#"Replaced Value2",{{"Adet Fiyat", Currency.Type}}),
    #"Removed Columns1" = Table.RemoveColumns(#"Changed Type1",{"Column5", "Column6"}),
    #"Renamed Columns4" = Table.RenameColumns(#"Removed Columns1",{{"Column7", "KDV"}, {"Column8", "KDV Tutar"}}),
    #"Removed Columns2" = Table.RemoveColumns(#"Renamed Columns4",{"Column9"}),
    #"Replaced Value3" = Table.ReplaceValue(#"Removed Columns2","TL","",Replacer.ReplaceText,{"KDV Tutar"}),
    #"Changed Type2" = Table.TransformColumnTypes(#"Replaced Value3",{{"KDV Tutar", Currency.Type}})
in
    #"Changed Type2"
 
Son düzenleme:
Eğer işleyeceğiniz PDF dosyaları aynı formatta ise dediğim yöntem kullanılabilir, benim e-faturaları Excel tablosuna çevirmek için kullandığım Power Query'i buraya yazıyorum sizin için birkaç yorum satırı ekledim. Biraz denemeyle kodu kendi ihtiyacınıza göre uyarlayabilirsiniz.

Power Query'deki bazı fonksiyonlar (PDF. Tables) gibileri Excel sürümü eski ise çalışmayabilir, benim kullandığım sürüm ise Excel 2019.

Kod:
let
 // PDF dosyalarını içeren klasör.
 Source = Folder.Files("D:\\Desktop\\Dosyalar\\İş\\faturalar"),
 // Sadece PDF uzantılı dosyaları seç.
 FilteredFiles = Table.SelectRows(Source, each [Extension] = ".pdf"),
 // PDF dosyalarını kullanabilmek için ek bir sütun oluştur, her bir dosyayı bu döngüde işle.
 AddCustom = Table.AddColumn(FilteredFiles, "ProcessedTables", each let.
 // Döngü kısmı.
 // PDF dosyasını bir değişkene yükle.
 PdfFile = [Content],
 // PDF dosyasındaki tabloları sütundaki hücreye veri olarak ekle.
 ExtractedTables = Pdf.Tables(PdfFile, [Implementation = "1.3"]),
 // PDF Dosyasından çıkan "Table002" tablosunu al(benim işlediğim e-faturalarda pdf dosyasının sadece bu tablo gerekliydi)
 TableData = ExtractedTables{[Id="Table002"]}[Data],
 // İlk satırı silme işlemi(veriyi ayıklama kısmı)
 RemovedFirstRow = Table.Skip(TableData, 1),
 // Son 5 satırı silme işlemi.
 RemovedLast5Rows = Table.RemoveLastN(RemovedFirstRow, 5),
 // Boş satırları tablodan silme işlemi.
 NonEmptyRows = Table.SelectRows(RemovedLast5Rows, each List.NonNullCount(List.Transform(Record.FieldValues(_), each Text.Trim(Text.From(_)))) > 0)
 in.
 NonEmptyRows),
 // Bütün PDF tablolarını birleştir.
 CombinedData = Table.Combine(AddCustom[ProcessedTables]),

 // Burasını editörle kendim ayarlamıştım, burayı kendinize göre yaparsınız.
 #"Renamed Columns" = Table.RenameColumns(CombinedData,{{"Column10", "Fiyat"}}),
 #"Replaced Value" = Table.ReplaceValue(#"Renamed Columns","TL","",Replacer.ReplaceText,{"Fiyat"}),
 #"Changed Type" = Table.TransformColumnTypes(#"Replaced Value",{{"Fiyat", Currency.Type}}),
 #"Filtered Rows" = Table.SelectRows(#"Changed Type", each [Fiyat] <> null and [Fiyat] <> ""),
 #"Renamed Columns1" = Table.RenameColumns(#"Filtered Rows",{{"Column2", "İsim"}}),
 #"Removed Columns" = Table.RemoveColumns(#"Renamed Columns1",{"Column1"}),
 #"Renamed Columns2" = Table.RenameColumns(#"Removed Columns",{{"Column3", "Adet"}}),
 #"Replaced Value1" = Table.ReplaceValue(#"Renamed Columns2","Adet","",Replacer.ReplaceText,{"Adet"}),
 #"Renamed Columns3" = Table.RenameColumns(#"Replaced Value1",{{"Column4", "Adet Fiyat"}}),
 #"Replaced Value2" = Table.ReplaceValue(#"Renamed Columns3","TL","",Replacer.ReplaceText,{"Adet Fiyat"}),
 #"Changed Type1" = Table.TransformColumnTypes(#"Replaced Value2",{{"Adet Fiyat", Currency.Type}}),
 #"Removed Columns1" = Table.RemoveColumns(#"Changed Type1",{"Column5", "Column6"}),
 #"Renamed Columns4" = Table.RenameColumns(#"Removed Columns1",{{"Column7", "KDV"}, {"Column8", "KDV Tutar"}}),
 #"Removed Columns2" = Table.RemoveColumns(#"Renamed Columns4",{"Column9"}),
 #"Replaced Value3" = Table.ReplaceValue(#"Removed Columns2","TL","",Replacer.ReplaceText,{"KDV Tutar"}),
 #"Changed Type2" = Table.TransformColumnTypes(#"Replaced Value3",{{"KDV Tutar", Currency.Type}})
in.
 #"Changed Type2"

Çok teşekkür ederim bu cidden kullanışlı.
 

Technopat Haberler

Yeni konular

Geri
Yukarı