C#操作文件夹和EXCEl表要点.docx

上传人:b****5 文档编号:6695731 上传时间:2023-01-09 格式:DOCX 页数:24 大小:23.23KB
下载 相关 举报
C#操作文件夹和EXCEl表要点.docx_第1页
第1页 / 共24页
C#操作文件夹和EXCEl表要点.docx_第2页
第2页 / 共24页
C#操作文件夹和EXCEl表要点.docx_第3页
第3页 / 共24页
C#操作文件夹和EXCEl表要点.docx_第4页
第4页 / 共24页
C#操作文件夹和EXCEl表要点.docx_第5页
第5页 / 共24页
点击查看更多>>
下载资源
资源描述

C#操作文件夹和EXCEl表要点.docx

《C#操作文件夹和EXCEl表要点.docx》由会员分享,可在线阅读,更多相关《C#操作文件夹和EXCEl表要点.docx(24页珍藏版)》请在冰豆网上搜索。

C#操作文件夹和EXCEl表要点.docx

C#操作文件夹和EXCEl表要点

C#操作Excel总结

0. 导入命名空间:

 

1

2

3

4

using Microsoft.Office.Core;

using Microsoft.Office.Interop.Excel;

using System.IO;

using System.Reflection;

 

1. 如何打开已有excel文档,或者创建一个新的excel文档 

 

1

2

3

Applicationapp=new Application();

Workbookswbks=app.Workbooks;

_Workbook_wbk=wbks.Add(xxx);

 

 

若打开已有excel,把“xxx”替换成该excel的文件路径;

注:

若新建一个excel文档,“xxx”替换成true即可;不过这里新建的excel文档默认只有一个sheet。

  

2. 取得、删除和添加sheet

 

1

Sheetsshs=_wbk.Sheets;

 

 

2.1取得:

 

1

2

//i是要取得的sheet的index

_Worksheet_wsh=(_Worksheet)shs.get_Item(i)

 

 

2.2删除:

1

2

3

//删除sheet必须的设置

app.DisplayAlerts=false;

_wsh.Delete();

2.3添加:

1

2

//a(before),b(after):

确定添加位置;c:

数目;d:

类型

app.Worksheets.Add(a,b,c,d);

2.4sheet的重命名

1

_wsh.Name="xxx";

 

3. 删除行和列 

3.1删除行:

1

((Range)_wsh.Rows[3,Missing.Value]).Delete(XlDeleteShiftDirection.xlShiftUp);

3.2删除列:

1

2

3

4

_wsh.get_Range(

_wsh.Cells[1,2],

_wsh.Cells[_wsh.Rows.Count,2]).Delete(XlDeleteShiftDirection.xlShiftToLeft

);

 

4. 添加行和列 

4.1添加行:

1

2

((Range)_wsh.Rows[11,Missing.Value])

.Insert(Missing.Value,XlInsertFormatOrigin.xlFormatFromLeftOrAbove);

4.2添加列:

1

2

3

_wsh.get_Range(

_wsh.Cells[1,1],_wsh.Cells[_wsh.Rows.Count,1])

.Insert(Missing.Value,XlInsertShiftDirection.xlShiftToRight);

 

5. 单元格操作 

5.1单元格的取得

1

2

//获得单元格对象

_wsh.Cells[row,cell]

5.2设置公式

1

2

//在对应的单元格输入公式即可

_wsh.Cells[row,cell]="=Sum(A1/B1)";

5.3合并单元格

1

((Range)_wsh.Rows[1,Missing.Value]).Merge(Missing.Value);

5.4设置行高和列宽

1

2

((Range)_wsh.Rows[3,Missing.Value]).RowHeight=5;

((Range)_wsh.Rows[3,Missing.Value]).ColumnWidth=5;

5.5设置单元格颜色颜色共有56中,详情请参照附录的[颜色对照表]

1

((Range)_wsh.Rows[1,Missing.Value]).Interior.ColorIndex=3;

5.6设置字号

1

((Range)_wsh.Cells[1,"B"]).Font.Size=8;

5.7是否设置粗体

1

((Range)_wsh.Rows[1,Missing.Value]).Font.Bold=false;

5.8单元格/区域、水平垂直居中

1

((Range)_wsh.Cells[2,1]).HorizontalAlignment=XlVAlign.xlVAlignCenter;

5.9设置区域边框

1

((Range)_wsh.Cells[3,3]).Borders.LineStyle=3;

5.10设置边框的上、下、左、右线条

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

//左

_wsh.get_Range(

_wsh.Cells[2,1],_wsh.Cells[2,2])

.Borders[XlBordersIndex.xlEdgeLeft].Weight=XlBorderWeight.xlThick;//

 

//右

_wsh.get_Range(

_wsh.Cells[2,1],_wsh.Cells[2,2])

.Borders[XlBordersIndex.xlEdgeRight].Weight=XlBorderWeight.xlThick;//

 

//上

_wsh.get_Range(

_wsh.Cells[2,1],_wsh.Cells[2,2])

.Borders[XlBordersIndex.xlEdgeTop].Weight=XlBorderWeight.xlThick;//下

 

//下

_wsh.get_Range(

_wsh.Cells[2,1],_wsh.Cells[2,2])

.Borders[XlBordersIndex.xlEdgeBottom].Weight=XlBorderWeight.xlThick;

6. 指定区域的复制 

1

2

3

4

5

6

7

8

9

10

11

12

13

14

_Worksheet_wsh=(_Worksheet)shs.get_Item

(1);//复制选中区域的内容

 

Rangerange=_wsh.get_Range(_wsh.Cells[7,1],_wsh.Cells[10,_wsh.Columns.Count]);

 

range.Select();

range.Copy(Type.Missing);

 

//选中粘贴的起始位置

Rangetest=((Range)_wsh.Cells[11,1]);

test.Select();

 

//屏蔽掉Alert,默认确定粘贴

app.DisplayAlerts=false;

test.Parse(Missing.Value,Missing.Value);

 

注:

Type.Missing和Missing.Value,在excel的操作中被视为某些参数的默认值,他们起到的作用很多时候是形式补足参数

 

7. excel文件的保存,及后续处理 

7.1文件保存

1

2

3

4

5

//屏蔽掉系统跳出的Alert

app.AlertBeforeOverwriting=false;

 

//保存到指定目录

SaveAs(filePath,Missing.Value,Missing.Value,Missing.Value,Missing.Value,Missing.Value,Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlNoChange,Missing.Value,Missing.Value,Missing.Value,Missing.Value,Missing.Value);

注:

这个地方只能采用该方法保存,不然在指定路径下保存文件外,在我的文档中也会生成一个对应的副本

7.2后续处理:

退出和释放

1

2

3

4

5

6

7

//_wbk.Close(null,null,null);

//wbks.Close();

app.Quit();

 

//释放掉多余的excel进程

System.Runtime.InteropServices.Marshal.ReleaseComObject(app);

app=null;

说明:

在application关闭的过程中,通常我们有两种方案:

#直接退出app

#先关闭workbook,然后关闭workbooks,最后在退出app

鉴于这两种方式,或许本质上是一样的(这点需要证明),但是依据我们软件开发的原则:

哪里需要哪里声明,哪里结束哪里释放回收。

既然在直接退出app的时候,我们不清楚workbook和workbooks具体在什么时间关闭,不如在结束的时候直接手动关闭,这样做可以做到资源的快速直接回收;

所以,建议采用先关闭workbook,然后关闭workbooks,最后在退出app。

 

8. 关于单元格设置域和取得域里需要的数据 

8.1若单元格已经设置为下拉框

1

2

3

//这里的“1,2,3”设置的就是下拉框的值

((Range)_wsh.Cells[2,1])

.Validation.Modify(XlDVType.xlValidateList,XlDVAlertStyle.xlValidAlertStop,Type.Missing,"1,2,3",Type.Missing);

8.2若单元格还没有设置为下拉框的形式

1

2

((Range)_wsh.Cells[2,1])

.Validation.Add(XlDVType.xlValidateList,XlDVAlertStyle.xlValidAlertStop,Type.Missing,"1,2,3",Type.Missing);

8.3取得下拉框域的值

1

string strValue=((Range)_wsh.Cells[2,1]).Validation.Formula1;

注:

若在excel模板中通过有效性设定了下拉框的值,strValue得到的将会是excel里的公式,需将其转换,取得strValue后,可以根据其索引得到你需要的数值;

 

9. 隐藏行和隐藏列 

9.1隐藏行

1

_wsh.get_Range(_wsh.Cells[19,1],_wsh.Cells[22,1]).EntireRow.Hidden=true;

9.2隐藏列

1

2

_wsh.get_Range(_wsh.Cells[1,1],_wsh.Cells[_wsh.Rows.Count,1])

.EntireColumn.Hidden=true;

c#中与文件文件夹相关操作

2009-05-1510:

03

privateconststringFILE_NAME="ErroLog.txt";

publicstaticvoidWriteFile(stringstr)

...{

StreamWritersr;

if(File.Exists(FILE_NAME))//如果文件存在,则创建File.AppendText对象

...{

sr=File.AppendText(FILE_NAME);

}

else//如果文件不存在,则创建File.CreateText对象...{

sr=File.CreateText(FILE_NAME);

}

sr.WriteLine(str);

sr.Close();

}

追加文件

StreamWritersw=File.AppendText(Server.MapPath(".")+"\\myText.txt");sw.WriteLine("追逐理想");

sw.WriteLine("kzlll");

sw.WriteLine(".NET笔记");

sw.Flush();

sw.Close();

拷贝文件

stringOrignFile,NewFile;

OrignFile=Server.MapPath(".")+"\\myText.txt";

NewFile=Server.MapPath(".")+"\\myTextCopy.txt";

File.Copy(OrignFile,NewFile,true);

删除文件

stringdelFile=Server.MapPath(".")+"\\myTextCopy.txt";

File.Delete(delFile);

移动文件

stringOrignFile,NewFile;

OrignFile=Server.MapPath(".")+"\\myText.txt";

NewFile=Server.MapPath(".")+"\\myTextCopy.txt";

File.Move(OrignFile,NewFile);

创建目录

//创建目录c:

\sixAge

DirectoryInfod=Directory.CreateDirectory("c:

\\sixAge");

//d1指向c:

\sixAge\sixAge1

DirectoryInfod1=d.CreateSubdirectory("sixAge1");

//d2指向c:

\sixAge\sixAge1\sixAge1_1

DirectoryInfod2=d1.CreateSubdirectory("sixAge1_1");

//将当前目录设为c:

\sixAge

Directory.SetCurrentDirectory("c:

\\sixAge");

//创建目录c:

\sixAge\sixAge2

Directory.CreateDirectory("sixAge2");

//创建目录c:

\sixAge\sixAge2\sixAge2_1

Directory.CreateDirectory("sixAge2\\sixAge2_1");

递归删除文件夹及文件

<%@PageLanguage=%>

<%@Importnamespace="System.IO"%>

publicvoidDeleteFolder(stringdir)

{

if(Directory.Exists(dir))//如果存在这个文件夹删除之

{

foreach(stringdinDirectory.GetFileSystemEntries(dir)){

if(File.Exists(d))

File.Delete(d);//直接删除其中的文件

else

DeleteFolder(d);//递归删除子文件夹

}

Directory.Delete(dir);//删除已空文件夹

Response.Write(dir+"文件夹删除成功");

}

else

Response.Write(dir+"该文件夹不存在");//如果文件夹不存在则提示

}

protectedvoidPage_Load(Objectsender,EventArgse)

{

stringDir="D:

\\gbook\\11";

DeleteFolder(Dir);//调用函数删除文件夹

}

//======================================================

//实现一个静态方法将指定文件夹下面的所有内容copy到目标文件夹下面//如果目标文件夹为只读属性就会报错。

//April18April2005InSTU

//======================================================

publicstaticvoidCopyDir(stringsrcPath,stringaimPath)

{

try

{

//检查目标目录是否以目录分割字符结束如果不是则添加之

if(aimPath[aimPath.Length-1]!

=Path.DirectorySeparatorChar)aimPath+=Path.DirectorySeparatorChar;

//判断目标目录是否存在如果不存在则新建之

if(!

Directory.Exists(aimPath))

Directory.CreateDirectory(aimPath);

//得到源目录的文件列表,该里面是包含文件以及目录路径的一个数组//如果你指向copy目标文件下面的文件而不包含目录请使用下面的方法//string[]fileList=Directory.GetFiles(srcPath);

string[]fileList=Directory.GetFileSystemEntries(srcPath);//遍历所有的文件和目录

foreach(stringfileinfileList)

{

//先当作目录处理如果存在这个目录就递归Copy该目录下面的文件if(Directory.Exists(file))

CopyDir(file,aimPath+Path.GetFileName(file));

//否则直接Copy文件

else

File.Copy(file,aimPath+Path.GetFileName(file),true);

}

}

catch(Exceptione)

{

MessageBox.Show(e.ToString());

}

}

//======================================================

//实现一个静态方法将指定文件夹下面的所有内容Detele

//测试的时候要小心操作,删除之后无法恢复。

//April18April2005InSTU

//======================================================

publicstaticvoidDeleteDir(stringaimPath)

{

try

{

//检查目标目录是否以目录分割字符结束如果不是则添加之

if(aimPath[aimPath.Length-1]!

=Path.DirectorySeparatorChar)aimPath+=Path.DirectorySeparatorChar;

//得到源目录的文件列表,该里面是包含文件以及目录路径的一个数组//如果你指向Delete目标文件下面的文件而不包含目录请使用下面的方法

//string[]fileList=Directory.GetFiles(aimPath);

string[]fileList=Directory.GetFileSystemEntries(aimPath);//遍历所有的文件和目录

foreach(stringfileinfileList)

{

//先当作目录处理如果存在这个目录就递归Delete该目录下面的文件if(Directory.Exists(file))

{

DeleteDir(aimPath+Path.GetFileName(file));

}

//否则直接Delete文件

else

{

File.Delete(aimPath+Path.GetFileName(file));

}

}

//删除文件夹

System.IO.Directory.Delete(aimPath,true);

}

catch(Exceptione)

{

MessageBox.Show(e.ToString());

}

}

需要引用命名空间:

usingSystem.IO;

/**////

///拷贝文件夹(包括子文件夹)到指定文件夹下,源文件夹和目标文件夹均需绝对路径.格式:

CopyFolder(源文件夹,目标文件夹);

///

///

///

//--------------------------------------------------

//作者:

明天去要饭QQ:

305725744

//---------------------------------------------------

publicstaticvoidCopyFolder(stringstrFromPath,stringstrToPath){

//如果源文件夹不存在,则创建

if(!

Directory.Exists(strFromPath))

{

Directory.CreateDirectory(strFromPath);

}

//取得要拷贝的文件夹名

stringstrFolderName=

strFromPath.Substring(strFromPath.LastIndexOf("\\")+

1,strFromPath.Length-strFromPath.LastIndexOf("\\")-1);

//如果目标文件夹中没有源文件夹则在目标文件夹中创建源文件夹if(!

Directory.Exists(strToPath+"\\"+strFolderName)){

Directory.CreateDirectory(strToPath+"\\"+strFolderName);}

//创建数组保存源文件夹下的文件名

string[]strFiles=Directory.GetFiles(strFromPath);

//循环拷贝文件

for(inti=0;i

{

//取得拷贝的文件名,只取文件名,地址截掉。

stringstrFileName=

strFiles[i].Substring(strFiles[i].LastIndexOf("\\")+

1,strFiles[i].Length-strFiles[i].LastIndexOf("\\")-1);//开始拷贝文件,true表示覆盖同名文件

File.Copy(

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 法律文书 > 调解书

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1