spire.doc for .net 在word的表格最后增加行及索引超限处理办法
Spire.Doc for .NET是一款专门对 Word 文档进行操作的 .NET 类库。在于帮助开发人员无需安装 Microsoft Word情况下,轻松快捷高效地创建、编辑、转换和打印 Microsoft Word 文档。
Spire非完全免费使用,少量处理文档可使用免费的类库,但是大量处理文档的话,请通过正规渠道采购使用。
关于word里表格增加行有两种思路,
1.插入行
2.在最后增加行
官方示例如下:
using Spire.Doc;
namespace AddRow
{class Program{static void Main(string[] args){Document doc = new Document();doc.LoadFromFile("sample.docx");Table table = doc.Sections[0].Tables[0] as Spire.Doc.Table;//Insert a new row as the third rowTableRow row = table.AddRow();table.Rows.Insert(2, row);//Add two rows at the end of the tabletable.AddRow(true, 2);table.AddRow(false, 2);doc.SaveToFile("Result.docx", FileFormat.Docx2013);}}
}
以上代码值得说明的是:
插入一个新行作为第三行
TableRow row = table.AddRow();//这里AddRow是没有参数的,相当于按前一行格式创建新的一行
table.Rows.Insert(2, row);//这里把创建的row插入到第三行
而在表格最后新增行:table.AddRow(true,2);是包含参数的。
现在问题出现了,如果按照官方文档的
table.AddRow(true, 2);table.AddRow(false, 2);doc.SaveToFile("Result.docx", FileFormat.Docx2013);
运行后:doc.SaveToFile()处提示:索引超限,必须非负这样类似的错误。
经过测试:不是因为数量多超出spire免费限制的问题。
那么:使用插入行的方式在表格最后新增行是否可行呢?答案是:完全可以!!!
TableRow row = table.AddRow();
var rowsCount = table.Rows.Count;table.Rows.Insert(rowsCount -1, row);doc.SaveToFile("Result.docx", FileFormat.Docx2013);
在这里,特别注意:通过插入到最后一行的方式新增行,TableRow row = table.AddRow()的使用就不能按新增行的思路设置参数了(比如:新增3列的行,TableRow row = table.AddRow(3)),不然也会报错。
总结:spire.doc for .net 的新增行出现的索引超限的问题可能是因为我使用的版本的问题,大家如有相同问题可以类库的版本。