Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537
松工資條是一款工資條生成與群發(fā)郵件的工具軟件。可以將Excel格式的工資表轉(zhuǎn)換為html格式的工資條,并按工資表中的郵件地址,批量逐一發(fā)送郵件給員工。是公司人力資源或財務(wù)人員發(fā)放工資條的必備工具軟件。本軟件可以智能讀入工資表,一鍵群發(fā)工資條,化繁為簡,方便易用。
輕松工資條有兩個版本:免費版和企業(yè)版。免費版本具備大部分基本功能,您可以免費使用。企業(yè)版本適合50人以上企業(yè)使用,具有所有功能。
獲取企業(yè)版鏈接:http://waterwoodsoftware.com/payslipmass/to_tb.html
免費下載
百度網(wǎng)盤下載鏈接:https://pan.baidu.com/s/1nXeYrMllhoZWXsr2N1G4tQ?pwd=6666
授權(quán)詳情
常見問題
怎樣使用輕松工資條生成并群發(fā)工資條給公司員工?
您只需要有一個Excel格式的工資表,并且每一行都有員工的電子郵件地址,這些電郵地址應(yīng)該在一列當(dāng)中。另外,還要有一列姓名列,最好命名為“姓名”,然后就可以了。點擊主界面第一個按鈕“讀入工資表開始新的發(fā)送”按提示操作即可。首次使用系統(tǒng)會提示您設(shè)置發(fā)送郵件服務(wù)器信息。發(fā)送郵件服務(wù)器是發(fā)送郵件必須具備的,可以分為免費的和收費(企業(yè)郵箱),一般免費的有發(fā)送數(shù)量限制,如果條件允許,建議盡量采用企業(yè)郵箱。具體設(shè)置參數(shù)見所采用的的郵箱中的幫助信息。
如今各類BI產(chǎn)品大行其道,“數(shù)據(jù)可視化”成為一個熱門詞匯。相比價格高昂的各種BI軟件,用Excel來制作動態(tài)報表就更加經(jīng)濟便捷。今天小編就將為大家介紹一下如何使用葡萄城公司的純前端表格控件——SpreadJS來實現(xiàn)一個Excel動態(tài)報表:
制作這樣的數(shù)據(jù)大屏首先必須要明確目的,比如在這里圍繞銷售金額制作一個數(shù)據(jù)大屏,首先點擊數(shù)據(jù)源,然后點擊插入找到數(shù)據(jù)透視表,隨后將年份放在行字段,然后將銷售金額放在值字段,因為在這里數(shù)值比較大,可以選擇銷售金額這一列數(shù)據(jù),然后按快捷鍵Ctrl 1調(diào)出格式窗口,點擊自定義,將類型設(shè)置為0!.0,這樣的話就變?yōu)榱巳f元顯示,然后在設(shè)計中找到總計,選擇對行和列禁用,將數(shù)據(jù)透視表中的總計禁用掉。
選擇數(shù)據(jù)區(qū)域,然后在圖表中找到餅圖,隨后為餅圖添加數(shù)據(jù)標簽,緊接著點擊標簽按Ctrl + 1調(diào)出格式窗口,勾選類別名稱然后將分隔符設(shè)置為新的文本行,最后將無用的圖例刪掉即可,至此的第一個圖表就制作完畢了。
為了添加更多圖表,復(fù)制剛才設(shè)置的數(shù)據(jù)透視表,在復(fù)制的數(shù)據(jù)透視表中將年份這個字段拖走,然后將省份這個字段放在行字段,最后將數(shù)字更改為萬元顯示,然后插入一個橫向的條形圖,將無用的圖例刪除掉即可。需要注意的是,你需要設(shè)置幾個圖表,就需要復(fù)制幾次數(shù)據(jù)透視表,更改為自己需要的字段,最后插入圖表,在這里就以3個為例跟大家演示制作方法。
為了讓多張圖表能夠聯(lián)動變化,點擊數(shù)據(jù)透視表,在工具欄中找到插入切片器,然后分別勾選,年份,省份,廠商點擊確定,這樣的話就插入了3個切片器,隨后將他們更改下大小放在合適的位置即可。隨后點擊一個切片器,在切片器選項中選擇鏈接到報表,勾選其他的兩個報表即可,以此類推,其余的2個切片器也需要這樣設(shè)置,設(shè)置完畢后就制作完畢了。
至此,一張簡單的可視化數(shù)據(jù)報表就制作好了。有時候,制作好的可視化報表需要通過網(wǎng)絡(luò)讓更多的人查閱,那么有什么好辦法呢?
下面小編為大家介紹如何使用借助SpreadJS實現(xiàn)在線化查看:
首先打開SpreadJS的學(xué)習(xí)指南:
按照學(xué)習(xí)指南上的代碼進行編程實踐:
<!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" />來選擇本地文件,在成功導(dǎo)入后將該元素隱藏,以便在全屏預(yù)覽報表時沒有多余元素干擾。想導(dǎo)入其他模板時,只需刷新頁面,用來選擇模板文件的按鈕就又出現(xiàn)了。
最后導(dǎo)入在Excel中制作好的報表模板,一張可在線瀏覽的動態(tài)Excel報表就大功告成了。
文章只是簡單演示,沒有加復(fù)雜的樣式,如果您想做出更好的顯示效果,可以充分調(diào)用自己的藝術(shù)細胞,做出更加美觀炫酷的動態(tài)報表,甚至做一個數(shù)據(jù)大屏也是可以實現(xiàn)的,如果您對的SpreadJS感興趣的話,也歡迎訪問SpreadJS官網(wǎng)。
一段時間有網(wǎng)友問Excel轉(zhuǎn)pdf怎么轉(zhuǎn)pdf,小編幫他實現(xiàn)了一個,方法是使用EPPlus和PdfSharp組件實現(xiàn),由于依賴OfficeOpenXml他也沒有用上,后來小編又實現(xiàn)了二種不依賴OfficeOpenXml的方法。本文將介紹這三種方法實現(xiàn)Excel轉(zhuǎn)pdf。
一、EPPlus和PdfSharp組件實現(xiàn)
邏輯是先將Excel內(nèi)容轉(zhuǎn)換為HTML字符串,然后再將HTML字符串轉(zhuǎn)換為PDF文件。轉(zhuǎn)換過程中的格式和樣式可能會有一些差異,您可能需要根據(jù)需求進行進一步的調(diào)整和優(yōu)化。
使用方法
1、首先使用“NuGet 包管理器”安裝EPPlus和PdfSharp
2、在代碼頁面引用
using IronPdf;
using OfficeOpenXml;
3、建兩個方法ConvertExcelToPdf和ExcelToHtml
ConvertExcelToPdf方法用于將Excel文件轉(zhuǎn)換為PDF文件,ExcelToHtml這個方法將Excel工作表的內(nèi)容轉(zhuǎn)換為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]; // 假設(shè)要轉(zhuǎn)換的工作表是第一個工作表
// 創(chuàng)建一個HTML字符串,將Excel內(nèi)容轉(zhuǎn)換為HTML
string htmlContent = ExcelToHtml(worksheet);
// 使用IronPDF將HTML字符串轉(zhuǎn)換為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();
}
//調(diào)用方法
string excelFilePath = "C:\\Users\\user\\Desktop\\test.xlsx";
string pdfFilePath = "C:\\Users\\user\\Desktop\\test.pdf";
exceltopdf.ConvertExcelToPdf(excelFilePath, pdfFilePath);
主要有兩個方法:
ConvertExcelToPdf: 這個方法用于將Excel文件轉(zhuǎn)換為PDF文件。它首先使用ExcelPackage類從Excel文件中讀取數(shù)據(jù)。然后,調(diào)用ExcelToHtml方法將Excel內(nèi)容轉(zhuǎn)換為HTML字符串。接下來,使用IronPDF庫中的HtmlToPdf類將HTML字符串轉(zhuǎn)換為PDF對象。最后,將PDF對象保存到指定的PDF文件路徑中。
ExcelToHtml: 這個方法將Excel工作表的內(nèi)容轉(zhuǎn)換為HTML字符串。它使用StringBuilder來構(gòu)建HTML字符串。首先,它添加
標簽作為表格的開始。然后,通過遍歷工作表的行和列,將每個單元格的值添加到HTML字符串中作為一個td元素。最后,添加table標簽作為表格的結(jié)束,并將構(gòu)建好的HTML字符串返回。
缺點:此方法可能需要依賴office,網(wǎng)友回復(fù)反饋;另外需要用html進行格式處理,也是個麻煩事情。
效果:
二、Spire組件實現(xiàn)
邏輯是首先使用Spire.XLS庫加載Excel文件,并使用Spire.PDF庫創(chuàng)建PDF文檔。然后,我們遍歷Excel文件的每個工作表,將表格內(nèi)容逐個繪制到PDF頁面上。
使用方法
1、首先使用“NuGet 包管理器”安裝Spire。注意的是需要安裝Spire,不要安裝Spire.XLS和Spire.PDF否則會出現(xiàn)不兼容的問題。
2、在代碼頁面引用
using Spire.Pdf;
using Spire.Pdf.Graphics;
using Spire.Xls;
3、只需要建一個方法ConvertExcelToPdf。傳入要轉(zhuǎn)換的excel路徑和輸出的路徑,代碼如下:
public static void ConvertExcelToPdf(string excelFilePath, string pdfFilePath)
{
// 加載Excel文件
Workbook workbook = new Workbook();
workbook.LoadFromFile(excelFilePath);
// 創(chuàng)建PDF文檔
PdfDocument pdfDocument = new PdfDocument();
// 添加Excel表格內(nèi)容到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表格的行數(shù)和列數(shù)
int rowCount = sheet.LastRow + 1;
int columnCount = sheet.LastColumn + 1;
// 將Excel表格內(nèi)容逐個添加到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)
// 繪制單元格內(nèi)容到PDF頁面
{
pdfPage.Canvas.DrawString(value, fonts, PdfBrushes.Black, column * 70, row * 20);
}
}
}
}
// 保存PDF文件
pdfDocument.SaveToFile(pdfFilePath);
Console.WriteLine("PDF轉(zhuǎn)換完成。");
}
//調(diào)用方法跟上面一樣
此方法需要注意的是Spire默認不支持中文,需要我們單獨引用中文字庫,在代碼的13行就是引用字庫的地方,大家可以把字庫拷貝到自己的項目引用。
缺點:默認不支持中文字庫,需要單獨引用;另外輸出格式不帶表格(可能可以調(diào));免費版本有水印,這個網(wǎng)上有解決方案,大家可以去某度搜索。
效果如下:
三、NPOI和iTextSharp組件實現(xiàn)
邏輯是通過使用NPOI庫讀取Excel文件,然后使用iTextSharp庫創(chuàng)建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主要作業(yè)是字符格式轉(zhuǎn)換。ConvertExcelToPdf傳入要轉(zhuǎn)的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);
// 創(chuàng)建PDF文檔
Document document = new Document();
// 創(chuàng)建PDF寫入器
PdfWriter writer = PdfWriter.GetInstance(document, new FileStream(pdfFilePath, FileMode.Create));
// 打開PDF文檔
document.Open();
// 添加Excel表格內(nèi)容到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);
// 關(guān)閉PDF文檔
document.Close();
}
Console.WriteLine("PDF轉(zhuǎn)換完成。");
}
static Font GetChineseFont()
{
var baseFont = BaseFont.CreateFont(@"C:\Windows\Fonts\simfang.ttf", BaseFont.IDENTITY_H, BaseFont.EMBEDDED);
return new Font(baseFont, 12);
}
//調(diào)用方法跟方法一一樣
//歡迎關(guān)注公眾號:DOTNET開發(fā)跳槽,領(lǐng)取海量面試題。加微信號xbhpnet入群交流
此方法跟Spire一樣默認不支持中文,需要我們單獨引用中文字庫,方法GetChineseFont就是處理引用中文字庫。另外需要需要在 NuGet 里添加 System.Text.Encoding.CodePages并注冊,否則會報錯,注冊如下。
Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);
缺點:此方法也比較坑,不支持中文,還需要引用額外的字庫支持組件CodePages。
效果如下:
結(jié)語
本文介紹了.NET三種方法實現(xiàn)Excel轉(zhuǎn)pdf,他們各有優(yōu)點,第一種可以自定義樣式,第二種依賴獨立組件,第三種顯示效果更佳,從使用效果來看小編推薦第三種。其實還有很多組件實現(xiàn)Excel轉(zhuǎn)pdf,比如Aspose.Cells,有的需要授權(quán)收取費用、大家自己可以研究一下。本項目是基于.NET7在windows下測試運行,在linux下沒有實驗過,大家可以嘗試一下。大家還有什么好的方式實現(xiàn)Excel轉(zhuǎn)pdf呢?歡迎留言討論。
*請認真填寫需求信息,我們會在24小時內(nèi)與您取得聯(lián)系。