文章中写了点过程有点啰嗦,想直接看代码的直接下拉看加粗标题处
第一次使用COM组件操作excel,遇到了点坑,也有些感触。
一般来说操作excel,我比较常用的是OleDB,但是OleDB需要安装AccessDatabaseEngine,现在的公司没有特殊情况又不允许随便装东西,所以在出现了“未在本地计算机上注册“microsoft.ACE.oledb.12.0”错误之后无奈放弃,然后又试了Spire,奈何Spire需要收费,在保存excel之后,会出现一个删除不掉的sheet,最后决定使用COM组件进行操作。
先放一个Spire获取excel值的代码(这个可以正常使用,不收费):
Spire读取excel数据代码:
- 添加引用:
在项目的引用上右击,选择管理NuGet程序包,搜FreeSpire进行安装
- 代码示例:
/// <summary>
/// 获取并生成Excel
/// </summary>
/// <param name="path"></param>
private void getExcel(string path)
{
Spire.Xls.Workbook workbook = new Spire.Xls.Workbook();
workbook.LoadFromFile(path);
//获取第一张工作表
Spire.Xls.Worksheet sheet = workbook.Worksheets[0];
//保存为csv格式
sheet.SaveToFile("Customer.csv", ",", Encoding.UTF8);
List<string[]> list = new List<string[]>();
StreamReader fileReader = new StreamReader("Customer.csv");
string strLine = "";
while (strLine != null)
{
strLine = fileReader.ReadLine();
if (strLine != null && strLine.Length > 0)
{
list.Add(strLine.Split(','));
}
}
fileReader.Close();
list.Remove(list[0]);
//item便是为行
foreach (var item in list)
{
//取出来的值(item[0])前后会有"\",试了别的方法没啥用,只能用最笨的截取字符串的方法
string value1 = cutOut(item