Member 10433844 Ответов: 3

Как найти и извлечь PDF-таблицу в файл excel на языке C# с помощью iTextSharp


Может ли кто-нибудь помочь мне извлечь PDF-таблицу и поместить ее в файл excel в надлежащем формате? Я использую библиотеку DLL iTextSharp.

3 Ответов

Рейтинг:
2

Member 11622445

Пространство имен


использование System.Text;
использование системы.ИО;
с помощью iTextSharp.текст;
с помощью iTextSharp.текст.формат PDF;
с помощью iTextSharp.текст.формат PDF.парсер;




Код


охраняемых недействительными ExportToExcel(объект отправителя, EventArgs в электронной)
{
если (это.fuPdfUpload.HasFile)
{
строковый файл = путь.GetFullPath(fuPdfUpload.PostedFile.имя файла);
this.ExportPDFToExcel(файл);
}
}

private void ExportPDFToExcel(строковое имя файла)
{
StringBuilder text = новый StringBuilder();
PdfReader pdfReader = новый PdfReader(имя файла);
for (int page = 1; page <= pdfReader.NumberOfPages; page++)
{
ITextExtractionStrategy strategy = new LocationTextExtractionStrategy();
строка currentText = PdfTextExtractor.GetTextFromPage(pdfReader, страница, стратегия);
currentText = Encoding.UTF8.GetString(кодировка.Преобразования(Кодирования.кодировка по умолчанию.Как utf8, кодировка.Кодировке utf8.GetBytes(currentText)));
текст.Добавить(currentText);
pdfReader.Закрывать();
}
Ответ.Четкий();
Ответ.Буфер = true;
Ответ.AddHeader("content-disposition", "attachment;filename=ReceiptExport.xls");
Ответ.Кодировка = "";
Ответ.Значение contentType = "применение/донгов.в MS-Excel с";
Ответ.Письменный текст);
Ответ.Промывать();
Ответ.Конец();
}


CHill60

Этому вопросу уже больше года, и он уже решен. Ответы на старые сообщения могут привлечь downvotes.
Это решение было опубликовано по адресу http://aspforums.net/Threads/180443/Convert-a-PDF-File-to-Excel-File-using-iTextSharp-using-C-Net/[^- пару месяцев назад. Утверждение, что чужая работа является вашей собственной, также привлечет downvotes.

Рейтинг:
1

Maciej Los

Это довольно часто задаваемый вопрос. Пожалуйста, смотрите: Окнопоиска[^]


Рейтинг:
1

Member 14684425

Во время итерации pdfReader возникнет проблема.Метод close() выдает ошибку что

System.ObjectDisposedException
вы должны написать эту команду close() как раз под итерацией for код должен быть таким:

protected void ExportToExcel(object sender, EventArgs e)
{
if (this.fuPdfUpload.HasFile)
{
string file = Path.GetFullPath(fuPdfUpload.PostedFile.FileName);
this.ExportPDFToExcel(file);
}
}

private void ExportPDFToExcel(string fileName)
{
StringBuilder text = new StringBuilder();
PdfReader pdfReader = new PdfReader(fileName);
for (int page = 1; page <= pdfReader.NumberOfPages; page++)
{
ITextExtractionStrategy strategy = new LocationTextExtractionStrategy();
string currentText = PdfTextExtractor.GetTextFromPage(pdfReader, page, strategy);
currentText = Encoding.UTF8.GetString(Encoding.Convert(Encoding.Default, Encoding.UTF8, Encoding.UTF8.GetBytes(currentText)));
text.Append(currentText);
}
pdfReader.Close();
Response.Clear();
Response.Buffer = true;
Response.AddHeader("content-disposition", "attachment;filename=ReceiptExport.xls");
Response.Charset = "";
Response.ContentType = "application/vnd.ms-excel";
Response.Write(text);
Response.Flush();
Response.End();
}


Maciej Los

Мой голос-1.
Причина в том, что ваш ответ не соответствует вопросу.

Member 14684425

Там будет решение, и это неправильно, я просто хочу сказать, что есть ошибка, и я ее исправлю.

CHill60

Это должен быть комментарий к решению 2 - вы должны были опубликовать его как комментарий или дать понять, что имеете в виду решение 1