冰蓝科技
|
028-81705109
|
|
微信扫一扫
|

Spire.Cloud 纯前端文档控件

Spire.Presentation for .NET 10.8.2 现已发布, 该版本更新了 .NET 6.0 和 .NET Core 2.0 框架下的依赖项,并修复了在将 PPTX 转换为 PDF 时出现的一系列问题。更多详细信息如下所示。

更新依赖项::

问题修复:


获取 Spire.Presentation 10.8.2,请点击:

https://www.e-iceblue.cn/Downloads/Spire-Presentation-NET.html

Spire.PDF for Java 11.8.3 现已正式发布。该版本优化了 PDF 转 OFD 的内存消耗,并且还修复了一个在转换 SVG 到 PDF 文件时遇到的问题。详情请查阅以下内容。

优化:

问题修复:


获取 Spire.PDF for Java 11.8.3 请点击:

https://www.e-iceblue.cn/Downloads/Spire-PDF-JAVA.html

Python添加水印到PDF

水印技术是保护文档安全、声明所有权及防止未经授权复制的关键手段。无论是分发草稿还是为最终交付成果添加品牌标识,使用水印都能有效保护您的内容。本教程将指导您如何使用 Spire.PDF for Python 在 Python 中为 PDF 文件添加水印

我们将逐步演示如何插入文字水印与图片水印、调整透明度与定位,并解决常见问题——所有步骤均配有清晰且注释完善的代码示例。

Python PDF 水印处理库

Spire.PDF for Python 是一款功能强大的 PDF 处理库,特别针对水印功能提供以下特性:

  • 精准定位 :支持高精度水印定位与旋转
  • 透明度调节 :灵活的透明度控制选项
  • 多格式支持 :可添加文字或图片水印
  • 灵活应用 :支持单页或整份文档的水印添加
  • 无损质量 :保持原始 PDF 文件质量

开始前请确保已通过以下命令安装库:

pip install spire.pdf

添加文字水印到 PDF

以下代码演示如何为 PDF 每页添加倾斜的"禁止复制"文字水印,包含字号、颜色、位置、旋转角度及透明度的专业级设置:

from spire.pdf import *
from spire.pdf.common import *
import math

# 创建PdfDocument类的对象
doc = PdfDocument()

# 从指定路径加载PDF文档
doc.LoadFromFile("C:\\Users\\Administrator\\Desktop\\Input.pdf")

# 为水印字体创建PdfTrueTypeFont类的对象
font = PdfTrueTypeFont("黑体", 48.0, 0, True)

# 指定水印文本
text = "禁 止 复 制"

# 测量文本的尺寸以确保正确定位
text_width = font.MeasureString(text).Width
text_height = font.MeasureString(text).Height

# 循环遍历文档中的每一页
for i in range(doc.Pages.Count):

    # 获取当前页面
    page = doc.Pages.get_Item(i)
    
    # 保存当前画布状态
    state = page.Canvas.Save()
 
    # 计算页面的中心坐标
    x = page.Canvas.Size.Width  / 2
    y = page.Canvas.Size.Height / 2

    # 将坐标系平移到中心,使页面的中心成为原点(0, 0)
    page.Canvas.TranslateTransform(x, y)
    
    # 将画布逆时针旋转45度以显示水印
    page.Canvas.RotateTransform(-45.0)

    # 设置水印的透明度
    page.Canvas.SetTransparency(0.4)
    
    # 使用负偏移量在中心位置绘制水印文本
    page.Canvas.DrawString(text, font, PdfBrushes.get_Blue(), PointF(-text_width / 2, -text_height / 2))
    
    # 恢复画布状态,以防止变换影响后续绘图
    page.Canvas.Restore(state)

# 将修改后的文档保存到新的PDF文件
doc.SaveToFile("output/TextWatermark.pdf")

# 释放资源
doc.Dispose()

代码解析:

  1. 加载 PDF 文档 :通过 PdfDocument 类从指定路径加载待处理的 PDF 文件。
  2. 配置水印文本 :设置水印文字内容("禁 止 复 制"),并指定字体(黑体,48磅字号),同时测量文本尺寸以实现精准定位。
  3. 应用图形变换 :针对每个页面执行以下操作:
    • 将坐标系原点移至页面中心
    • 画布逆时针旋转45度
    • 设置水印透明度为40%
  4. 绘制水印 :在坐标(-text_width/2, -text_height/2)处绘制文本,该计算确保无论画布如何旋转,文字始终以页面中心为基准对称分布。
  5. 保存文档 :将处理后的文档另存为新 PDF 文件。

效果图:

Python添加文本水印到PDF

添加图片水印到 PDF

以下代码演示如何为PDF每一页添加半透明图片水印,确保精准定位并呈现专业视觉效果。

from spire.pdf import *
from spire.pdf.common import *

# 创建PdfDocument类的对象
doc = PdfDocument()

# 从指定路径加载PDF文档
doc.LoadFromFile("C:\\Users\\Administrator\\Desktop\\Input.pdf")

# 从指定路径加载水印图像
image = PdfImage.FromFile("C:\\Users\\Administrator\\Desktop\\logo.png")

# 获取加载的图像的宽度和高度以进行定位
imageWidth = float(image.Width)
imageHeight = float(image.Height)

# 循环遍历文档中的每一页以应用水印
for i in range(doc.Pages.Count):
    # 获取当前页面
    page = doc.Pages.get_Item(i)

    # 将水印的透明度设置为50%
    page.Canvas.SetTransparency(0.5)

    # 获取当前页面的尺寸
    pageWidth = page.ActualSize.Width
    pageHeight = page.ActualSize.Height

    # 计算x和y坐标以将图像居中放置在页面上
    x = (pageWidth - imageWidth) / 2
    y = (pageHeight - imageHeight) / 2

    # 在计算出的中心位置绘制图像
    page.Canvas.DrawImage(image, x, y, imageWidth, imageHeight)

# 将修改后的文档保存到新的PDF文件
doc.SaveToFile("output/ImageWatermark.pdf")

# 释放资源
doc.Dispose()

代码解析:

  1. 加载 PDF 文档 :通过PdfDocument类从指定路径加载需要添加水印的PDF文件。
  2. 配置水印图片: 从指定路径加载水印图片文件,并获取图片尺寸参数以实现精确定位。
  3. 应用图像处理 :对每个页面执行以下操作:
    • 设置水印透明度为50%
    • 计算页面中心坐标作为水印位置基准
  4. 绘制水印图像 :根据计算出的中心坐标绘制水印图片,确保在每页居中显示。
  5. 保存文档 :将添加水印后的文档另存为新的PDF文件。

效果图:

Python添加图片水印到PDF

除了水印之外,您还可以为 PDF 添加图章。与水印固定位置不同,图章可以自由移动或删除,为文档批注提供了更大的灵活性。

常见问题排查

  1. 水印未显示:
    • 检查文件路径是否正确
    • 确认透明度未设置为0(完全透明)
    • 确保水印坐标位于页面边界内
  2. 质量问题:
    • 文字水印建议使用更高质量的字体
    • 图片水印需确保足够的分辨率
  3. 旋转异常:
    • 注意旋转是围绕当前原点进行的
    • 变换顺序很重要(先平移后旋转)

总结

借助 Spire.PDF for Python 库,为 PDF 文档添加水印既简单便捷又功能强大。您既可以批量添加醒目的"机密"警示水印,也能嵌入品牌 Logo 作为优雅的背景标识。该库支持灵活的坐标定位、透明度调节、旋转等高级功能,让您能够根据文档类型和使用场景,轻松打造专业级的水印解决方案。

问答集锦

Q1. 能否在同一个PDF中同时添加文字和图片水印?

可以,您只需在遍历PDF页面的循环中结合使用两种水印添加方法即可。

Q2. 如何旋转图片水印?

与文字水印示例类似,在绘制图片前使用 Canvas.RotateTransform( 角度) 方法即可实现旋转。

Q3. Spire.PDF是否支持透明PNG作为水印?

支持。当使用PNG图片作为水印时,Spire.PDF会保留其原有的透明度。

Q4. 能否为不同页面添加不同的水印?

完全可以。您可以在页面循环中添加条件判断逻辑,根据页码或其他标准为不同页面应用不同的水印。

申请临时License

如果您需要去除生成文档中的评估提示或解除功能限制,请该Email地址已收到反垃圾邮件插件保护。要显示它您需要在浏览器中启用JavaScript。获取有效期 30 天的临时许可证。

在 ASP.NET Core 中使用 C# 和 Spire.Barcode 扫描二维码和条码

在现代业务应用中,在 ASP.NET 环境下扫描条码和二维码的需求非常常见。无论是票务验证、支付处理,还是库存管理,集成一个ASP.NET 二维码扫描器或条码读取功能,都能显著提升系统的效率和准确性。

本教程将演示如何使用 Spire.Barcode for .NET 和 C#,在 ASP.NET 中实现完整的条码扫描解决方案。我们将创建一个 ASP.NET Core Web 应用,能够从上传的图片中读取二维码和多种条码格式,识别准确,并可方便地集成到现有项目中。

教程概览

1. 项目创建

步骤 1:创建项目

创建一个新的 ASP.NET Core Razor Pages 项目,作为扫描功能的基础。可通过以下命令创建新项目,也可在 Visual Studio 中手动配置:

dotnet new webapp -n QrBarcodeScanner
cd QrBarcodeScanner

步骤 2:安装 Spire.Barcode for .NET

安装 Spire.Barcode for .NET NuGet 包。该组件支持解码多种条码类型,并提供简单易用的 API。可在 NuGet 包管理器中搜索或使用以下命令安装:

dotnet add package Spire.Barcode

Spire.Barcode for .NET 内置支持二维码和多种条码格式,如 Code128、EAN-13 和 Code39,无需额外的图像处理库即可集成到 ASP.NET 项目。更多支持的条码类型,请参考 BarCodeType API 文档

对于小型项目,也可使用 Free Spire.Barcode for .NET

2. 在 ASP.NET 中实现二维码与条码扫描功能

二维码和条码的扫描功能主要包括两部分:

  1. 处理和解码上传图片的后端逻辑。
  2. 网页界面,用于上传扫描图片并显示结果。

我们先实现后端,确保扫描流程正确,然后再连接一个简洁的 Razor Page 前端,从而构建一个完整的二维码与条码扫描解决方案。

后端:使用 Spire.Barcode 实现二维码和条码扫描逻辑

后端代码将上传的文件读入内存,并使用 Spire.Barcode 进行扫描,可通过内存流或文件路径处理。扫描结果会返回给前端。此实现支持二维码及其他条码类型,无需针对格式编写额外逻辑。

Index.cshtml.cs

using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.RazorPages;
using Spire.Barcode;

public class IndexModel : PageModel
{
    [BindProperty]
    public IFormFile Upload { get; set; }  // 上传的文件

    public string Result { get; set; }     // 扫描结果
    public string UploadedImageBase64 { get; set; } // 用于预览的 Base64 字符串

    public void OnPost()
    {
        if (Upload != null && Upload.Length > 0)
        {
            using (var ms = new MemoryStream())
            {
                // 将上传文件读入内存
                Upload.CopyTo(ms);

                // 转换为 Base64,用于 HTML <img> 显示
                UploadedImageBase64 = "data:" + Upload.ContentType + ";base64," +
                                      Convert.ToBase64String(ms.ToArray());

                // 重置流位置以便扫描
                ms.Position = 0;

                // 扫描二维码或条码
                try
                {
                    string[] scanned = BarcodeScanner.Scan(ms);
                    Result = scanned != null && scanned.Length > 0
                        ? string.Join(", ", scanned)
                        : "未检测到二维码或条码。";
                }
                catch (Exception ex)
                {
                    Result = "扫描过程中出错: " + ex.Message;
                }
            }
        }
    }
}

关键类和方法说明

  • BarcodeScanner:Spire.Barcode 的静态类,用于解码图片中的二维码或条码。
  • BarcodeScanner.Scan(Stream imageStream):从内存流扫描图片,返回解码后的字符串数组,可扫描图片中所有条码。Scan 方法会扫描图像中的所有条码,并返回扫描结果。
  • 可选方法:
    • BarcodeScanner.Scan(string imagePath):从文件路径扫描图片。
    • BarcodeScanner.ScanInfo(string imagePath):返回附加条码信息,如类型、在图片中的位置和储存的数据。

根据应用需求,这些方法可灵活使用。

前端:二维码与条码上传及结果显示界面

下面的页面提供一个简洁的上传表单,用户上传包含二维码或条码的图片后,可显示图片及识别结果,并可一键复制。页面布局保持简洁,实现了在浏览器中快速识别二维码等条码的能力。

Index.cshtml

@page
@model IndexModel
@{
    ViewData["Title"] = "二维码与条码扫描器";
}

<div style="max-width:420px;margin:40px auto;padding:20px;border:1px solid #ccc;border-radius:8px;background:#f9f9f9;">
    <h2>二维码与条码扫描器</h2>
    <form method="post" enctype="multipart/form-data" id="uploadForm">
        <input type="file" name="upload" accept="image/*" required onchange="this.form.submit()" style="margin:10px 0;" />
    </form>

    @if (!string.IsNullOrEmpty(Model.UploadedImageBase64))
    {
        <div style="margin-top:15px;text-align:center;">
            <img src="@Model.UploadedImageBase64" style="width:300px;height:300px;object-fit:contain;border:1px solid #ddd;background:#fff;" />
        </div>
    }

    @if (!string.IsNullOrEmpty(Model.Result))
    {
        <div style="margin-top:15px;padding:10px;background:#e8f5e9;border-radius:6px;">
            <b>扫描结果:</b>
            <p id="scanText">@Model.Result</p>
            <button type="button" onclick="navigator.clipboard.writeText(scanText.innerText)" style="background:#28a745;color:#fff;padding:6px 10px;border:none;border-radius:4px;">复制</button>
        </div>
    }
</div>

下图展示了扫描页面成功识别二维码和 Code128 条码后的效果,结果显示并可一键复制:

ASP.NET Core 二维码与 Code128 条码扫描页面,显示识别结果并支持复制

该 ASP.NET Core 应用可以从上传图片扫描二维码和条码。如需生成二维码或条码,请参考 在 ASP.NET Core 中生成二维码教程


3. 测试与排错

运行应用后,可用以下图片测试扫描功能:

  • 包含 URL 或纯文本的二维码图片。
  • Code128 或 EAN-13 条形码图片。

若识别失败:

  • 确保图片对比度清晰,畸变较小。
  • 使用分辨率适中的图片(不要过大或像素化)。
  • 测试不同格式,如 JPG、PNG 或 BMP。
  • 避免反光、眩光或光线不足的图片。
  • 当一张图片中有多个条码时,确保条码之间清晰分隔,以提高识别率。

建议维护一个小型二维码和条码样本库,用于修改代码后定期测试。

4. 扩展到其他 .NET 应用

本教程的条码扫描逻辑在不同 .NET 应用类型中使用方式相同,只需提供图片的方式不同。核心解码方法 BarcodeScanner.Scan() 可在以下环境中复用:

  • ASP.NET Core MVC 控制器Web API 接口
  • 桌面应用(如 WinForms 或 WPF)
  • 控制台工具(用于批量处理)

示例:最简 ASP.NET Core Web API 接口 — 接收 HTTP POST 上传的图片,并返回解码结果 JSON:

[ApiController]
[Route("api/[controller]")]
public class ScanController : ControllerBase
{
    [HttpPost]
    public IActionResult Scan(IFormFile file)
    {
        if (file == null) return BadRequest("未上传文件");
        using var ms = new MemoryStream();
        file.CopyTo(ms);
        ms.Position = 0;
        string[] results = BarcodeScanner.Scan(ms);
        return Ok(results);
    }
}

示例:控制台应用 — 扫描本地图片文件并打印解码文本:

string[] result = BarcodeScanner.Scan(@"C:\path\to\image.png");
Console.WriteLine(string.Join(", ", result));

这种灵活性方便开发者快速在新项目中集成二维码和条码扫描,或扩展已有 .NET 应用。

5. 总结

本教程展示了如何在 ASP.NET Core 中使用 Spire.Barcode for .NET,实现完整的二维码和条码扫描解决方案。从上传图片到解码显示结果,流程清晰,适用于多种应用类型。借助此方法,开发者可以快速在电商平台、票务系统、文件验证工具及其他关键业务 Web 应用中集成可靠的扫描功能。

对于更高级的场景,Spire.Barcode for .NET 提供了自定义识别流程、支持多种图片格式和条码类型等功能。申请免费试用以解锁所有高级功能。

立即下载 Spire.Barcode for .NET,开始构建自己的 ASP.NET 条码扫描解决方案。

Spire.Doc for Python 13.8.0 现已正式发布。该版本支持设置图表坐标轴间距,同时修复了获取文本框数量、公式显示、文档对比、自定义属性及内容格式等多个问题。更多详情如下。

新功能:

问题修复:


获取 Spire.Doc for Python 13.8.0 请点击:

https://www.e-iceblue.cn/Downloads/Spire-Doc-Python.html

C# 教程示例 - Excel与JSON互转

Excel 和 JSON(JavaScript Object Notation)是两种广泛使用的数据格式,在不同场景中各具优势。Excel 以其强大的数据处理和分析能力被广泛应用于报表制作和数据管理,而 JSON 则因轻量、结构化,成为 Web 开发、API 集成和跨平台数据交换的首选格式。

本文将详细介绍如何使用 C# 结合 Spire.XLS for .NET 库,实现 Excel 与 JSON 的双向转换。无论是将 Excel 数据导出为 JSON 以供前端展示,还是将 JSON 数据导入 Excel 便于分析和报表制作,本文都提供完整的代码示例和实用技巧,帮助开发者快速掌握可靠的数据转换方法。

目录

为什么要在 Excel 和 JSON 格式之间相互转换

  • 跨平台数据交换:JSON 是 Web 应用和各种系统间广泛使用的数据交换格式,转换为 JSON 能实现不同平台之间的数据互通。
  • API 集成需求:许多现代 API 只接受 JSON 格式数据,通过转换可以轻松将 Excel 中的数据用于 API 调用。
  • 数据分析与展示:Excel 是数据分析、统计和报表制作的利器,转换 JSON 数据到 Excel,方便可视化和深入分析。
  • 轻量级数据传输:JSON 文件体积小、结构紧凑,适合网络传输,转换为 JSON 能提高传输效率。
  • 自动化与流程集成:Excel 和 JSON 互转方便集成到自动化流程(如 ETL),提升数据处理效率和准确性。
  • 兼容多种存储方案:JSON 广泛应用于 NoSQL 数据库和配置文件,转换方便数据存储与管理。

环境准备与类库安装

在开始操作前,请确保您的开发环境满足以下条件:

  • 安装 Visual Studio 或其他支持 C# 的开发工具
  • 配置好 .NET Framework 或 .NET Core 运行环境
  • 引入 Spire.XLS 库,用于 Excel 文件的读取和写入
  • 引入 Newtonsoft.Json 库,支持 JSON 数据的序列化与反序列化

库安装方法

在 Visual Studio 中打开 NuGet 包管理器控制台,依次执行以下命令安装所需库:

Install-Package Spire.XLS

Install-Package Newtonsoft.Json

完成以上准备后,即可开始实现 Excel 与 JSON 的转换操作。

如何使用 C# 将 Excel 转换为 JSON(分步详解)

将 Excel 导出为 JSON 是在 C# 中进行数据交换与系统集成的常见需求,适用于将数据传递到前端或调用 Web API。实现流程为:读取 Excel 工作表数据 → 导出为 DataTable → 序列化为 JSON → 保存为文件。

步骤详解

  1. 加载 Excel 文件
    • 使用 Spire.XLS 创建 Workbook,加载目标Excel文件。
  2. 定位目标工作表
    • 按需获取需要导出的工作表(如 Worksheets[0])。
  3. 导出为 DataTable
    • 调用 ExportDataTable() 将表格内容导出为结构化 DataTable。
  4. 序列化为 JSON
    • 使用 Newtonsoft.Json 将 DataTable 转为格式化 JSON 字符串。
  5. 保存为文件
    • 将生成的 JSON 字符串写入文本文件,便于后续使用。

示例代码

using Newtonsoft.Json;
using Spire.Xls;
using System.Data;
using System.IO;

namespace ConvertExcelToJSON
{
    class Program
    {        
        static void Main(string[] args)
        {
            // Excel 文件路径
            string excelFilePath = @"示例.xlsx";

            // 创建 Workbook对象,并加载Excel文件
            Workbook workbook = new Workbook();
            workbook.LoadFromFile(excelFilePath);

            // 获取第一个工作表
            Worksheet worksheet = workbook.Worksheets[0];

            // 将工作表内容导出为 DataTable
            DataTable dataTable = worksheet.ExportDataTable();

            // 将 DataTable 序列化为 JSON 字符串
            string jsonResult = JsonConvert.SerializeObject(dataTable, Formatting.Indented);

            // 将 JSON 字符串保存到文本文件
            File.WriteAllText("输出.txt", jsonResult);
        }
    }
}

C# 示例:使用 Spire.XLS 将 Excel 导出为 JSON

如何使用 C# 将 JSON 转换为 Excel(分步详解)

将 JSON 数据导入 Excel 常用于数据分析和报表生成等场景。JSON 格式结构清晰、易解析,而 Excel 则提供直观的数据处理与可视化功能。通过将 JSON 转换为 Excel,不仅能在熟悉的表格环境中对数据进行进一步计算和分析,还能快速生成可视化报表。

步骤详解

  1. 读取 JSON 字符串
    • 从文件或其他来源读取 JSON 数据,例如 API 响应或本地测试数据。
  2. 反序列化为 DataTable
    • 使用 Newtonsoft.Json 将 JSON 字符串转为 DataTable。
  3. 创建新的 Excel 工作簿
    • 使用 Spire.XLS 创建 Workbook,用于存放 Excel 数据。
  4. 插入 DataTable 数据
    • 调用 InsertDataTable() 将数据填充到 Excel 工作表中,并保留列头。
  5. 格式美化(可选)
  6. 保存 Excel 文件
    • 选择合适格式保存到磁盘,例如 .xlsx。

示例代码

using Newtonsoft.Json;
using Spire.Xls;
using System.Data;
using System.Drawing;

namespace ConvertJSONToExcel
{
    class Program
    {
        static void Main(string[] args)
        {
            // 示例 JSON 数据
            string json = @"
            [
                {""姓名"":""张三"",""年龄"":30,""部门"":""销售部"",""入职日期"":""2020-05-12"",""全职"":true},
                {""姓名"":""李四"",""年龄"":25,""部门"":""市场部"",""入职日期"":""2021-09-01"",""全职"":false},
                {""姓名"":""王五"",""年龄"":40,""部门"":""技术部"",""入职日期"":""2018-03-15"",""全职"":true},
                {""姓名"":""赵六"",""年龄"":35,""部门"":""财务部"",""入职日期"":""2019-07-20"",""全职"":true}
            ]";

            // 将 JSON 字符串反序列化为 DataTable
            DataTable dataTable = JsonConvert.DeserializeObject<DataTable>(json);

            // 创建 Excel 工作簿
            Workbook workbook = new Workbook();
            Worksheet worksheet = workbook.Worksheets[0];

            // 将 DataTable 插入工作表(包含列头)
            worksheet.InsertDataTable(dataTable, true, 1, 1);

            // 设置表头样式
            CellStyle headerStyle = workbook.Styles.Add("HeaderStyle");
            headerStyle.Font.IsBold = true;
            headerStyle.Font.Size = 12;
            headerStyle.Font.Color = Color.White;
            headerStyle.HorizontalAlignment = HorizontalAlignType.Center;
            headerStyle.VerticalAlignment = VerticalAlignType.Center;
            headerStyle.Color = Color.DarkBlue;

            int colCount = dataTable.Columns.Count;
            for (int c = 1; c <= colCount; c++)
            {
                worksheet.Range[1, c].CellStyleName = "HeaderStyle";
            }

            // 设置数据单元格样式
            CellStyle dataStyle = workbook.Styles.Add("DataStyle");
            dataStyle.HorizontalAlignment = HorizontalAlignType.Center;
            dataStyle.VerticalAlignment = VerticalAlignType.Center;
            dataStyle.Borders[BordersLineType.EdgeLeft].LineStyle = LineStyleType.Thin;
            dataStyle.Borders[BordersLineType.EdgeRight].LineStyle = LineStyleType.Thin;
            dataStyle.Borders[BordersLineType.EdgeTop].LineStyle = LineStyleType.Thin;
            dataStyle.Borders[BordersLineType.EdgeBottom].LineStyle = LineStyleType.Thin;

            int rowCount = dataTable.Rows.Count;
            worksheet.Range[2, 1, rowCount + 1, colCount].CellStyleName = "DataStyle";

            // 自动调整列宽
            worksheet.AllocatedRange.AutoFitColumns();

            // 保存 Excel 文件
            workbook.SaveToFile("输出.xlsx", ExcelVersion.Version2013);

            // 释放资源
            workbook.Dispose();
        }
    }
}

C# 示例:使用 Spire.XLS 将 JSON 导入 Excel 文件

实用技巧

在 Excel 与 JSON 之间进行转换时,可参考以下技巧来提高转换的稳定性与准确性:

  • 确保数据格式一致:日期、数字等格式要统一,避免转换异常。
  • 妥善处理空值:空单元格应合理转换为null或空字符串。
  • 统一列名规范:列名应规范,方便转换后的JSON键命名。
  • 保留列头:JSON转Excel时应插入列头,提升表格易读性。

总结

本文深入探讨了C# 实现 Excel 到 JSON 及 JSON 到 Excel 的双向转换方法,并提供了详细步骤介绍和完整代码示例。通过 Spire.XLS 和 Newtonsoft.Json 库,开发者可以快速、高效、可靠地实现Excel与JSON格式互转,适用于数据分析、报表生成、前端展示和系统集成等多种场景。

延伸阅读

常见问题解答

Q1:如何一次性转换多个工作表为 JSON?

可遍历 Workbook.Worksheets 集合,分别导出每个工作表的数据,支持批量 Excel 到 JSON 转换。

Q2:如何自定义 JSON 输出格式?

使用 JsonConvert.SerializeObject 可设置缩进、驼峰命名或忽略空值,也可使用自定义转换器。

Q3:JSON 转 Excel 时如何提升表格可读性?

保留列头、设置对齐方式、应用边框和样式,可生成清晰、易读的 Excel 报表。

Q4:该方法兼容 .NET Core 吗?

完全兼容,Spire.XLS 和 Newtonsoft.Json 都支持 .NET Core 和 .NET Framework 平台,可在各种 C# 项目中使用。

Spire.PDF 11.8.0 现已正式发布。该版本优化了转换 PDF 到 PDFA 的耗时,同时修复了多个与 PDF 转换、文本提取以及表格内容显示相关的问题。更多详情如下。

优化:

调整:

问题修复:


获取 Spire.PDF 11.8.0 请点击:

https://www.e-iceblue.cn/Downloads/Spire-PDF-NET.html

Spire.PDF for Java 11.8.0 现已正式发布。该版本修复了内存溢出、透明度丢失及无法生成输出文档等问题,进一步提升了 PDF 转换过程的稳定性和正确性。详细更新内容如下:

问题修复:


获取 Spire.PDF for Java 11.8.0 请点击:

https://www.e-iceblue.cn/Downloads/Spire-PDF-JAVA.html

Spire.PDF for C++ 11.8.1 已发布。本次更新修复了特定场景下,多产品同时使用的兼容性问题。详情请阅读以下内容。

问题修复:


获取 Spire.PDF for C++ 11.8.1 请点击:

https://www.e-iceblue.cn/Downloads/Spire-PDF-CPP.html

Spire.XLS for C++ 15.8.1 现已正式发布。该版本修复了特定场景下,多产品同时使用的兼容性问题。详情请查阅以下内容。

问题修复:


获取 Spire.XLS for C++ 15.8.1 请点击:

https://www.e-iceblue.cn/Downloads/Spire-XLS-CPP.html