ExcelHelperWord文档下载推荐.docx
《ExcelHelperWord文档下载推荐.docx》由会员分享,可在线阅读,更多相关《ExcelHelperWord文档下载推荐.docx(30页珍藏版)》请在冰豆网上搜索。
![ExcelHelperWord文档下载推荐.docx](https://file1.bdocx.com/fileroot1/2023-1/31/07f6b9c5-3618-4213-b069-5c2657b8edcb/07f6b9c5-3618-4213-b069-5c2657b8edcb1.gif)
summary>
///日期:
2017-03-16
///作者:
zhengjf
///邮箱:
25035844@
///功能:
Excel文件操作
///用法:
///1.创建本类对象
///2.CreateNewExcel创建空白Excel文件;
///3.Open打开excel文件;
///GetRowCount获取指定表格的行数
///GetColumnCount获取指定表格的列数
///GetSheet把指定表格读取到datatable里
///GetSheets把所有表格读取到datatable列表里
///Read读取指定表格指定单元内容
///SetCellsBackColor设置单元格颜色
///SetRowBackColor设置某一行的内容
///Write写入内容到单元格/把1个datatable写入到单元格
///Close关闭已经打开的文件
///4.退出之前必须先调用Dispose
///注意事项:
各参数里的下标都是从0开始.函数内部会自动转换为Excel所需的1开始
/summary>
publicclassExcelHelper
{
#region属性
///当前是否已经打开文件
publicBooleanOpened
get;
privateset;
}
///文件的sheet名称列表
publicList<
String>
SheetsNameList
get
returnm_sheetnamelist;
privateset{}
///文件的所有sheet对象集合
publicMSExcel.SheetsSheets
returnm_sheets;
privateset{}
privateSystem.Globalization.CultureInfom_oldCI=System.Threading.Thread.CurrentThread.CurrentCulture;
#endregion
#region内部成员
privateStringm_FileName=String.Empty;
//整个Excel程序
privateMSExcel.ApplicationClassm_excelApp=null;
//一个文件
privateMSExcel.WorkbookClassm_file=null;
//工作表
privateMSExcel.Sheetsm_sheets=null;
///文件里的工作表名称列表
privateList<
m_sheetnamelist=null;
///设置sheet不能超过26列
publicconstInt32Const_Colcount=26;
#region内部函数
///执行打开文件的操作,不加异常保护
paramname="
filename"
>
<
/param>
returns>
/returns>
privateBooleanExecuteOpen(Stringfilename)
m_excelApp=newMSExcel.ApplicationClass();
m_excelApp.Visible=false;
m_excelApp.UserControl=false;
Opened=true;
m_file=(MSExcel.WorkbookClass)m_excelApp.Workbooks.Open(filename,Type.Missing,Type.Missing,
Type.Missing,Type.Missing,Type.Missing,Type.Missing,Type.Missing,Type.Missing,
Type.Missing,Type.Missing,Type.Missing,Type.Missing);
if(m_file==null)
Close();
returnfalse;
m_sheets=m_file.Worksheets;
if(m_sheets.Count<
1)
m_sheetnamelist=newList<
string>
();
foreach(MSExcel.Worksheetsheetinm_sheets)//m_file.Sheets)
m_sheetnamelist.Add(sheet.Name);
returntrue;
#region公开方法
publicExcelHelper()
///执行打开文件的操作,加异常保护
///打开失败则自动关闭
publicBooleanOpen(Stringfilename)
if(Opened)
if(m_FileName.Equals(filename))
Booleanbl=FileProcessor.FileExist(filename);
if(!
bl)
FileProcessor.SetFileReadOnly(filename,false);
m_FileName=filename;
m_oldCI=System.Threading.Thread.CurrentThread.CurrentCulture;
System.Threading.Thread.CurrentThread.CurrentCulture=newSystem.Globalization.CultureInfo("
en-US"
);
Stringmsg="
"
;
try
bl=ExecuteOpen(filename);
catch(Exceptionex)
//出错,先关闭excel,防止驻留在线程里
msg=ex.Message;
//如果有异常,抛出异常,以便界面知道
if(msg.Length>
0)
thrownewException(msg);
returnbl;
///关闭
publicBooleanClose()
//恢复原来的区域语言
System.Threading.Thread.CurrentThread.CurrentCulture=m_oldCI;
Opened)
m_FileName=String.Empty;
Opened=false;
objectsaved=true;
if(m_file!
=null)
m_file.Close(saved);
DebugHelper.Print(ex.Message);
if(m_excelApp!
m_excelApp.Workbooks.Close();
m_excelApp.Quit();
m_file=null;
m_excelApp=null;
//操作过Excel对象后,必须强制垃圾回收.否则无法退出Exccel进程
CommonCompute.GCCollect();
publicvoidDispose()
if(m_excelApp==null)
return;
///保存文件
publicBooleanSave()
m_file.Save();
catch(System.Exceptionex)
DebugHelper.Print("
Saveerror:
+ex.Message);
///获取指定序号的表格里,指定行列的信息
sheetidx"
表格,从0开始<
rowidx"
行,从0开始<
colidx"
列,从0开始<
publicBooleanRead(intsheetidx,introwidx,intcolidx,outStringvalue)
value=String.Empty;
if(sheetidx<
0||sheetidx>
=this.m_sheetnamelist.Count)
MSExcel.Worksheetsheet=(MSExcel.Worksheet)m_sheets[sheetidx+1];
value=((MSExcel.Range)sheet.Cells[rowidx+1,colidx+1]).Text.ToString();
//MSExcel.Rangerange=(MSExcel.Range)sheet.Cells[rowidx+1,colidx+1];
//value=range.Cells[1,1].ToString();
///获取指定名称的表格里,指定行列的信息
从0开始<
publicBooleanRead(Stringsheetname,introwidx,intcolidx,outStringvalue)
Int32sheetidx=m_sheetnamelist.IndexOf(sheetname);
if(sheetidx<
Booleanbl=Read(sheetidx,rowidx+1,colidx+1,outvalue);
///修改某个单元格的颜色
sheet"
color"
privateBooleanSetCellsBackColor(MSExcel.Worksheetsheet,Int32rowidx,
Int32colidx,Colorcolor)
if(colidx>
26)
Int32rownum=rowidx+1;
charcolchar=(char)('
A'
+colidx);
Stringcell=colchar+rownum.ToString();
MSExcel.Ranger=sheet.get_Range(cell,cell);
r.Interior.Color=System.Drawing.ColorTranslator.ToOle(color);
///设置行的颜色
startrowidx"
startcolidx"
endrowidx"
endcolidx"
publicBooleanSetRowBackColor(Int32sheetidx,introwidx,Colorcolor)
=m_sheets.Count)
}
if(rowidx<
0||rowidx>
=sheet.Rows.Count)
rowidx++;
Int32colcnt=GetColumnCount(sheetidx);
charstartcolchar='
charendcolchar=(char)('
+colcnt);
//最后一列
Stringstartcell=startcolchar+rowidx.ToString();
//AN,N为列序号.比如A3
Stringendcell=endcolchar+rowidx.ToString();
//MN,M为末尾列标题.比如G3
MSExcel.Ranger=sheet.get_Range(startcell,endcell);
///设置单元格的颜色
publicBooleanSetCellsBackColor(Int32sheetidx,intstartrowidx,intstartcolidx,intendrowidx,
intendcolidx,Colorcolor)
if(startcolidx>
=26||endcolidx>
=26)
if(startrowidx>
endrowidx)
if(m_sheetnamelist==null||m_sheetnamelist.Count<
1||
sheetidx<
=m_sheetnamelist.Count)
Int32strartrownum=startrowidx+1;
Int32endrownum=endrowidx+1;
charstartcolchar=(char)('
+startcolidx);
+endcolidx);
Stringstartcell=startcolchar+strartrownum.ToString();
Stringendcell=endcolchar+endrownum.ToString();
///设置指定表格内容
value"
publicBooleanWrite(Int32sheetidx,introwidx,intcolidx,Stringvalue)
//value=String.Empty;
=sheet.Cells.Rows.Count)
if(colidx<
0||colidx>
=sheet.Cells.Columns.Count)
sheet.Cells[rowidx+1,colidx+1]=value;
///设置指定表格内