我最近开始使用SpreadsheetGear解析Excel文件。我需要遍历每一行并显示前6列的字符串表示形式。我所做的是:
Debug.Print(ssgSheet.Cells(i,0).Text)
Debug.Print(ssgSheet.Cells(i,1).Text)
Debug.Print(ssgSheet.Cells(i,2).Text)
Debug.Print(ssgSheet.Cells(i,3).Text)
Debug.Print(ssgSheet.Cells(i,4).Text)
Debug.Print(ssgSheet.Cells(i,5).Text)
其中“ i”是工作表的当前行。这不是很漂亮,但就目前而言,如果我使用6衬里版本进行调试,则没什么大不了的。我也尝试过这个:
Debug.Print(ssgSheet.Cells(i, 0, i, 5).Text)
但我只得到一个空白行。
我只是想知道SpreadsheetGear是否内置了一种简单的方法来获取一行或一定范围的单元格,并将其作为某种带分隔符的字符串返回?我在SpreadsheetGear API网站上找不到合适的函数来执行此操作,但也许我错过了。
范围到数据表
我不知道SpreadsheetGear中有任何内置函数从一系列单元格中获取定界字符串。但是,有一个内置函数可以从一系列单元格中获取数据表。
DataTable dt = ssgSheet.Cells[i, 0, i, 5].GetDataTable(SpreadsheetGear.Data.GetDataFlags.None);
(您可能希望根据是否具有列名来不同地设置标志。)
一旦有了DataTable,就可以使用此问题或此问题中的代码获取定界字符串。
将范围以CSV格式保存到流
另一个选择是将范围以CSV格式保存到Stream,然后从Stream获取定界字符串。
using (System.IO.MemoryStream mstream = new System.IO.MemoryStream())
{
ssgSheet.Cells[i, 0, i, 5].SaveToStream(mstream, SpreadsheetGear.FileFormat.CSV);
mstream.Position = 0;
System.IO.StreamReader reader = new System.IO.StreamReader(mstream);
Debug.Print(reader.ReadToEnd());
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句