使用文档API改善用户体验

本文介绍了如何使用GrapeCity Document API在C#和Java应用中无须Microsoft Office的情况下创建、操作和转换Excel电子表格、Word文档和PDF。通过示例展示了从Excel解析数据到JSON,将Excel保存为PDF,构建可填写的PDF表单,以及从PDF表单解析数据到Excel的过程。该API适用于跨平台,且速度快、占用空间小,是企业级应用的理想选择。
摘要由CSDN通过智能技术生成

目录

用例一

将Excel保存为PDF

用例二

构建PDF表单

将PDF表单解析为JSON

生成Excel电子表格

用例三

生成自定义Excel

生成PDF发票

结论


开发人员需要在涉及文档操作的桌面和Web应用程序中执行许多任务。示例包括:

  • 生成PDF表单以输入数据
  • Excel格式导出表格数据
  • PDF格式导出输入的数据

为了完成这些任务,我们可能会使用Microsoft Office Interop库。但它有一些缺点。例如,每台运行应用程序的客户端计算机都需要Microsoft Office许可证,并且所有客户端计算机都必须安装相同版本的Microsoft Excel。此外,Microsoft Office应用程序是用户界面(UI)应用程序,该API仅适用于Windows操作系统(而且即使在工作时也很缓慢)。

GrapeCity Document API是用于企业应用程序的超快速、低占用空间的API,可帮助我们快速高效地创建Excel电子表格、Word文档和PDF文档,而无需使用Microsoft ExcelWordAdob​​e Acrobat。这些API还支持多个平台上的C#Java应用程序。

让我们来看看一些用例,这些用例展示了我们可以使用GrapeCity Document API解决的问题。此处,代码示例使用C#进行演示,但我们可以使用Java编写相同的函数。

用例一

在这个用例中,我们将在遗留文档管理和新应用程序之间架起一座桥梁。

假设我们的客户多年来一直使用Excel电子表格来创建和存储发票。他们最近为他们的发票购买了我们的新Web应用程序,他们希望将所有历史数据导入我们的系统。

我们希望找到一个可以解析Excel电子表格并以编程方式将Excel转换为PDF的文档APIGrapeCity Documents for Excel (GcExcel)是应对电子表格挑战的完美解决方案。我们可以在我们的服务器或桌面应用程序中使用GcExcel来创建、操作、转换和共享与Microsoft Excel兼容的电子表格。此外,我们几乎可以从任何应用程序和平台调用它。

Excel解析为JSON

假设我们客户的旧Excel格式发票如下所示:

我们使用GcExcel .NET导入工作簿并从中收集数据。下面向您展示如何:

  • 将单元格F1中的发票编号设为字符串数据类型
  • 将单元格区域B5B9中的“Bill To”信息设为数组
  • 确保单元格范围E7F16中的项目是JSON数组对象

一旦我们从这些单元格中获得所有值,我们将它们包装成一个JSON对象:

Workbook workbook = new Workbook();
  string source = "SimpleInvoice.xlsx";
  workbook.Open (source);
  IWorksheet worksheet = workbook.Worksheets[0];
            
  Workbook workbook = new Workbook();
  workbook.Open("SimpleInvoice.xlsx");
  IWorksheet worksheet = workbook.Worksheets[0];
 
  var invoice = new Invoice()
 
  var invoiceNumberRange = worksheet.Range["F1:F1"];
  invoice.invoice_number = $"{invoiceNumberRange.Cells[0].Value}";
 
  var billToRange = worksheet.Range["B5:B9"];
  int rowCount = billToRange.Rows.Count;
  String billTo = "";
  for (int i = 0; i < rowCount; i++)
  {
    billTo = billTo + billToRange.Cells[i].Value + " ";
  }
  invoice.bill_to = billTo;
 
  var items = new List<InvoiceItem>();
 
  var itemsRange = worksheet.Range["E7:H16"];
  int columnCount = itemsRange.Columns.Count;
  rowCount = itemsRange.Rows.Count;
  for (int i = 0; i < rowCount; i++)
  {
    if (itemsRange.Cells[i, 0].Value == null)
    {
        break;
    }
 
   var item = new InvoiceItem();
   item.item_number = (string) itemsRange.Cells[i, 0].Value;
   item.description = (string) itemsRange.Cells[i, 1].Value;
   item.price = (double) itemsRange.Cells[i, 2].Value;
   item.quantity = (double) itemsRange.Cells[i, 3].Value;
 
    items.Add (item);
  }
 
  invoice.items = (List<InvoiceItem>)items;           
           
  String jsonString = JsonSerializer.Serialize(invoice);
  File.WriteAllText("invoice.json", jsonString);</pre>

我们可以将数据保存到我们的数据库中,或者使用JSON文件轻松地将其转换为任何格式。

Excel保存为PDF

导入Excel文件后,您的客户可能希望生成原始Excel文件的PDF版本以便妥善保管。

使用GcExcel,轻松将Excel转换为PDF。我们只需要创建一个工作簿,打开Excel文件,保存为PDF

Workbook workbook = new Workbook();
string source = "SimpleInvoice.xlsx";
workbook.Open (source);
workbook.Save("SimpleInvoice.pdf");

用例二

在这个用例中,让我们构建PDF输入表单供用户按照自己的节奏填写。

在这里,我们正在构建一个应用程序来管理网球俱乐部的会员资格。用户在使用我们的应用程序申请会员资格时需要提供个人信息。

如果我们可以构建可编辑的PDF表单,那将会很方便。有了它们,用户可以在有或没有互联网访问的情况下下载和填写表格。完成数据输入后,他们可以在线上传他们的文件。我们可以解析出表单条目并将它们保存到我们的应用程序中。然后,俱乐部管理员可以生成一份报告,将所有会员信息包含在一个Excel电子表格中。

使用GrapeCity Document API,我们可以快速构建一个可填写的PDF表单,并将PDF表单中的条目解析为Excel电子表格。我们只需要两个模板

  • 我们需要一个包含各种字段的表单模板来创建PDF表单。有关如何使用表单域创建Excel模板的信息,请参阅GrapeCity的文档。
  • 我们需要一个带有数据绑定字段的数据源模板来绑定从PDF表单解析的数据。有关如何创建带有数据绑定字段的Excel模板的信息,请参阅GrapeCity的文档。

构建PDF表单

要构建 PDF 表单,我们创建一个 Excel 表单模板,如下所示:

在应用程序中,我们打开Excel文件,处理模板,并将Excel保存为PDF

var workbook = new GrapeCity.Documents.Excel.Workbook();
workbook.Open("Template_MemberInfo.xlsx");
workbook.ProcessTemplate();
workbook.Save("MemberInfo.pdf");

PDF表单解析为JSON

俱乐部会员下载并完成PDF文件后,将表格上传到应用程序。然后,我们可以解析出所有成员的表单条目,并将信息保存到JSON对象。

要获取表单条目,我们必须命名模板中的每个字段。例如,我们应该将名字和姓氏的表单字段定义为:

{{(form={"name":"first_name","type":"text", "required": true})}}
{{(form={"name":"last_name","type":"text", "required": true})}}

此代码允许我们通过字段名称读取表单字段值:

var member = new MemberInfos();
foreach (Field field in doc.AcroForm.Fields)
{
    switch (field.Name)
    {
    case "first_name":
        member.first_name = (String) field.Value;
        break;
    case "last_name":
        member.last_name = (String) field.Value;
        break;
    ...
    default:
        break;
    }
}

然后,我们可以将字段值写入JSON文件:

var billPayList = new ArrayList();
foreach (string
            inputFile
            in
            Directory
                .EnumerateFiles(Path.Combine("Resources", "Uploads"),
                "*.pdf")
 )
{
            billPayList.Add(GatherData.getDataFromPdf(inputFile));
}
string jsonString = JsonSerializer.Serialize(billPayList);

生成Excel电子表格

为了生成包含所有成员的表单条目的Excel电子表格,我们创建了一个Excel数据源模板,如下所示:

在模板中,我们将数据绑定字段定义为{{ds.FieldName}},其中FieldName必须与我们在上一步中创建的JSON文件中的键匹配。例如,如果JSON文件的键值对为{"first_name":"Jone"},则数据绑定字段必须具有{{ds.first_name}}

在第一个数据绑定字段中,我们将单元格范围定义为R=A3:C8,它将单元格A3的数据扩展到单元格C8以获取第一个俱乐部成员的信息。下一个成员的信息从A9开始,到C14结束,以此类推。

我们通过以下步骤生成Excel电子表格。首先打开模板文件:

var workbook = new GrapeCity.Documents.Excel.Workbook();
workbook.Open (Path.Combine("Resources", "Templates","Template_MemberReport.xlsx"));

接下来,使用该AddDataSource方法将JSON数据添加到数据源对象中:

var datasource =
      JsonSerializer.Deserialize<List<BillPayInfos>>(File.ReadAllText(dataSourceFile));            
workbook.AddDataSource("ds", datasource);

然后,处理模板并将其保存到Excel电子表格:

workbook.ProcessTemplate();
workbook.Save(Path.Combine("Output", "MemberReport.xlsx"));

此代码生成如下所示的成员报告:

用例三

在这个用例中,我们将整合不同的数据输入方法。

假设我们正在为提供零件维修、系统恢复等的笔记本电脑服务店构建多租户业务应用程序。当客户将他们的笔记本电脑送去维修时,商店会将软件服务订单外包给一个分包商,将硬件服务订单外包给另一个分包商。

笔记本电脑维修店需要分包商下载Excel费用表格来填写他们的工作和成本。填写并上传回费用文件后,我们的应用程序会为每个客户生成PDF发票。

使用GrapeCity文档API,我们可以以编程方式为每个分包商生成自定义Excel费用表格。然后,当每个分包商返回完整的表单时,我们可以从中提取数据到JSON数组。使用数据源模板,我们可以快速为数组中的每个JSON对象生成Excel电子表格,并将Excel文件保存为PDF以发送给客户。

生成自定义Excel

假设我们有一个JSON文件来存储服务订单信息(实际上,您将使用数据库。)我们首先创建一个Excel数据源模板:

我们在应用程序中打开模板文件,将JSON文件中的数据加载到此模板中,并生成Excel费用表格供分包商下载。下面的代码片段显示了如何执行此操作:

workbook
    .Open(Path
        .Combine("Resources",
        "Templates",
        "Template_Service_Cost.xlsx"));
 
workbook.AddDataSource("ds", softwareOrderList);
workbook.ProcessTemplate();
workbook
    .Save(Path.Combine("Downloads", "subcontract_software_cost.xlsx"));

一旦分包商填写并上传了他们的Excel费用表格,我们就可以像在用例一中那样将数据从Excel解析为JSON

生成PDF发票

为了为客户生成PDF发票,我们创建了另一个Excel数据源模板,如下所示:

我们用从费用表格中提取的JSON数据填充模板,生成工作簿,并将工作簿保存为PDF

var workbook = new GrapeCity.Documents.Excel.Workbook();


    var invoiceList =
        JsonSerializer
            .Deserialize<List<ServiceOrder>>(File
                .ReadAllText(Path
                    .Combine("Resources", "DataSource", "serviceOrders.json")));


    foreach (var invoice in invoiceList)
    {
        workbook
            .Open(Path
                .Combine("Resources",
                "Templates",
                "Template_Invoice.xlsx"));


        workbook.AddDataSource("ds", invoice);
        workbook.ProcessTemplate();
        workbook
            .Save(Path
                .Combine("Downloads", $"Invoice_{invoice.order_id}.pdf"));

此代码为每个客户生成发票:

结论

我们回顾了三个用例,展示了如何使用GrapeCity文档API以编程方式从Excel文件生成PDF,如何将ExcelPDF文件表单中的数据解析为JSON,如何使用模板从Excel文件创建PDF表单,以及如何将数据从PDF表单传输到Excel

ExcelWordPDF的文档支持在产品开发过程中经常被忽视和低估。GrapeCity文档API提供您所需的功能。API将您的应用程序推向一个新的水平,并为您未来的成功做好准备。GrapeCity为开发人员设计了API,使用起来很轻松。

要探索和尝试本文中用例的所有C#代码,请访问此GitHub存储库

要了解Document API的其他功能,请查看以下链接:

https://www.codeproject.com/Articles/5320317/Improving-User-Experience-with-Document-APIs

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值