using System;
using System.IO;
using Microsoft.Office.Interop.Excel;
using System.Reflection;
using System.Threading;
using System.Runtime.InteropServices;
using Microsoft.Office.Core;
using System.Diagnostics;
namespace LazyUsing
{
public class ExcelHelp
{
string myFileName=null;
Microsoft.Office.Interop.Excel.Application myExcelApp;
Microsoft.Office.Interop.Excel.Workbook myWorkBook;
Microsoft.Office.Interop.Excel.Worksheet myWorkSheet;
public int ExcelColumns {
get; private set; }
public int ExcelRows {
get; private set; }
/// <summary>
/// 构造函数,不创建Excel工作薄
/// </summary>
public ExcelHelp(string fileName)
{
//请不要删除以下信息
//版权:http://XingFuStar.cnblogs.com
myFileName = fileName;
}
public ExcelHelp()
{
}
/// <summary>
/// 创建Excel工作薄
/// </summary>
public void CreateExcelAndWorkBook()
{
myExcelApp = new Microsoft.Office.Interop.Excel.Application();
myWorkBook = myExcelApp.Application.Workbooks.Add(true);
}
[DllImport("kernel32.dll")]
public static extern IntPtr _lopen(string lpPathName, int iReadWrite);
[DllImport("kernel32.dll")]
public static extern bool CloseHandle(IntPtr hObject);
public const int OF_READWRITE = 2;
public const int OF_SHARE_DENY_NONE = 0x40;
public readonly IntPtr HFILE_ERROR = new IntPtr(-1);
public bool IsOpened(string fileName = null)
{
string tempFile = fileName == null ? myFileName : fileName;
if (!File.Exists(tempFile))
{
throw new Exception();
}
IntPtr vHandle = _lopen(tempFile, OF_READWRITE | OF_SHARE_DENY_NONE);
if (vHandle == HFILE_ERROR)
{
return true;
}
CloseHandle(vHandle);
return false;
}
/// <summary>
/// 打开一个存在的Excel文件
/// </summary>
/// <param name="fileName">Excel完整路径加文件名</param>
public bool Open()
{
myExcelApp = new Microsoft.Office.Interop.Excel.Application();
if (File.Exists(myFileName))
{
myWorkBook = myExcelApp.Workbooks.Open(myFileName, 0, false, 5, "", "", true, Microsoft.Office.Interop.Excel.XlPlatform.xlWindows, "\t", false, false, 0, true, 1, 0);
return true;
}
return false;
}
/// <summary>
/// 打开/创建一个存在的Excel文件
/// </summary>
/// <param name="fileName">Excel完整路径加文件名</param>
public void OpenOrCreate()
{
myExcelApp = new Microsoft.Office.Interop.Excel.Application();
if (myExcelApp != null)
{
if (myFileName!=null&&File.Exists(myFileName))
{
myWorkBook = myExcelApp.Workbooks.Open(myFileName, 0, false, 5, "", "", true, Microsoft.Office.Interop.Excel.XlPlatform.xlWindows, "\t", false, false, 0, true, 1, 0);
}
else
{
myWorkBook = myExcelApp.Workbooks.Add(true);
}
//Microsoft.Office.Interop.Excel.Worksheet workSheet = workBook.ActiveSheet as Microsoft.Office.Interop.Excel.Worksheet;
myExcelApp.Visible = false;
myExcelApp.DisplayAlerts = false;
//myWorkBook.SaveAs(myFileName);
//myWorkBook.Close(false, Missing.Value, Missing.Value);
//myExcel.Quit();
////workSheet = null;
//myWorkBook = null;
//myExcel = null;
//GC.Collect();
}
else
{
throw new Exception("ExcelApp is not exists!");
}
}
///// <summary>
///// 创建Excel工作薄
///// </summary>
//public void CreateExcel()
//{
// myExcel = new Microsoft.Office.Interop.Excel.Application();
// myWorkBook = myExcel.Application.Workbooks.Add(true);
//}
/// <summary>
/// 显示Excel
/// </summary>
public void ShowExcel()
{
myExcelApp.Visible = true;
}
public int GetAllSheetNum()
{
return myExcelApp.Worksheets.Count;
}
/// <summary>
/// 激活工作表
/// </summary>
/// <param name="sheetName">工作表名</param>
public void ActivateSheet(string sheetName)
{
myWorkSheet = (Microsoft.Office.Interop.Excel.Worksheet)myExcelApp.Worksheets[sheetName];
myWorkSheet.Activate();
}
/// <summary>
/// 激活工作表
/// </summary>
/// <param name="sheetNum">工作表序号</param>
public void ActivateSheet(int sheetNum)
{
myWorkSheet = (Microsoft.Office.Interop.Excel.Worksheet)myExcelApp.Worksheets[sheetNum];
myWorkSheet.Activate();
}
/// <summary>
/// 删除Sheet
/// </summary>
public void DeleteSheet()
{
myExcelApp.DisplayAlerts = false;
myWorkSheet.Delete();
}
/// <summary>
/// 删除一个工作表
/// </summary>
/// <param name="SheetName">删除的工作表名</param>
public void DeleteSheet(int sheetNum)
{
((Microsoft.Office.Interop.Excel.Worksheet)myWorkBook.Worksheets[sheetNum]).Delete();
}
/// <summary>
/// 删除一个工作表
/// </summary>
/// <param name="SheetName">删除的工作表序号</param>
public void DeleteSheet(string sheetName)
{
((Microsoft.Office.Interop.Excel.Worksheet)myWorkBook.Worksheets[sheetName]).Delete();
}
/// <summary>
/// 重命名工作表
/// </summary>
/// <param name="newSheetName">新的工作表名</param>
public void ReNameSheet(string newSheetName)
{
myWorkSheet.Name = newSheetName;
}
/// <summary>
/// 重命名工作表
/// </summary>
/// <param name="oldSheetName">原有工作表名</param>
/// <param name="newSheetName">新的工作表名</param>
public void ReNameSheet(string oldSheetName, string newSheetName)
{
Microsoft.Office.Interop.Excel.Worksheet worksheet = (Microsoft.Office.Interop.Excel.Worksheet)myExcelApp.Worksheets[oldSheetName];
worksheet.Name = newSheetName;
}
/// <summary>
/// 新建工作表
/// </summary>
/// <param name="sheetName">工作表名</param>
public void CreateWorkSheet(string sheetName, object before = null, object after = null, object count = null, object type = null)
{
Microsoft.Office.Interop.Excel.Worksheet newWorksheet = (Microsoft.Office.Interop.Excel.Worksheet)myWorkBook.Worksheets.Add(before == null ? Type.Missing : before, after == null ? Type.Missing : before, count == null ? Type.Missing : before, type == null ? Type.Missing
C#对excel 的操作
于 2019-01-10 09:31:17 首次发布

最低0.47元/天 解锁文章
1277

被折叠的 条评论
为什么被折叠?



