创建Excel,创建pdf
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相关推荐
- CAD二次开发-c#创建Excel表格及其一系列简单应用
创建Excel 创建Excel必要索引库:NetOffice 需版本对应 Excel.Application application = new Excel.Application();Excel.W ...
- JAVA实现创建Excel表并导出(转发)
JAVA实现创建Excel表并导出(转发) 最近在做毕设,要求导出word,excel,pdf,这是excel. 原文是:http://blog.csdn.net/u014621859/article ...
- 如何在不安装Microsoft Office的情况下用C#创建Excel(.XLS和.XLSX)文件?
如何在不使用运行代码的计算机上安装Excel的情况下使用C#创建Excel电子表格? #1楼 我成功地使用了以下开源项目: OOXML格式的ExcelPackage(Office 2007) .XLS ...
- Spire.XLS 图表系列教程:C# 如何不使用工作数据创建Excel图表以及Excel雷达图
更多资源查看:Spire.XLS工作表教程 | Spire.Doc系列教程 | Spire.PDF系列教程 [下载Spire.XLS最新试用版] Spire.XLS for .NET 是一款专业的 . ...
- 使用Spire.XLS来创建Excel 工作簿
概要 最近在研究 .NET 控件,使用这些控件能在程序中可以快速低成本实现开发功能.前面提到了如何使用Spire.XLS来制作报表,在这一篇中我 将讲到的是如何用用它来创建一个简单的Excel工作簿. ...
- C# 如何创建Excel多级分组
在Excel中如果能够将具有多级明细的数据进行分组显示,可以清晰地展示数据表格的整体结构,使整个文档具有一定层次感.根据需要设置显示或者隐藏分类数据下的详细信息,在便于数据查看.管理的同时也使文档更具 ...
- 使用XML创建Excel文档
使用XML创建Excel文档 原例子使用VB.Net写的,以下的用C#改写的代码 原文代码: http://www.gotdotnet.com/Community/UserSam ...
- Java根据模板创建excel文件
1.首先导入xml文件,src下建包xml,将student.xml文件放入此文件夹中 [html] view plain copy <excel id="student" ...
- java 填充pdf_Java如何创建和填充PDF表单域(代码示例)
本篇文章给大家带来的内容是关于Java如何创建和填充PDF表单域(代码示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 表单域,可以按用途分为多种不同的类型,常见的有文本框.多行 ...
最新文章
- PPT绘制示意图视频+文字版本-一篇就学会
- 程序员的十层楼(8~9层)
- 四川大学锦江学院计算机专业怎么样,四川大学锦江学院怎么样?是一所什么层次的大学?...
- spring 基本配置学习
- application.properties中自定义属性的使用
- 在C++ Builder中用socket api来写网络通讯程序(同时支持TCP和UDP协议)
- beetl 时间输出格式化
- Fedora 8安装非官方compiz-fusion
- Mysql事物隔离级别
- 132.分割回文串II
- SolidWorks自定义装配体模板的方法
- 计算机页面偏黄怎么修改,windows10电脑屏幕颜色偏黄的调节方法
- 自己总结出三种进入加密QQ空间的方法
- 关于CRC校验的一些总结
- 微信小程序收藏功能实现思路
- 如何快速构建一套稳定、高效、可靠的网页无插件监控、直播、点播解决方案
- Linux计划任务篇
- 低代码与BPM有什么区别?
- 用css3-做一个旋转的小风车
- [BX]和内存单元的描述
热门文章
- python编写一个班级类 点名簿_2014年长春市高中毕业班第四次调研测试
- 从G1到G16 HTC Android帝国超级大盘点
- @Cacheable 设置缓存过期时间
- android swf 播放器代码,Android Flash swf播放器源码(2019)
- 与贝加尔湖华创一起,收获满满的期货!
- SpringMVC框架理解
- saltstack 的安装
- android4.2.2的彩蛋,食物语彩蛋都有哪些_食物语彩蛋大全介绍
- 为什么89C51单片机里面有TH0=(65536-50000)/256;TL0=(65536-50000)%256;
- OpenSSL v0.9.8a随机数发生器分析之二——随机数发生器函数说明