0

我正在使用一种名为“Aspose Cells”的产品,它允许我从 HTML 生成 Excel 工作簿。

最近,我编写了使用 Aspose Cells 将大表导出到 Excel 的代码。我遇到了一个问题,即从我的单元格中删除换行符。

因此,HTML 在浏览器中可能如下所示:

Name | Address
-----+--------------
Bob  | 123 Main St,
     | Miami, FL
-----+--------------
Sue  | 123 Broadway,
     | New York NY

但是当由 Aspose Cells 渲染时,它看起来像这样:

Name | Address
-----+--------------
Bob  | 123 Main St,Miami, FL
-----+--------------
Sue  | 123 Broadway,New York NY

我尝试过几种不同的编码方式。我尝试将街道和城市放在一个单元格内的不同 div 中,并尝试在它们之间放置换行符,但 Aspose Cells 似乎出于某种原因忽略了换行符。

如何使用 Aspose Cells 使用换行符渲染此表格?

更新:这是一段代码,它将创建一个像这样的表:

html = "<table><tr><td>Bob</td><td>123 Main St,<br />Miami, FL</td></tr><tr><td>Sue</td><td>123 Broadway,<br />New York, NY</td></tr></table>";

Aspose.Cells.License license = new Aspose.Cells.License();
license.SetLicense("Aspose.Total.lic");

var options = new HTMLLoadOptions(LoadFormat.Html);     
byte[] data = Encoding.UTF8.GetBytes(html);
Workbook workbook;
using (MemoryStream ms1 = new MemoryStream(data))
{
        workbook = new Workbook(ms1, options);
}
MemoryStream ms = new MemoryStream();
workbook.Save(ms, SaveFormat.Xlsx);
ms.Seek(0, SeekOrigin.Begin);
return ms;
4

1 回答 1

1

您应该试用 Aspose.Cells API 的最新版本/修复。我已经使用以下示例代码(我确实在您的代码段中添加/更新了几行)和最新版本/修复(例如 v8.8.2.10)测试了您的场景/案例,它工作正常并且符合预期。例如 示例代码:

 string html = "<table><tbody><tr><td>Bob</td><td>123 Main St,<br>Miami, FL</td></tr><tr><td>Sue</td><td>123 Broadway,<br>New York, NY</td></tr></tbody></table>";

        LoadOptions options = new HTMLLoadOptions(LoadFormat.Html);
        byte[] data = Encoding.UTF8.GetBytes(html);
        Workbook workbook;
        using (MemoryStream ms1 = new MemoryStream(data))
        {
            workbook = new Workbook(ms1, options);
        }

        //Extend the width and Auto-fit second column
        workbook.Worksheets[0].Cells.SetColumnWidth(1, 13);
        workbook.Worksheets[0].AutoFitColumn(1);


        //Saving&nbsp;the&nbsp;Excel&nbsp;file
        MemoryStream ms = new MemoryStream();
        workbook.Save(ms, SaveFormat.Xlsx);
        ms.Seek(0, SeekOrigin.Begin);
        byte[] buffer = new byte[ms.Length];
        buffer = ms.ToArray();
        FileStream fs = new FileStream("e:\\test2\\outlinebreaks1.xlsx", FileMode.Create);
        fs.Write(buffer, 0, buffer.Length);
        fs.Close();
        ms.Close();

我在 Aspose 担任支持开发人员/布道者

于 2016-06-27T19:09:12.253 回答