首页 > 其他分享 >CSharp: Excel Convert Pdf

CSharp: Excel Convert Pdf

时间:2023-07-18 22:47:35浏览次数:45  
标签:Convert using Spire Excel new PDF Pdf

 

/**
 * net core 6
 * **/
using IronPdf;
using OfficeOpenXml;
using System.Text;

using Spire.Pdf;
using Spire.Pdf.Graphics;
using Spire.Xls;


using NPOI.SS.UserModel;
using NPOI.XSSF.UserModel;
using iTextSharp.text;
using iTextSharp.text.pdf;




namespace App
{

    /// <summary>
    /// 
    /// </summary>
    public class ExcelHelper
    {


        /// <summary>
        /// 
        /// </summary>
        /// <param name="excelFilePath"></param>
        /// <param name="pdfFilePath"></param>
        public static void ConvertExcelToPdf(string excelFilePath, string pdfFilePath)
        {
            // 读取Excel文件
            using (ExcelPackage package = new ExcelPackage(new FileInfo(excelFilePath)))
            {
                ExcelPackage.LicenseContext = LicenseContext.NonCommercial;
                ExcelWorksheet worksheet = package.Workbook.Worksheets[0]; // 假设要转换的工作表是第一个工作表

                // 创建一个HTML字符串,将Excel内容转换为HTML
                string htmlContent = ExcelToHtml(worksheet);

                // 使用IronPDF将HTML字符串转换为PDF
                var renderer = new HtmlToPdf();
                renderer.PrintOptions.MarginTop = 0;
                renderer.PrintOptions.MarginBottom = 0;
                renderer.PrintOptions.MarginLeft = 0;
                renderer.PrintOptions.MarginRight = 0;
                var pdf = renderer.RenderHtmlAsPdf(htmlContent);

                // 保存PDF文件
                pdf.SaveAs(pdfFilePath);
            }
        }
        /// <summary>
        /// 
        /// </summary>
        /// <param name="worksheet"></param>
        /// <returns></returns>
        public static string ExcelToHtml(ExcelWorksheet worksheet)
        {
            var sb = new StringBuilder();
            sb.AppendLine("<table>");
            var startRow = worksheet.Dimension.Start.Row;
            var endRow = worksheet.Dimension.End.Row;
            var startColumn = worksheet.Dimension.Start.Column;
            var endColumn = worksheet.Dimension.End.Column;

            for (int row = startRow; row <= endRow; row++)
            {
                sb.AppendLine("<tr>");

                for (int col = startColumn; col <= endColumn; col++)
                {
                    var cellValue = worksheet.Cells[row, col].Value;
                    sb.AppendLine("<td>" + (cellValue != null ? cellValue.ToString() : "") + "</td>");
                }

                sb.AppendLine("</tr>");
            }
            sb.AppendLine("</table>");
            return sb.ToString();
        }
        /// <summary>
        /// 
        /// </summary>
        /// <param name="excelFilePath"></param>
        /// <param name="pdfFilePath"></param>
        public static void SprieConvertExcelToPdf(string excelFilePath, string pdfFilePath)
        {
            // 加载Excel文件
            Workbook workbook = new Workbook();
            workbook.LoadFromFile(excelFilePath);
            // 创建PDF文档
            Spire.Pdf.PdfDocument pdfDocument = new Spire.Pdf.PdfDocument();
            // 添加Excel表格内容到PDF
            foreach (Worksheet sheet in workbook.Worksheets)
            {
                Spire.Pdf.PdfPageBase pdfPage = pdfDocument.Pages.Add();
                Spire.Pdf.PdfDocument document = new Spire.Pdf.PdfDocument();
                Spire.Pdf.Graphics.PdfTrueTypeFont fonts = new Spire.Pdf.Graphics.PdfTrueTypeFont(@"C:\Windows\Fonts\simfang.ttf", 10f);
                // 获取Excel表格的行数和列数
                int rowCount = sheet.LastRow + 1;
                int columnCount = sheet.LastColumn + 1;
                // 将Excel表格内容逐个添加到PDF
                for (int row = 1; row <= rowCount; row++)
                {
                    for (int column = 1; column <= columnCount; column++)
                    {
                        string value = sheet.Range[row, column].Text;
                        if (value != null)
                        // 绘制单元格内容到PDF页面
                        {
                            pdfPage.Canvas.DrawString(value, fonts, PdfBrushes.Black, column * 70, row * 20);
                        }
                    }
                }
            }
            // 保存PDF文件
            pdfDocument.SaveToFile(pdfFilePath);
            Console.WriteLine("PDF转换完成。");
        }
        /// <summary>
        /// 
        /// </summary>
        /// <param name="excelFilePath"></param>
        /// <param name="pdfFilePath"></param>
        public static void ConvertExcelToPdf2(string excelFilePath, string pdfFilePath)
        {
            Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);
            // 加载Excel文件
            using (FileStream fileStream = new FileStream(excelFilePath, FileMode.Open, FileAccess.Read))
            {
                IWorkbook workbook = new XSSFWorkbook(fileStream);
                ISheet sheet = workbook.GetSheetAt(0);
                // 创建PDF文档
               iTextSharp.text.Document document = new iTextSharp.text.Document();
                // 创建PDF写入器
                iTextSharp.text.pdf.PdfWriter writer = iTextSharp.text.pdf.PdfWriter.GetInstance(document, new FileStream(pdfFilePath, FileMode.Create));
                // 打开PDF文档
                document.Open();
                // 添加Excel表格内容到PDF
                iTextSharp.text.pdf.PdfPTable table = new iTextSharp.text.pdf.PdfPTable(sheet.GetRow(0).LastCellNum);
                table.WidthPercentage = 100;

                foreach (IRow row in sheet)
                {
                    foreach (ICell cell in row)
                    {
                        string value = cell.ToString();
                        PdfPCell pdfCell = new PdfPCell(new Phrase(value, GetChineseFont()));
                        table.AddCell(pdfCell);
                    }
                }
                document.Add(table);
                // 关闭PDF文档
                document.Close();
            }
            Console.WriteLine("PDF转换完成。");
        }
        /// <summary>
        /// 
        /// </summary>
        /// <returns></returns>
        static Font GetChineseFont()
        {
            var baseFont = BaseFont.CreateFont(@"C:\Windows\Fonts\simfang.ttf", BaseFont.IDENTITY_H, BaseFont.EMBEDDED);
            return new Font(baseFont, 12);
        }

    }
}

  

标签:Convert,using,Spire,Excel,new,PDF,Pdf
From: https://www.cnblogs.com/geovindu/p/17564320.html

相关文章

  • 【专题】2022年中国制造业数字化转型研究报告PDF合集分享(附原数据表)
    报告链接:http://tecdat.cn/?p=32145原文出处:拓端数据公众号本文中所说的制造业数字化转型,指的是在制造企业的设计、生产、管理、销售及服务的每一个环节中,将新一代信息技术应用到制造企业的设计、生产、管理、销售及服务的每一个环节中,并可以以每一个环节中产生的数据为基础,展开......
  • Damiler EDI 项目 Excel 方案开源介绍
    准备下载和运行DaimlerEDI到Excel使用Excel生成一系列EDI文档与Daimler通信。下载工作流  下载示例文件  DaimlerEDI&Excel方案简介本文将继续分享Daimler示例工作流:使用Excel端口和Email端口生成一系列文件,完成与Daimler的EDI通信。DaimlerEDI到Excel示......
  • Python获取文件夹下文件夹的名字,并存excel为一列(方法一)
    大家好,我是皮皮。一、前言这个事情还得从前几天在Python最强王者群【东哥】问了一个Python自动化办公处理的问题,需求倒是不难,一起来看看吧。二、实现过程这里【wangning】又给了一个答案,他自己之前整理的文章,不过需要自己稍微修改下才行。后来【魏哥】看到了,并且给出了如下......
  • java aspose填充数据word生成pdf
    使用AsposeJava填充数据并生成PDF作为一名经验丰富的开发者,你可以通过以下步骤教导刚入行的小白如何使用AsposeJava库来填充数据并生成PDF。下面是整个过程的流程图:步骤描述1加载Word文档模板2创建Document对象3获取Document对象的MailMerge属性4创建包......
  • 【专题】2022年互联网广告营销增长报告PDF合集分享(附原数据表)
    报告链接:https://tecdat.cn/?p=33234原文出处:拓端数据部落公众号2022年,受到疫情干扰,宏观经济面临压力,广告主市场信心不稳定。在这种情况下,广告预算整体下降,更加注重品牌长期价值和在家场景的投放。同时,政策引导和规范同样重要,为推动广告产业数字化转型提供高质量支持。2022年,细......
  • 【专题】2021互联网广告行业报告PDF合集分享(附原数据表)
    报告链接:https://tecdat.cn/?p=33234原文出处:拓端数据部落公众号2022年,受到疫情干扰,宏观经济面临压力,广告主市场信心不稳定。在这种情况下,广告预算整体下降,更加注重品牌长期价值和在家场景的投放。同时,政策引导和规范同样重要,为推动广告产业数字化转型提供高质量支持。2022年,细......
  • 【专题】2021年中国互联网广告市场洞察报告PDF合集分享(附原数据表)
    报告链接:https://tecdat.cn/?p=33234原文出处:拓端数据部落公众号2022年,受到疫情干扰,宏观经济面临压力,广告主市场信心不稳定。在这种情况下,广告预算整体下降,更加注重品牌长期价值和在家场景的投放。同时,政策引导和规范同样重要,为推动广告产业数字化转型提供高质量支持。2022年,细......
  • java在线预览excel
    Java在线预览Excel实现方法概述在本文中,我将教会你如何使用Java实现在线预览Excel文件的功能。具体步骤如下:步骤功能代码1上传Excel文件<inputtype="file"name="excelFile">2读取Excel文件FileInputStreamfis=newFileInputStream(excelFile);Workbookw......
  • DBConvert Studio - 数据库迁移和同步
    概述DBConvertStudio是一款强大的跨数据库迁移和同步软件,可以在不同数据库格式之间转换数据库结构和数据。它将成熟、稳定、久经考验的DBConvert和DBSync核心与改进的现代UX设计相结合。 数据库迁移场景 支持所有流行的数据库-从旧的基于文件的格式到现代的本......
  • 【专题】2022中国工业机器人市场研究报告PDF合集分享(附原数据表)
    报告链接:https://tecdat.cn/?p=33224本报告合集将基于中国工业产业升级和智能制造的背景,通过对供应端市场和产业链的分析,结合投资视角,探讨工业机器人企业如何增强自身竞争力,推动中国工业产业发展,为企业带来新的增长和转型机会,并从而思考中国工业机器人行业的现状和未来趋势。在......