C#使用Spire.XLS實(shí)現(xiàn)將Excel轉(zhuǎn)換成高質(zhì)量JPG
在日常辦公開發(fā)中,經(jīng)常遇到需要將 Excel 表格轉(zhuǎn)換為圖片的需求。無論是生成報(bào)表預(yù)覽、數(shù)據(jù)展示,還是防止表格格式錯(cuò)亂,將 Excel 轉(zhuǎn)換為 JPG 都是一種實(shí)用的解決方案。今天分享如何使用 Spire.XLS 庫,配合 C# 代碼實(shí)現(xiàn)高質(zhì)量 Excel 轉(zhuǎn) JPG。
為什么需要高質(zhì)量轉(zhuǎn)換
直接截圖或使用普通轉(zhuǎn)換方式,往往會(huì)導(dǎo)致圖片模糊、文字不清晰。特別是在打印或放大查看時(shí),低分辨率的圖片根本無法滿足需求。通過設(shè)置 300 DPI 的分辨率,可以確保生成的 JPG 圖片清晰度達(dá)到印刷級(jí)別。
實(shí)現(xiàn)步驟
首先需要安裝 Spire.XLS 庫,通過 NuGet 包管理器搜索 Spire.XLS 即可安裝。
核心代碼分為三個(gè)部分:
- 加載 Excel 文件 :使用
Workbook類加載指定工作表 - 轉(zhuǎn)換為 EMF 流 :將指定區(qū)域?qū)С鰹?EMF 格式的內(nèi)存流
- 調(diào)整分辨率并保存 :通過
ResetResolution方法將分辨率設(shè)置為 300 DPI,最終保存為 JPG
完整代碼
using Spire.Xls;
using System.Drawing;
using System.Drawing.Imaging;
using System.IO;
namespace Convert
{
class Program
{
static void Main(string[] args)
{
Workbook workbook = new Workbook();
workbook.LoadFromFile("Input.xlsx", ExcelVersion.Version2013);
Worksheet worksheet = workbook.Worksheets[0];
using (MemoryStream ms = new MemoryStream())
{
worksheet.ToEMFStream(ms, 1, 1, worksheet.LastRow, worksheet.LastColumn);
Image image = Image.FromStream(ms);
Bitmap images = ResetResolution(image as Metafile, 300);
images.Save("Result.jpg", ImageFormat.Jpeg);
}
}
private static Bitmap ResetResolution(Metafile mf, float resolution)
{
int width = (int)(mf.Width * resolution / mf.HorizontalResolution);
int height = (int)(mf.Height * resolution / mf.VerticalResolution);
Bitmap bmp = new Bitmap(width, height);
bmp.SetResolution(resolution, resolution);
Graphics g = Graphics.FromImage(bmp);
g.DrawImage(mf, 0, 0);
g.Dispose();
return bmp;
}
}
}
代碼要點(diǎn)說明
ToEMFStream方法可以將工作表的指定范圍導(dǎo)出為 EMF(增強(qiáng)型圖元文件)格式,這種矢量格式保證了放大不失真ResetResolution方法接收一個(gè)Metafile對(duì)象和目標(biāo)分辨率,返回調(diào)整后的Bitmap- 使用
MemoryStream可以避免生成臨時(shí)文件,直接在內(nèi)存中完成轉(zhuǎn)換
應(yīng)用場(chǎng)景
- 報(bào)表系統(tǒng) :將數(shù)據(jù)表格生成為圖片,便于嵌入 Word、PPT 或網(wǎng)頁
- 數(shù)據(jù)展示 :避免用戶因缺少 Excel 軟件而無法打開文件
- 歸檔備份 :將重要表格轉(zhuǎn)為圖片格式,長(zhǎng)期保存不易變樣
通過上述方法,可以輕松將 Excel 表格轉(zhuǎn)換為高清 JPG 圖片,滿足大多數(shù)辦公場(chǎng)景的需求。如果需要批量轉(zhuǎn)換,只需遍歷工作簿中的多個(gè)工作表即可。
方法補(bǔ)充
使用 Aspose.Cells 實(shí)現(xiàn)轉(zhuǎn)換
Aspose.Cells 是一個(gè)非常強(qiáng)大和穩(wěn)定的 Excel 文件操作庫,同樣支持高質(zhì)量的渲染。
操作步驟:
- 安裝:在 NuGet 包管理器中搜索
Aspose.Cells并安裝。 - 加載文件并設(shè)置選項(xiàng):創(chuàng)建
Workbook對(duì)象,并用ImageOrPrintOptions配置輸出格式和 DPI。 - 渲染工作表:使用
SheetRender對(duì)象將工作表渲染為Bitmap。 - 保存圖片:調(diào)用
Save方法將圖片保存為 JPG 文件。
下面是具體的 C# 代碼實(shí)現(xiàn)
using Aspose.Cells;
using Aspose.Cells.Rendering;
using System.Drawing;
class Program
{
static void Main()
{
// 1. 加載 Excel 文件
Workbook workbook = new Workbook("測(cè)試.xlsx");
Worksheet worksheet = workbook.Worksheets[0];
// 2. 配置圖像渲染選項(xiàng)
ImageOrPrintOptions options = new ImageOrPrintOptions();
options.ImageType = Drawing.ImageType.Jpeg;
options.OnePagePerSheet = true;
// 可選:設(shè)置高分辨率,確保高質(zhì)量
options.HorizontalResolution = 300;
options.VerticalResolution = 300;
// 3. 渲染工作表
SheetRender render = new SheetRender(worksheet, options);
Bitmap bitmap = render.ToImage(0);
// 4. 保存為 JPG 圖片
bitmap.Save("輸出結(jié)果.jpg");
}
}重要提示
- 拒絕 Interop:雖然 Microsoft.Office.Interop.Excel 可以免費(fèi)使用,但它會(huì)直接調(diào)用本地 Excel 程序,存在穩(wěn)定性差、內(nèi)存泄漏和依賴 Excel 環(huán)境的嚴(yán)重問題。強(qiáng)烈不推薦在生產(chǎn)環(huán)境(如 Web 服務(wù))中使用。
- 獲取臨時(shí)許可證:上述代碼示例中的商用庫(Spire.XLS 和 Aspose.Cells)在評(píng)估模式下可能會(huì)在輸出圖片上添加水印或限制行數(shù)。建議前往官方申請(qǐng)一個(gè)臨時(shí)許可證來消除這些限制。
- 處理好路徑與權(quán)限:確保你的程序?qū)δ繕?biāo)文件夾有寫入權(quán)限,以免保存圖片時(shí)出錯(cuò)。此外,務(wù)必確認(rèn)輸入文件的路徑是正確的。
- 探索進(jìn)階功能:除了轉(zhuǎn)換整個(gè)工作表,這些庫通常還支持將工作簿、特定圖表或單元格區(qū)域轉(zhuǎn)換為圖片。你可以根據(jù)實(shí)際需求查閱官方文檔。
到此這篇關(guān)于C#使用Spire.XLS實(shí)現(xiàn)將Excel轉(zhuǎn)換成高質(zhì)量JPG的文章就介紹到這了,更多相關(guān)C# Excel轉(zhuǎn)JPG內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- C#使用Spire.XLS for .NET將Excel轉(zhuǎn)換為SVG圖片
- C#代碼實(shí)現(xiàn)將Excel中的圖表轉(zhuǎn)換為圖片
- C#實(shí)現(xiàn)將Excel表格轉(zhuǎn)換為圖片(JPG/?PNG)
- C#代碼實(shí)現(xiàn)將Excel(XLS/XLSX)文件轉(zhuǎn)為Markdown格式
- C#實(shí)現(xiàn)Excel文件轉(zhuǎn)Markdown表格
- C#將Excel文件轉(zhuǎn)換為Markdown表格的三行代碼
- C#實(shí)現(xiàn)將Excel(xlsx或xls)轉(zhuǎn)換為HTML的完整指南
相關(guān)文章
C#使用Spire.Doc解決Word轉(zhuǎn)PDF亂碼/錯(cuò)位的方案
在日常開發(fā)中,Word轉(zhuǎn)PDF的功能需求十分常見,但實(shí)現(xiàn)過程中往往會(huì)遇到一些棘手的挑戰(zhàn),無論是系統(tǒng)自動(dòng)生成的報(bào)告,還是用戶上傳的文檔,轉(zhuǎn)換后出現(xiàn)亂碼、排版錯(cuò)位等問題,所以本文給大家介紹了如何使用Spire.Doc完美解決Word轉(zhuǎn)PDF亂碼/錯(cuò)位問題,需要的朋友可以參考下2025-09-09
C#實(shí)現(xiàn)自定義ListBox背景的示例詳解
這篇文章主要為大家詳細(xì)介紹了如何利用C#實(shí)現(xiàn)自定義ListBox背景,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)C#有一定的幫助,感興趣的小伙伴可以跟隨小編一起了解一下2022-12-12
C#使用Socket發(fā)送和接收TCP數(shù)據(jù)實(shí)例
這篇文章主要介紹了C#使用Socket發(fā)送和接收TCP數(shù)據(jù)的實(shí)現(xiàn)方法,以實(shí)例的形式詳細(xì)講述了C#實(shí)現(xiàn)socket通信的完整實(shí)現(xiàn)過程,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2014-10-10
Unity3D Shader實(shí)現(xiàn)貼圖切換效果
這篇文章主要為大家詳細(xì)介紹了Unity3D Shader實(shí)現(xiàn)貼圖切換效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-03-03
詳解DataGridView控件的數(shù)據(jù)綁定
本文詳細(xì)講解了DataGridView控件的數(shù)據(jù)綁定,文中通過示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-02-02

