2011-08-03 2 views
2

Как экспортировать только содержимое таблицы в файл excel через программирование на C#? В настоящее время я извлекаю все содержимое из PDF-файлов, используя PDFNET SDK, но не смог прочитать таблицу как табличную структуру.Экспортировать таблицы из pdf в Excel?

+0

В PDF нет реальной табличной структуры ... так что вам в основном придется прибегать к каким-то «распознаваниям таблиц» ... которые по определению будут давать некоторые правильные и некорректные результаты ... – Yahia

ответ

2

Я попытался использовать вышеупомянутые решения, но не смог его реализовать. Существует так много бесплатных sdk или dll, таких как pdfnet, pdfclown, itextsharp, pdfbox, pdflib.Finally снова попытался с помощью pdfnet sdk, теперь я могу в состоянии сделать это, если мой ввод pdf имеет тип tagged pdf.

+0

с помощью word.bbox() и line.bbox() ... –

2

Я знаю, что SDK для этого продукта не использовал, но я использовал автономный продукт , Он читает содержимое PDF в электронной таблице (многие опции экспорта).

Продукт OmniPage от Nuance http://australia.nuance.com/for-business/by-product/omnipage/index.htm.

есть SDK со свободной оценкой.

0

Использование bytescount PDF Extractor SDK, мы можем быть в состоянии извлечь всю страницу, как показано ниже,

 CSVExtractor extractor = new CSVExtractor(); 
     extractor.RegistrationName = "demo"; 
     extractor.RegistrationKey = "demo"; 

     TableDetector tdetector = new TableDetector(); 
     tdetector.RegistrationKey = "demo"; 
     tdetector.RegistrationName = "demo"; 

      // Load the document 
     extractor.LoadDocumentFromFile("C:\\sample.pdf"); 
     tdetector.LoadDocumentFromFile("C:\\sample.pdf"); 

      int pageCount = tdetector.GetPageCount(); 

      for (int i = 1; i <= pageCount; i++) 
      { 
       int j = 1; 

        do 
        { 
          extractor.SetExtractionArea(tdetector.GetPageRect_Left(i), 
          tdetector.GetPageRect_Top(i), 
          tdetector.GetPageRect_Width(i), 
          tdetector.GetPageRect_Height(i) 
         ); 

         // and finally save the table into CSV file 
         extractor.SavePageCSVToFile(i, "C:\\page-" + i + "-table-" + j + ".csv"); 
         j++; 
        } while (tdetector.FindNextTable()); // search next table 
      } 

, так как это старый пост, надеюсь, что это поможет другим.

0

Выше ответ (Джон) работает, это действительно полезно.

Но вместо использования кода я использую инструменты SDK для PDF-экстрасчета байтов.

Кстати, инструмент будет генерировать много листов в одном файле excel.

Вы можете использовать код, указанный ниже, в excel, чтобы сгенерировать его как один лист.

Sub ConvertAsOne() 
Application.ScreenUpdating = False 
For j = 1 To Sheets.Count 
If Sheets(j).Name <> ActiveSheet.Name Then 
    X = Range("A65536").End(xlUp).Row + 1 
    Sheets(j).UsedRange.Copy Cells(X, 1) 
End If 
Next 
Range("B1").Select 
Application.ScreenUpdating = True 
MsgBox "succeed!", vbInformation, "note" 
End Sub 
Смежные вопросы