public class AsposeExcelHelper
{
/// <summary>
/// 操作实例
/// </summary>
private Workbook currentWorkbook;
public AsposeExcelHelper()
{
License license = new License();
license.SetLicense(@"E:\Demo\ExcelTools\ExcelTools\Excel\License.lic");//aspose需要license
currentWorkbook = new Workbook();
currentWorkbook.Worksheets.Clear();//默认会有一张sheet
}
/// <summary>
/// 保存
/// </summary>
public void Save()
{
string filePath = OpenSaveFolderBrowserDialog();
currentWorkbook.Save(filePath);
}
/// <summary>
/// 在Excel中新建sheet
/// </summary>
/// <param name="names"></param>
public void CreateSheetByName(string[] names)
{
foreach (string name in names)
{
if (currentWorkbook.Worksheets.GetSheetByCodeName(name) == null)
{
currentWorkbook.Worksheets.Add(name);
currentWorkbook.Worksheets.GetSheetByCodeName(name).AutoFitRows();
}
}
}
/// <summary>
/// 向指定sheet中插入值
/// </summary>
public void ExportDataToExcel(string sheetName,List<string[]> values, int firstRow)
{
Cells cells = currentWorkbook.Worksheets.GetSheetByCodeName(sheetName).Cells;
for(int valuesIndex = 0; valuesIndex < values.Count(); valuesIndex++)
{
string[] currentValue = values[valuesIndex];
for (int valueIndex = 0; valueIndex < currentValue.Length; valueIndex++)
{
cells[valuesIndex + firstRow, valueIndex].PutValue(currentValue[valueIndex]);
}
}
}
/// <summary>
/// 合并指定sheet的指定单元格, 并插值(单行)
/// </summary>
/// <param name="numbers">合并单元格的个数</param>
public void MergeCells(string sheetName,int[] numbers, int firstRow, string[] values)
{
Cells cells = currentWorkbook.Worksheets.GetSheetByCodeName(sheetName).Cells;
int firstColumn = 0;
for(int index = 0;index < numbers.Length;index ++ )
{
int number = numbers[index];
cells.Merge(firstRow, firstColumn, 1, number);
cells[firstRow, firstColumn].PutValue(values[index]);
firstColumn += number;
}
}
/// <summary>
/// 设置保存Excel的路径
/// </summary>
private string OpenSaveFolderBrowserDialog()
{
SaveFileDialog fd = new SaveFileDialog();
fd.Filter = "EXCEL文件(*.xls)|*.xls|EXCEL文件(*.xlsx)|*.xlsx";
fd.FileName = "新建 Microsoft Excel 工作表";
if (fd.ShowDialog() == DialogResult.OK)
{
return fd.FileName;
}
return string.Empty;
}
}
调用例子
private void BtnExport_Click(object sender, EventArgs e)
{
string sheetName = "IceWang";
AsposeExcelHelper aspose = new AsposeExcelHelper();
aspose.CreateSheetByName(new string[] { sheetName });
//合并指定单元格,并向单行插值
aspose.MergeCells(sheetName, new int[] { 2, 3, 1, 3 }, 0, new string[] { "上次监测时间", "2018/1/25", "本次监测时间", "2018/1/26" });
aspose.MergeCells(sheetName, new int[] { 2, 1, 1, 1, 1, 1, 1, 1 }, 1, new string[] { "测试项目", "变化最大位置(点号)", "本次测值", "本次速率", "累计值", "预警值", "是否超过预警值", "备注" });
//向为合并单元格插值
List<string[]> values = new List<string[]>();
values.Add(new string[] { "1", "2", "3", "4", "5", "6", "7", "8", "9" });
values.Add(new string[] { "1", "2", "3", "4", "5", "6", "7", "8", "9" });
values.Add(new string[] { "1", "2", "3", "4", "5", "6", "7", "8", "9" });
values.Add(new string[] { "1", "2", "3", "4", "5", "6", "7", "8", "9" });
aspose.ExportDataToExcel(sheetName, values, 2);
aspose.Save();
}