MiniExcel icon indicating copy to clipboard operation
MiniExcel copied to clipboard

MergeSameCells 方法合并单元格时,某个单元格的内容的一部分与合并标记相同,触发异常System.ArgumentNullException: Value cannot be null. (Parameter 'source')

Open heqian25433 opened this issue 7 months ago • 0 comments

Excel Type

  • [ ] XLSX Excel的公司邮箱列与联系人邮箱列,内容是[email protected],判断合并标记的时候不是全字匹配的 代码如下:
var str = "[{\"QQ/微信\":\"@merge\\r\\n\",\"公司名称\":\"@merge\\r\\n\",\"网站\":\"@merge\\r\\n\",\"来源\":\"@merge\\r\\n\",\"名称\":\"\",\"No.\":\"@mergelimit\\r\\n\",\"更新时间\":\"\",\"国家\":\"@merge\\r\\n\",\"公司电话\":\"@merge\\r\\n\",\"标签\":\"@merge\\r\\n\",\"联系人电话\":\"\",\"公司邮箱\":\"\",\"联系人邮箱\":\"\",\"最后发件日期\":\"\"},{\"QQ/微信\":\"null\",\"公司名称\":\"AAAAA\",\"网站\":\"null\",\"来源\":\"2023\",\"名称\":\"BBBBB\",\"No.\":\"369\",\"更新时间\":\"2025-06-30 16:21:14\",\"国家\":\"中国\",\"公司电话\":\"11111\",\"标签\":\"挂\",\"联系人电话\":\"33333\",\"公司邮箱\":\"[email protected]\",\"联系人邮箱\":\"[email protected]\",\"最后发件日期\":\"2025-07-04 15:10:25\"},{\"QQ/微信\":\"null\",\"公司名称\":\"AAAAA\",\"网站\":\"null\",\"来源\":\"2023\",\"名称\":\"\",\"No.\":\"369\",\"更新时间\":\"2025-06-30 16:21:14\",\"国家\":\"中国\",\"公司电话\":\"11111\",\"标签\":\"挂\",\"联系人电话\":\"33333\",\"公司邮箱\":\"\",\"联系人邮箱\":\"\",\"最后发件日期\":\"\"},{\"QQ/微信\":\"@endmerge\\r\\n\",\"公司名称\":\"@endmerge\\r\\n\",\"网站\":\"@endmerge\\r\\n\",\"来源\":\"@endmerge\\r\\n\",\"名称\":\"\",\"No.\":\"@endmerge\\r\\n\",\"更新时间\":\"\",\"国家\":\"@endmerge\\r\\n\",\"公司电话\":\"@endmerge\\r\\n\",\"标签\":\"@endmerge\\r\\n\",\"联系人电话\":\"\",\"公司邮箱\":\"\",\"联系人邮箱\":\"\",\"最后发件日期\":\"\"}]";
bool hasMultipleLines = true;
var result = Newtonsoft.Json.JsonConvert.DeserializeObject<List<Dictionary<string, string>>>(str);
result.Dump();
byte[] fileContent = null;
using var stream = new System.IO.MemoryStream();
var config = new MiniExcelLibs.OpenXml.OpenXmlConfiguration()
{
	TableStyles = MiniExcelLibs.OpenXml.TableStyles.None,
	AutoFilter = false,
	EnableWriteNullValueCell = false
};
stream.SaveAs(result, true, "Sheet1", ExcelType.XLSX, config);
fileContent = stream.ToArray();
if (hasMultipleLines)
{//合并单元格
	using var streamTwo = new System.IO.MemoryStream();
	streamTwo.MergeSameCells(fileContent);
	fileContent = streamTwo.ToArray();
}

MiniExcel Version

1.41.3

Description

heqian25433 avatar Jul 09 '25 07:07 heqian25433