Исключение при конвертации из XLSX в PDFC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Исключение при конвертации из XLSX в PDF

Сообщение Anonymous »

У меня возникли проблемы в моей программе. Сначала я записываю данные в уже существующую книгу Excel, затем конвертирую файл из XLSX в PDF.
Данные каждый раз корректно вставляются в Excel, но когда они достигают строка преобразования («pdf.ConvertFile(excelFile, pdfFile);»), программа выдает мне исключение («System.Exception: 'Текст не может содержать символы с кодом меньше 32 (пробел). Для этих символов используйте экземпляр SpecialCharacter .'").
Я уже пробовал каждое регулярное выражение или входную строку, оно всегда дает мне один и тот же совет. Когда я запускаю программу, не вставляя что-либо в Excel через EPPlus, преобразование работает нормально.
Я считаю, что способ вставки строк в лист EPPlus использует недопустимые символы, но я этого не делаю. Не знаю, как это исправить.
Я использую EPPlus для вставки данных в лист, SautinSoft для преобразования XLSX2PDF и PdfSharp для удаления пустой страницы PDF-файла. Уже попробовал Aspose, программа заработала так, как я хотел, но водяной знак слишком скандальный.

Код: Выделить всё

using System;
using System.IO;
using PdfSharp.Pdf.IO;
using PdfSharp.Pdf;
using SautinSoft;
using OfficeOpenXml;
using System.Text.RegularExpressions;
using System.Runtime.CompilerServices;

namespace ToPDF
{
class Program
{
static void Main(string[] args)
{
ExcelPackage.LicenseContext = LicenseContext.NonCommercial;

string ExcelPath = "/Documents/Planilhas/Plant.xlsx";
Program p = new Program();

using (var package = new ExcelPackage(new FileInfo(ExcelPath)))
{
ExcelWorksheet capa = package.Workbook.Worksheets[0];
ExcelWorksheet UNS = package.Workbook.Worksheets[1];
ExcelWorksheet Sheet1 = package.Workbook.Worksheets[2];

p.InsertInto(Sheet1, "C4", $"{DateTime.Now.Year}/{DateTime.Now.Month}");

package.Save();
}

p.Xlsx2Pdf(ExcelPath);

}
private void InsertInto(ExcelWorksheet worksheet, string celula, string valor)
{
string cleanValor = CleanInput(valor);
worksheet.Cells[celula].Value = cleanValor;
}

private static string CleanInput(string input)
{
return Regex.Replace(input, @"[\x00-\x1F]", "");
}

private void Xlsx2Pdf(string excelFile)
{
ExcelToPdf pdf = new ExcelToPdf();
pdf.OutputFormat = SautinSoft.ExcelToPdf.eOutputFormat.Pdf;

string pdfFile = Path.ChangeExtension(excelFile, ".pdf");

pdf.PageStyle.PageScale.FitByHeight();

pdf.ConvertFile(excelFile, pdfFile);

PdfDocument p = PdfReader.Open(pdfFile, PdfDocumentOpenMode.Modify);

int page = 1;

p.Pages.RemoveAt(page);
p.Save(pdfFile);
}
}
}
Я уже пробовал Aspose.cells, и он работал, но водяной знак был слишком большим. Когда я не «package.Save()» вношу изменения в лист, преобразование работает. Я уже пробовал несколько методов REGEX и обработки строк, но проблема, похоже, связана с самим методом EPPlus

Подробнее здесь: https://stackoverflow.com/questions/788 ... lsx-to-pdf
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»