public class LoadData
    {
        /// <summary>
        /// 导出Excel
        /// </summary>
        /// <param name="dt">要写入的数据</param>
        /// <param name="filePath">要保存的excel路径</param>
        /// <param name="fileName">excel文件名</param>
        public static bool WriteExcel(DataTable dt, string filePath, string fileName)
        {
            try
            {
                if (!string.IsNullOrEmpty(filePath) && null != dt && dt.Rows.Count > 0)
                {
                    NPOI.HSSF.UserModel.HSSFWorkbook book = new NPOI.HSSF.UserModel.HSSFWorkbook();
                    NPOI.SS.UserModel.ISheet sheet = book.CreateSheet("Sheet1");

int mid = dt.Columns.Count / 2;
                    NPOI.SS.UserModel.IRow row0 = sheet.CreateRow(0);
                    NPOI.SS.UserModel.IRow row1 = sheet.CreateRow(1);
                    for (int i = 0; i < dt.Columns.Count; i++)
                    {
                        if (i == mid)
                        {
                            row0.CreateCell(i).SetCellValue(fileName);
                        }
                        row1.CreateCell(i).SetCellValue(dt.Columns[i].ColumnName);
                    }
                    for (int i = 0; i < dt.Rows.Count; i++)
                    {
                        NPOI.SS.UserModel.IRow row2 = sheet.CreateRow(i + 2);
                        for (int j = 0; j < dt.Columns.Count; j++)
                        {
                            row2.CreateCell(j).SetCellValue(Convert.ToString(dt.Rows[i][j]));
                        }
                    }
                    // 写入到客户端  
                    using (System.IO.MemoryStream ms = new System.IO.MemoryStream())
                    {
                        book.Write(ms);
                        using (FileStream fs = new FileStream(filePath, FileMode.Create, FileAccess.Write))
                        {
                            byte[] data = ms.ToArray();
                            fs.Write(data, 0, data.Length);
                            fs.Flush();
                        }
                        book = null;
                    }
                }
                return true;
            }
            catch (Exception)
            {
                return false;
            }
        }

/// <summary>
        /// 创建pdf
        /// </summary>
        /// <param name="pdffilepath">pdf文件名</param>
        /// <param name="datatable">要写入的数据</param>
        /// <param name="doctitle">文档的标题</param>
        /// <param name="pageheader">可为空</param>
        /// <param name="headerImgPath">可为空</param>
        /// <returns></returns>
        public static bool WritePDF(string pdffilepath, DataTable datatable, string doctitle, string chinesetitle, string pageheader, string headerImgPath)
        {
            //new RectangleReadOnly(842F, 595F)横向打印
            Document doc = new Document(new RectangleReadOnly(842F, 595F));//创建一个iTextSharp document对象
            try
            {
                if (!Directory.Exists(pdffilepath))//如果日志目录不存在就创建
                {
                    Directory.CreateDirectory(pdffilepath);
                }
                PdfWriter pdfw = PdfWriter.GetInstance(doc, new FileStream(pdffilepath + "\\" + doctitle + ".pdf", FileMode.Create));//为doc对象创建PdfWriter实例
                doc.Open();//打开doc对象
                string fontpath = "C:/WINDOWS/Fonts/simfang.ttf"; //System.Web.HttpContext.Current.Request.PhysicalApplicationPath + "Manage\\fonts\\SIMYOU.TTF";
                if (!System.IO.File.Exists(fontpath))
                {
                    Log4NetHelper.Error(typeof(LoadData), "缺失字体文件" + fontpath);
                    return false;
                }
                BaseFont bfont = BaseFont.CreateFont(fontpath, BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);//使用BaseFont加载unicode字体像简体中文字体

Font fonttitle = new Font(bfont, 16);//创建新的基于BaseFont字体
                Font fontheader = new Font(bfont, 12);//创建新的基于BaseFont字体
                Font fontcontent = new Font(bfont, 10);//创建新的基于BaseFont字体
                Font normalFont = new Font(bfont, 10);//创建新的基于BaseFont字体
                if (pageheader.Length > 0)
                {
                    doc.Add(new Paragraph(new Phrase("")));//Paragraph报表中的文本
                }
                if (headerImgPath != "")
                {
                    Image image = Image.GetInstance(headerImgPath);
                    image.SetAbsolutePosition(0, 0);
                    image.Alignment = Image.ALIGN_UNDEFINED;
                    image.ScaleAbsolute(image.Width, image.Height);
                    doc.Add(image);//new PdfPCell(image, true)
                }
                if (doctitle.Length > 0)
                {
                    Paragraph pgtitle = new Paragraph(new Phrase(chinesetitle, fonttitle));
                    PdfPCell pdfcell = new PdfPCell(pgtitle);
                    pdfcell.HorizontalAlignment = 1;
                    pdfcell.VerticalAlignment = 1;
                    pdfcell.Border = 0;
                    PdfPTable pdftb = new PdfPTable(1);
                    pdftb.AddCell(pdfcell);
                    doc.Add(pdftb);//写标题
                    //设置一个空白换行
                    float normalLineHeight = 25f;
                    Paragraph pBlank = new Paragraph(" ", normalFont);
                    pBlank.Leading = normalLineHeight;
                    doc.Add(pBlank);
                }
                if (datatable.Rows.Count == 0)
                {
                    return false;
                }
                int cols = datatable.Columns.Count;
                int rows = datatable.Rows.Count;
                PdfPTable ptable = new PdfPTable(cols);//创建pdf表对象
                ptable.WidthPercentage = 100;//宽度的百分比

PdfPCell _pdfpcell;//表单元格
                //写表头
                for (int c = 0; c < cols; c++)
                {
                    Phrase _phrase = new Phrase((datatable.Columns[c].Caption != null && datatable.Columns[c].Caption.Length > 0) ? datatable.Columns[c].Caption : datatable.Columns[c].ColumnName, fontheader);
                    _pdfpcell = new PdfPCell(_phrase);
                    _pdfpcell.PaddingBottom = 5f;
                    _pdfpcell.PaddingTop = 5f;
                    _pdfpcell.PaddingLeft = 8f;
                    _pdfpcell.PaddingRight = 8f;
                    _pdfpcell.HorizontalAlignment = 1;
                    _pdfpcell.VerticalAlignment = 1;
                    ptable.AddCell(_pdfpcell);
                }
                //写表体
                for (int i = 0; i < rows; i++)
                {
                    for (int j = 0; j < cols; j++)
                    {
                        _pdfpcell = new PdfPCell(new Phrase((datatable.Rows[i][j] != null) ? datatable.Rows[i][j].ToString() : "", fontcontent));
                        _pdfpcell.PaddingBottom = 5f;
                        _pdfpcell.PaddingTop = 5f;
                        _pdfpcell.PaddingLeft = 8f;
                        _pdfpcell.PaddingRight = 8f;
                        _pdfpcell.HorizontalAlignment = 1;
                        _pdfpcell.VerticalAlignment = 1;
                        ptable.AddCell(_pdfpcell);
                    }
                }
                return doc.Add(ptable);
            }
            catch (Exception ex)
            {
                return false;
            }
            finally
            {
                doc.Close();
            }
        }
    }

创建Excel,创建pdf相关推荐

  1. CAD二次开发-c#创建Excel表格及其一系列简单应用

    创建Excel 创建Excel必要索引库:NetOffice 需版本对应 Excel.Application application = new Excel.Application();Excel.W ...

  2. JAVA实现创建Excel表并导出(转发)

    JAVA实现创建Excel表并导出(转发) 最近在做毕设,要求导出word,excel,pdf,这是excel. 原文是:http://blog.csdn.net/u014621859/article ...

  3. 如何在不安装Microsoft Office的情况下用C#创建Excel(.XLS和.XLSX)文件?

    如何在不使用运行代码的计算机上安装Excel的情况下使用C#创建Excel电子表格? #1楼 我成功地使用了以下开源项目: OOXML格式的ExcelPackage(Office 2007) .XLS ...

  4. Spire.XLS 图表系列教程:C# 如何不使用工作数据创建Excel图表以及Excel雷达图

    更多资源查看:Spire.XLS工作表教程 | Spire.Doc系列教程 | Spire.PDF系列教程 [下载Spire.XLS最新试用版] Spire.XLS for .NET 是一款专业的 . ...

  5. 使用Spire.XLS来创建Excel 工作簿

    概要 最近在研究 .NET 控件,使用这些控件能在程序中可以快速低成本实现开发功能.前面提到了如何使用Spire.XLS来制作报表,在这一篇中我 将讲到的是如何用用它来创建一个简单的Excel工作簿. ...

  6. C# 如何创建Excel多级分组

    在Excel中如果能够将具有多级明细的数据进行分组显示,可以清晰地展示数据表格的整体结构,使整个文档具有一定层次感.根据需要设置显示或者隐藏分类数据下的详细信息,在便于数据查看.管理的同时也使文档更具 ...

  7. 使用XML创建Excel文档

    使用XML创建Excel文档            原例子使用VB.Net写的,以下的用C#改写的代码 原文代码: http://www.gotdotnet.com/Community/UserSam ...

  8. Java根据模板创建excel文件

    1.首先导入xml文件,src下建包xml,将student.xml文件放入此文件夹中 [html] view plain copy <excel id="student"  ...

  9. java 填充pdf_Java如何创建和填充PDF表单域(代码示例)

    本篇文章给大家带来的内容是关于Java如何创建和填充PDF表单域(代码示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 表单域,可以按用途分为多种不同的类型,常见的有文本框.多行 ...

最新文章

  1. PPT绘制示意图视频+文字版本-一篇就学会
  2. 程序员的十层楼(8~9层)
  3. 四川大学锦江学院计算机专业怎么样,四川大学锦江学院怎么样?是一所什么层次的大学?...
  4. spring 基本配置学习
  5. application.properties中自定义属性的使用
  6. 在C++ Builder中用socket api来写网络通讯程序(同时支持TCP和UDP协议)
  7. beetl 时间输出格式化
  8. Fedora 8安装非官方compiz-fusion
  9. Mysql事物隔离级别
  10. 132.分割回文串II
  11. SolidWorks自定义装配体模板的方法
  12. 计算机页面偏黄怎么修改,windows10电脑屏幕颜色偏黄的调节方法
  13. 自己总结出三种进入加密QQ空间的方法
  14. 关于CRC校验的一些总结
  15. 微信小程序收藏功能实现思路
  16. 如何快速构建一套稳定、高效、可靠的网页无插件监控、直播、点播解决方案
  17. Linux计划任务篇
  18. 低代码与BPM有什么区别?
  19. 用css3-做一个旋转的小风车
  20. [BX]和内存单元的描述

热门文章

  1. python编写一个班级类 点名簿_2014年长春市高中毕业班第四次调研测试
  2. 从G1到G16 HTC Android帝国超级大盘点
  3. @Cacheable 设置缓存过期时间
  4. android swf 播放器代码,Android Flash swf播放器源码(2019)
  5. 与贝加尔湖华创一起,收获满满的期货!
  6. SpringMVC框架理解
  7. saltstack 的安装
  8. android4.2.2的彩蛋,食物语彩蛋都有哪些_食物语彩蛋大全介绍
  9. 为什么89C51单片机里面有TH0=(65536-50000)/256;TL0=(65536-50000)%256;
  10. OpenSSL v0.9.8a随机数发生器分析之二——随机数发生器函数说明