真的是非常简单的接口…提供了读取某一页的所有数据,往某一页了写所有数据的功能。把所有数据都当作字符串来处理,对于一些数值会损失精度但是满足日常使用没什么问题。特别适用于多行相同格式的数据,没试过对于添加了筛选之类的excel会发生什么TAT
class XlsLoader
{
static Application excelApp = new Application();
public static string[,] loadXls(string path, int workSheetNum)
{
Workbook workBook = excelApp.Workbooks.Open(path);
Worksheet workSheet = workBook.Worksheets[workSheetNum];
var usedRange = workSheet.UsedRange;
var rowCount = usedRange.Rows.Count;
var colCount = usedRange.Columns.Count;
string[,] ret = new string[rowCount, colCount];
for (int i = 1; i <= rowCount; ++i)
{
for (int j = 1; j <= colCount; ++j)
{
String s = workSheet.UsedRange.Cells[i, j].Value == null ? null : String.Format("{0}", workSheet.UsedRange.Cells[i, j].Value);
ret[i - 1, j - 1] = s;
}
}
workBook.Close();
return ret;
}
public static void createXls(String path) {
var workBook = excelApp.Workbooks.Add();
workBook.SaveAs(path);
workBook.Close();
}
public static void writeToXls(string path, int workSheetNum, string sheetName, string[,] data) {
int tolRow = data.GetLength(0);
int tolCol = data.GetLength(1);
Workbook workBook = excelApp.Workbooks.Open(path);
while (workSheetNum > workBook.Worksheets.Count)
{
workBook.Worksheets.Add(After: workBook.Worksheets[workBook.Worksheets.Count]);
}
Worksheet workSheet = workBook.Worksheets[workSheetNum];
workSheet.Name = sheetName;
for (int i = 1; i <= tolRow; ++i)
{
for (int j = 1; j <= tolCol; ++j)
{
workSheet.Cells[i, j].Value = data[i - 1, j - 1];
}
}
workBook.Save();
workBook.Close();
}
}