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.
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.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
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"
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"
Bu sitenin çalışmasını sağlamak için gerekli çerezleri ve deneyiminizi iyileştirmek için isteğe bağlı çerezleri kullanıyoruz.