?using System;
using System.Data;
using System.Drawing;
// using Excel = Microsoft.Office.Interop.Excel;
namespace ExcelAutoFix.Service
{
/// <summary>
/// Excel 服务.
/// </summary>
public class ExcelService
{
#region OPEN WORKBOOK VARIABLES
private static object vk_missing = System.Reflection.Missing.Value;
private static object vk_visible = true;
private static object vk_false = false;
private static object vk_true = true;
private object vk_update_links = 0;
private object vk_read_only = vk_true;
private object vk_format = 1;
private object vk_password = vk_missing;
private object vk_write_res_password = vk_missing;
private object vk_ignore_read_only_recommend = vk_true;
private object vk_origin = vk_missing;
private object vk_delimiter = vk_missing;
private object vk_editable = vk_false;
private object vk_notify = vk_false;
private object vk_converter = vk_missing;
private object vk_add_to_mru = vk_false;
private object vk_local = vk_false;
private object vk_corrupt_load = vk_false;
#endregion
/// <summary>
/// Excel App.
/// </summary>
private Excel.Application xlApp;
/// <summary>
/// Excel 工作簿.
/// </summary>
private Excel.Workbook xlBook = null;
/// <summary>
/// Excel 工作表.
/// </summary>
private Excel.Worksheet xlSheet = null;
/// <summary>
/// 打开 Excel.
/// </summary>
public void OpenExcel()
{
// 启动 Excel.
xlApp = new Excel.ApplicationClass();
// 可见/不可见.
xlApp.Visible = false;
xlApp.UserControl = true;
xlApp.DisplayAlerts = true;
}
/// <summary>
/// 退出 Excel.
/// </summary>
public void CloseExcel()
{
xlApp.DisplayAlerts = false;
xlApp.Workbooks.Close();
xlApp.Quit();
}
/// <summary>
/// 打开 Excel 文件.
/// </summary>
/// <param name="excelFile"></param>
public void OpenExcelFile(String excelFile)
{
// 打开文件.
xlBook = xlApp.Workbooks.Open(excelFile,
vk_update_links, vk_missing, vk_format, vk_password,
vk_write_res_password, vk_ignore_read_only_recommend, vk_origin,
vk_delimiter, vk_editable, vk_notify, vk_converter, vk_add_to_mru,
vk_local, vk_corrupt_load);
// 取得第一个 Sheet.
foreach (Excel.Worksheet displayWorksheet in xlBook.Sheets)
{
xlSheet = displayWorksheet;
break;
}
}
/// <summary>
/// 保存 Excel 文件.
/// </summary>
public void SaveExcelFile()
{
xlBook.Save();
}
/// <summary>
/// 另存为 Excel 文件.
/// </summary>
public void SaveAsExcelFile(String asFileName)
{
xlBook.SaveCopyAs(asFileName);
}
/// <summary>
/// 关闭 Excel 文件.
/// </summary>
public void CloseExcelFile()
{
xlBook.Close(false, false, false);
}
/// <summary>
/// 选择工作表.
/// </summary>
/// <param name="sheetName"></param>
public void SelectSheet(String sheetName)
{
// 选择工作表.
xlSheet = (Excel.Worksheet)xlBook.Sheets.get_Item(sheetName);
}
/// <summary>
/// 取得单元格文本.
/// </summary>
/// <param name="row"></param>
/// <param name="col"></param>
/// <returns></returns>
public String GetStringValue(int row, int col)
{
return xlSheet.get_Range(xlSheet.Cells[row, col], xlSheet.Cells[row, col]).Text.ToString().Trim();
}
/// <summary>
/// 设置单元格文本./// </summary>
/// <param name="row"></param>
/// <param name="col"></param>
/// <param name="value"></param>
public void SetValue(int row, int col, String value)
{
// 取得范围.
Excel.Range range = xlSheet.get_Range(xlSheet.Cells[row, col], xlSheet.Cells[row, col]);
// 原有的数值.
String oldValue = range.Text.ToString().Trim();
// 设置数值.
xlSheet.Cells[row, col] = value;
// 修改背景色
range.Interior.ColorIndex = 19;
// 添加备注.
range.AddComment("修改前数值:" + oldValue);
}
/// <summary>
/// 设置指定单元格为 字符格式.
/// </summary>
/// <param name="row1"></param>
/// <param name="col1"></param>
/// <param name="row2"></param>
/// <param name="col2"></param>
public void SetTextFormat(int row1, int col1, int row2, int col2)
{
// 选择区域.
Excel.Range myrange = xlSheet.get_Range(xlSheet.Cells[row1, col1], xlSheet.Cells[row2, col2]);
// 文本格式
myrange.NumberFormatLocal = "@";
}
}