using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Microsoft.Office.Core;
using Microsoft.Office.Interop.Excel;
using System.IO;
using System.Reflection;
namespace Utility
{
public class ExcelHelper
{
private Application app;
private Workbooks wbks;
private _Workbook _wbk;
private Sheets shs;
private _Worksheet _wsh;
private String filePath;
public ExcelHelper(String filePath)
{
this.filePath = filePath;
create(filePath);
}
public void create(String filePath)
{
app = new Application();
wbks = app.Workbooks;
_wbk = wbks.Add(filePath);
shs = _wbk.Sheets;
if (shs.Count > 0)
_wsh = shs[1];
}
public Boolean setCellsTo(int row, int Column, String value)
{
Range r = _wsh.Cells[row, Column];
r.set_Value(value);
return true;
}
public Boolean setCellsTo(int _WorksheetIndex, int row, int Column, String value)
{
if (!setWorksheet(_WorksheetIndex))
{
return false;
}
return setCellsTo(row, Column, value);
}
public Boolean setCellsTo(String _WorksheetName, int row, int Column, String value)
{
return setCellsTo(getWorksheet(_WorksheetName), row, Column, value);
}
public Boolean setWorksheet(int index)
{
_wsh = shs[index];
return true;
}
public Boolean setWorksheet(String sheetName)
{
int index = getWorksheet(sheetName);
if (index == -1)
return false;
return setWorksheet(index);
}
public int getWorksheet(String sheetName)
{
int index = 1;
for (; index <= shs.Count; index++)
{
_Worksheet w = shs[index];
if (sheetName.Trim().Equals(w.Name.Trim()))
return index;
}
return -1;
}
public String getCellsValue(int row, int Column)
{
Range r = _wsh.Cells[row, Column];
return r.Text;
}
public String getCellsValue(int _WorksheetIndex, int row, int Column)
{
if (!setWorksheet(_WorksheetIndex))
{
throw new Exception("找不到该工作簿");
}
return getCellsValue(row, Column);
}
public String getCellsValue(String _WorksheetIndex, int row, int Column)
{
if (!setWorksheet(_WorksheetIndex))
{
throw new Exception("找不到该工作簿");
}
return getCellsValue(row, Column);
}
public void close()
{
_wbk.Close(null, null, null);
wbks.Close();
app.Quit();
System.Runtime.InteropServices.Marshal.ReleaseComObject(app);
app = null;
}
public void save()
{
save(filePath);
}
public void save(String filePath)
{
//屏蔽掉系统跳出的Alert
app.AlertBeforeOverwriting = false;
//保存到指定目录
_wbk.SaveAs(filePath, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlNoChange, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value);
}
//
public List<String> getRow(int row, int startColumn, int endColumn, String stopStr)
{
List<String> cols = new List<string>();
for (int n = startColumn; startColumn < endColumn; n++)
{
String value = this.getCellsValue(row, n);
if (value.Trim().Equals(stopStr) && stopStr != null)
break;
cols.Add(value);
}
return cols;
}
/// <summary>
/// 遇到value= "" 返回
/// </summary>
/// <param name="row"></param>
/// <param name="startColumn"></param>
/// <returns></returns>
public List<String> getRow(int row, int startColumn)
{
return getRow(row, startColumn, int.MaxValue, "");
}
public String[] getSheetNames()
{
String[] Names = new String[shs.Count];
for (int n = 1; n <= shs.Count; n++)
{
Names[n] = shs[n];
}
return Names;
}
}
}