松工资条是一款工资条生成与群发邮件的工具软件。可以将Excel格式的工资表转换为html格式的工资条,并按工资表中的邮件地址,批量逐一发送邮件给员工。是公司人力资源或财务人员发放工资条的必备工具软件。本软件可以智能读入工资表,一键群发工资条,化繁为简,方便易用。
轻松工资条有两个版本:免费版和企业版。免费版本具备大部分基本功能,您可以免费使用。企业版本适合50人以上企业使用,具有所有功能。
获取企业版链接:http://waterwoodsoftware.com/payslipmass/to_tb.html
免费下载
百度网盘下载链接:https://pan.baidu.com/s/1nXeYrMllhoZWXsr2N1G4tQ?pwd=6666
授权详情
常见问题
怎样使用轻松工资条生成并群发工资条给公司员工?
您只需要有一个Excel格式的工资表,并且每一行都有员工的电子邮件地址,这些电邮地址应该在一列当中。另外,还要有一列姓名列,最好命名为“姓名”,然后就可以了。点击主界面第一个按钮“读入工资表开始新的发送”按提示操作即可。首次使用系统会提示您设置发送邮件服务器信息。发送邮件服务器是发送邮件必须具备的,可以分为免费的和收费(企业邮箱),一般免费的有发送数量限制,如果条件允许,建议尽量采用企业邮箱。具体设置参数见所采用的的邮箱中的帮助信息。
如今各类BI产品大行其道,“数据可视化”成为一个热门词汇。相比价格高昂的各种BI软件,用Excel来制作动态报表就更加经济便捷。今天小编就将为大家介绍一下如何使用葡萄城公司的纯前端表格控件——SpreadJS来实现一个Excel动态报表:
制作这样的数据大屏首先必须要明确目的,比如在这里围绕销售金额制作一个数据大屏,首先点击数据源,然后点击插入找到数据透视表,随后将年份放在行字段,然后将销售金额放在值字段,因为在这里数值比较大,可以选择销售金额这一列数据,然后按快捷键Ctrl 1调出格式窗口,点击自定义,将类型设置为0!.0,这样的话就变为了万元显示,然后在设计中找到总计,选择对行和列禁用,将数据透视表中的总计禁用掉。
选择数据区域,然后在图表中找到饼图,随后为饼图添加数据标签,紧接着点击标签按Ctrl + 1调出格式窗口,勾选类别名称然后将分隔符设置为新的文本行,最后将无用的图例删掉即可,至此的第一个图表就制作完毕了。
为了添加更多图表,复制刚才设置的数据透视表,在复制的数据透视表中将年份这个字段拖走,然后将省份这个字段放在行字段,最后将数字更改为万元显示,然后插入一个横向的条形图,将无用的图例删除掉即可。需要注意的是,你需要设置几个图表,就需要复制几次数据透视表,更改为自己需要的字段,最后插入图表,在这里就以3个为例跟大家演示制作方法。
为了让多张图表能够联动变化,点击数据透视表,在工具栏中找到插入切片器,然后分别勾选,年份,省份,厂商点击确定,这样的话就插入了3个切片器,随后将他们更改下大小放在合适的位置即可。随后点击一个切片器,在切片器选项中选择链接到报表,勾选其他的两个报表即可,以此类推,其余的2个切片器也需要这样设置,设置完毕后就制作完毕了。
至此,一张简单的可视化数据报表就制作好了。有时候,制作好的可视化报表需要通过网络让更多的人查阅,那么有什么好办法呢?
下面小编为大家介绍如何使用借助SpreadJS实现在线化查看:
首先打开SpreadJS的学习指南:
按照学习指南上的代码进行编程实践:
<!DOCTYPE html>
<html>
<head>
<meta charset='UTF-8'>
<title>Spread-CDN</title>
<link rel='icon' href='./assets/images/logo.png' type='image/x-icon'>
<link
href='https://cdn.grapecity.com.cn/SpreadJS/package-contents/16.2.2/spread-sheets/styles/gc.spread.sheets.excel2013white.css'
rel='stylesheet' type='text/css' />
<script type='text/javascript'
src='https://cdn.grapecity.com.cn/SpreadJS/package-contents/16.2.2/spread-sheets/dist/gc.spread.sheets.all.min.js'></script>
<script
src='https://cdn.grapecity.com.cn/SpreadJS/package-contents/16.2.2/spread-sheets-charts/dist/gc.spread.sheets.charts.min.js'></script>
<script
src='https://cdn.grapecity.com.cn/SpreadJS/package-contents/16.2.2/spread-sheets-shapes/dist/gc.spread.sheets.shapes.min.js'></script>
<script
src='https://cdn.grapecity.com.cn/SpreadJS/package-contents/16.2.2/spread-sheets-slicers/dist/gc.spread.sheets.slicers.min.js'></script>
<script
src='https://cdn.grapecity.com.cn/SpreadJS/package-contents/16.2.2/spread-sheets-print/dist/gc.spread.sheets.print.min.js'></script>
<script
src='https://cdn.grapecity.com.cn/SpreadJS/package-contents/16.2.2/spread-sheets-barcode/dist/gc.spread.sheets.barcode.min.js'></script>
<script
src='https://cdn.grapecity.com.cn/SpreadJS/package-contents/16.2.2/spread-sheets-pdf/dist/gc.spread.sheets.pdf.min.js'></script>
<script
src='https://cdn.grapecity.com.cn/SpreadJS/package-contents/16.2.2/spread-sheets-pivot-addon/dist/gc.spread.pivot.pivottables.min.js'></script>
<script
src='https://cdn.grapecity.com.cn/SpreadJS/package-contents/16.2.2/spread-sheets-tablesheet/dist/gc.spread.sheets.tablesheet.min.js'></script>
<script
src='https://cdn.grapecity.com.cn/SpreadJS/package-contents/16.2.2/spread-sheets-ganttsheet/dist/gc.spread.sheets.ganttsheet.min.js'></script>
<script
src='https://cdn.grapecity.com.cn/SpreadJS/package-contents/16.2.2/spread-sheets-formula-panel/dist/gc.spread.sheets.formulapanel.min.js'></script>
<script
src='https://cdn.grapecity.com.cn/SpreadJS/package-contents/16.2.2/spread-excelio/dist/gc.spread.excelio.min.js'></script>
<script
src='https://cdn.grapecity.com.cn/SpreadJS/package-contents/16.2.2/spread-sheets-io/dist/gc.spread.sheets.io.min.js'></script>
<script
src='https://cdn.grapecity.com.cn/SpreadJS/package-contents/16.2.2/spread-sheets-resources-zh/dist/gc.spread.sheets.resources.zh.min.js'></script>
<script>
GC.Spread.Common.CultureManager.culture('zh-cn')
</script>
<style>
* {
margin: 0;
padding: 0;
}
#app {
overflow: hidden;
}
#spread-container {
width: 100vw;
height: 100vh;
}
</style>
</head>
<body>
<input type="file" id="file"/>
<div id='app'>
<div id='spread-container'></div>
</div>
<script>
const spread = new GC.Spread.Sheets.Workbook('spread-container')
let sheet = spread.getActiveSheet()
const fileElement = document.querySelector('#file')
fileElement.addEventListener('change', function (e) {
const file = e.target.files[0]
spread.import(file, ()=>{
fileElement.style.display = 'none'
})
})
</script>
</body>
</html>
这里使用<input type="file" />来选择本地文件,在成功导入后将该元素隐藏,以便在全屏预览报表时没有多余元素干扰。想导入其他模板时,只需刷新页面,用来选择模板文件的按钮就又出现了。
最后导入在Excel中制作好的报表模板,一张可在线浏览的动态Excel报表就大功告成了。
文章只是简单演示,没有加复杂的样式,如果您想做出更好的显示效果,可以充分调用自己的艺术细胞,做出更加美观炫酷的动态报表,甚至做一个数据大屏也是可以实现的,如果您对的SpreadJS感兴趣的话,也欢迎访问SpreadJS官网。
一段时间有网友问Excel转pdf怎么转pdf,小编帮他实现了一个,方法是使用EPPlus和PdfSharp组件实现,由于依赖OfficeOpenXml他也没有用上,后来小编又实现了二种不依赖OfficeOpenXml的方法。本文将介绍这三种方法实现Excel转pdf。
一、EPPlus和PdfSharp组件实现
逻辑是先将Excel内容转换为HTML字符串,然后再将HTML字符串转换为PDF文件。转换过程中的格式和样式可能会有一些差异,您可能需要根据需求进行进一步的调整和优化。
使用方法
1、首先使用“NuGet 包管理器”安装EPPlus和PdfSharp
2、在代码页面引用
using IronPdf;
using OfficeOpenXml;
3、建两个方法ConvertExcelToPdf和ExcelToHtml
ConvertExcelToPdf方法用于将Excel文件转换为PDF文件,ExcelToHtml这个方法将Excel工作表的内容转换为HTML字符串。代码如下:
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);
}
}
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();
}
//调用方法
string excelFilePath = "C:\\Users\\user\\Desktop\\test.xlsx";
string pdfFilePath = "C:\\Users\\user\\Desktop\\test.pdf";
exceltopdf.ConvertExcelToPdf(excelFilePath, pdfFilePath);
主要有两个方法:
ConvertExcelToPdf: 这个方法用于将Excel文件转换为PDF文件。它首先使用ExcelPackage类从Excel文件中读取数据。然后,调用ExcelToHtml方法将Excel内容转换为HTML字符串。接下来,使用IronPDF库中的HtmlToPdf类将HTML字符串转换为PDF对象。最后,将PDF对象保存到指定的PDF文件路径中。
ExcelToHtml: 这个方法将Excel工作表的内容转换为HTML字符串。它使用StringBuilder来构建HTML字符串。首先,它添加
标签作为表格的开始。然后,通过遍历工作表的行和列,将每个单元格的值添加到HTML字符串中作为一个td元素。最后,添加table标签作为表格的结束,并将构建好的HTML字符串返回。
缺点:此方法可能需要依赖office,网友回复反馈;另外需要用html进行格式处理,也是个麻烦事情。
效果:
二、Spire组件实现
逻辑是首先使用Spire.XLS库加载Excel文件,并使用Spire.PDF库创建PDF文档。然后,我们遍历Excel文件的每个工作表,将表格内容逐个绘制到PDF页面上。
使用方法
1、首先使用“NuGet 包管理器”安装Spire。注意的是需要安装Spire,不要安装Spire.XLS和Spire.PDF否则会出现不兼容的问题。
2、在代码页面引用
using Spire.Pdf;
using Spire.Pdf.Graphics;
using Spire.Xls;
3、只需要建一个方法ConvertExcelToPdf。传入要转换的excel路径和输出的路径,代码如下:
public static void ConvertExcelToPdf(string excelFilePath, string pdfFilePath)
{
// 加载Excel文件
Workbook workbook = new Workbook();
workbook.LoadFromFile(excelFilePath);
// 创建PDF文档
PdfDocument pdfDocument = new PdfDocument();
// 添加Excel表格内容到PDF
foreach (Worksheet sheet in workbook.Worksheets)
{
PdfPageBase pdfPage = pdfDocument.Pages.Add();
PdfDocument document = new PdfDocument();
PdfTrueTypeFont fonts = new 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转换完成。");
}
//调用方法跟上面一样
此方法需要注意的是Spire默认不支持中文,需要我们单独引用中文字库,在代码的13行就是引用字库的地方,大家可以把字库拷贝到自己的项目引用。
缺点:默认不支持中文字库,需要单独引用;另外输出格式不带表格(可能可以调);免费版本有水印,这个网上有解决方案,大家可以去某度搜索。
效果如下:
三、NPOI和iTextSharp组件实现
逻辑是通过使用NPOI库读取Excel文件,然后使用iTextSharp库创建PDF文档。
使用方法
1、首先使用“NuGet 包管理器”安装NPOI和iTextSharp。
2、在代码页面引用
using NPOI.SS.UserModel;
using NPOI.XSSF.UserModel;
using iTextSharp.text;
using iTextSharp.text.pdf;
3、需要建二个方法,ConvertExcelToPdf和GetChineseFont方法,GetChineseFont主要作业是字符格式转换。ConvertExcelToPdf传入要转的excel路径和输出的路径,代码如下:
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文档
Document document = new Document();
// 创建PDF写入器
PdfWriter writer = PdfWriter.GetInstance(document, new FileStream(pdfFilePath, FileMode.Create));
// 打开PDF文档
document.Open();
// 添加Excel表格内容到PDF
PdfPTable table = new 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转换完成。");
}
static Font GetChineseFont()
{
var baseFont = BaseFont.CreateFont(@"C:\Windows\Fonts\simfang.ttf", BaseFont.IDENTITY_H, BaseFont.EMBEDDED);
return new Font(baseFont, 12);
}
//调用方法跟方法一一样
//欢迎关注公众号:DOTNET开发跳槽,领取海量面试题。加微信号xbhpnet入群交流
此方法跟Spire一样默认不支持中文,需要我们单独引用中文字库,方法GetChineseFont就是处理引用中文字库。另外需要需要在 NuGet 里添加 System.Text.Encoding.CodePages并注册,否则会报错,注册如下。
Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);
缺点:此方法也比较坑,不支持中文,还需要引用额外的字库支持组件CodePages。
效果如下:
结语
本文介绍了.NET三种方法实现Excel转pdf,他们各有优点,第一种可以自定义样式,第二种依赖独立组件,第三种显示效果更佳,从使用效果来看小编推荐第三种。其实还有很多组件实现Excel转pdf,比如Aspose.Cells,有的需要授权收取费用、大家自己可以研究一下。本项目是基于.NET7在windows下测试运行,在linux下没有实验过,大家可以尝试一下。大家还有什么好的方式实现Excel转pdf呢?欢迎留言讨论。
*请认真填写需求信息,我们会在24小时内与您取得联系。