1.安装NPOI:
VS直接获取NPOI nuget包,安装即可
2.操作如下:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;
using NPOI;
using NPOI.SS.UserModel;
using NPOI.HSSF.UserModel;
using MongoDB.Driver;
using MongoDB.Bson;
namespace KeyWordStatistic
{
class opExcle
{
string _ConnectString = "mongodb://192.168.***.**:27017";
public opExcle()
{
var Client = new MongoClient(_ConnectString);
var Filter = Builders<BsonDocument>.Filter;
var dbName = "db";
var colName = "Parser";
var DataBase = Client.GetDatabase(dbName);
var DataCollection = DataBase.GetCollection<BsonDocument>(colName);
string importExcelPath = "G:\\import.xls";
string exportExcelPath = "G:\\export.xls";//url重复数据
IWorkbook readWorkbook = WorkbookFactory.Create(importExcelPath);
ISheet sheet = readWorkbook.GetSheetAt(0);//获取第一个工作薄
IRow Columns = (IRow)sheet.GetRow(0);//获取第一行,列名
//if (exportExcelPath.IndexOf(".xlsx") > 0) // 2007版本
//{
// writeWorkbook = new XSSFWorkbook();
//}else if (filepath.IndexOf(".xls") > 0) // 2003版本
// workbook = new HSSFWorkbook();
var writeWorkbook = new HSSFWorkbook();
var repeatSheet = writeWorkbook.CreateSheet("repeat");
var noRepeatsheet = writeWorkbook.CreateSheet("noRepeat");
IRow repeatSheetColumns = repeatSheet.CreateRow(0);
IRow noRepeatSheetColumns = noRepeatsheet.CreateRow(0);
int j = 0;
foreach(var cell in Columns)
{
repeatSheetColumns.CreateCell(j).SetCellValue(cell.ToString());
noRepeatSheetColumns.CreateCell(j).SetCellValue(cell.ToString());
j++;
}
int norepeatIndex = 1;
int repeatIndex = 1;
//导出excel
FileStream fs = new FileStream(exportExcelPath, FileMode.OpenOrCreate, FileAccess.ReadWrite);
for (int i = 1; i <= sheet.LastRowNum; i++)
{
IRow dataItem = (IRow)sheet.GetRow(i);//获取数据
var flag = false;
Console.CursorLeft=0;
Console.Write("读取第 "+i.ToString()+" 数据");
var Curosr = DataCollection.Find(Filter.Eq("Url", dataItem.Cells[4].ToString())).ToCursor();
int icount = 0;
while (Curosr.MoveNext())
{
icount = Curosr.Current.Count();
}
if (icount == 0)
flag= false;
else
flag= true;
int k = 0;
if (flag)
{
IRow repeatSheetRow = repeatSheet.CreateRow(repeatIndex);
repeatIndex++;
foreach (var cell in dataItem.Cells)
{
repeatSheetRow.CreateCell(k).SetCellValue(cell.ToString());
k++;
}
}
else
{
IRow noRepeatSheetRow = noRepeatsheet.CreateRow(norepeatIndex);
norepeatIndex++;
foreach (var cell in dataItem.Cells)
{
noRepeatSheetRow.CreateCell(k).SetCellValue(cell.ToString());
k++;
}
}
}
writeWorkbook.Write(fs);
fs.Close();
}
private bool isRepeat(string url)
{
var Client = new MongoClient(_ConnectString);
var Filter = Builders<BsonDocument>.Filter;
var dbName = "db";
var colName = "Parser";
var DataBase = Client.GetDatabase(dbName);
var DataCollection = DataBase.GetCollection<BsonDocument>(colName);
var Curosr = DataCollection.Find(Filter.Eq("Url", url)).ToCursor();
int icount = 0;
while (Curosr.MoveNext())
{
icount = Curosr.Current.Count();
}
if (icount == 0)
return false;
else
return true;
}
}
}