




已阅读5页,还剩45页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
对前面的三十三个Excel操作总结1 C#操作Excel(一)头部分2 将一个已有Excel工作簿作为模板,并指定输出路径3 打开一个已有的工作簿4 新建一个工作簿5 将DataTable数据写入Excel文件(自动分页)6 将DataTable数据写入Excel文件(不分页)7 数据写入Excel文件自动分页,并指定要合并的列索引8 MergeRows将指定索引列的数据相同的行合并9 改变当前工作表,隐藏指定的工作表10 改变当前工作表,隐藏指定的工作表11 指定名称的工作表后面拷贝N个该工作表的副本12 将一个工作表拷贝到另一个工作表后面13 根据名称或索引删除工作表14 向指定文本框写入数据,对每个WorkSheet操作15 向单元格写入数据,对当前WorkSheet操作16 设置单元格为可计算的17 合并单元格,并赋值18 将指定索引列的数据相同的行合并19 插行20 复制行21 插列22 复制列23 IntToLetter将Excel列的整数索引值转换为字符索引值24 删除列25 将指定范围区域拷贝到目标区域26 自动填充27 删除行28 应用样式29 将Excel列的字母索引值转换成整数索引值 (30 输出指定格式的文件(支持格式:HTML,CSV,TEXT,EXCEL)31 保存,将Excel文件另存为指定格式32 计算WorkSheet数量33 结束Excel进程将一个已有Excel工作簿作为模板,并指定输出路径#region 公共方法#region ExcelHelper/ / 构造函数,将一个已有Excel工作簿作为模板,并指定输出路径/ / Excel模板文件路径/ 输出Excel文件路径public ExcelHelper(string templetFilePath,string outputFilePath)if(templetFilePath = null)throw new Exception(Excel模板文件路径不能为空!);if(outputFilePath = null)throw new Exception(输出Excel文件路径不能为空!);if(!File.Exists(templetFilePath)throw new Exception(指定路径的Excel模板文件不存在!);this.templetFile = templetFilePath;this.outputFile = outputFilePath;/创建一个Application对象并使其可见beforeTime = DateTime.Now;app = new Excel.ApplicationClass();app.Visible = true;afterTime = DateTime.Now;/打开模板文件,得到WorkBook对象workBook = app.Workbooks.Open(templetFile,missing,missing,missing,missing,missing,missing,missing,missing,missing,missing,missing,missing);/得到WorkSheet对象workSheet = (Excel.Worksheet)workBook.Sheets.get_Item(1);打开一个已有的工作簿 (2008-04-24 10:17:08) / / 构造函数,打开一个已有的工作簿/ / Excel文件名public ExcelHelper(string fileName)if(!File.Exists(fileName)throw new Exception(指定路径的Excel文件不存在!);/创建一个Application对象并使其可见beforeTime = DateTime.Now;app = new Excel.ApplicationClass();app.Visible = true;afterTime = DateTime.Now;/打开一个WorkBookworkBook = app.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);/得到WorkSheet对象workSheet = (Excel.Worksheet)workBook.Sheets.get_Item(1);新建一个工作簿/ / 构造函数,新建一个工作簿/ public ExcelHelper()/创建一个Application对象并使其可见beforeTime = DateTime.Now;app = new Excel.ApplicationClass();app.Visible = true;afterTime = DateTime.Now;/新建一个WorkBookworkBook = app.Workbooks.Add(Type.Missing);/得到WorkSheet对象workSheet = (Excel.Worksheet)workBook.Sheets.get_Item(1);#endregion将DataTable数据写入Excel文件(自动分页)#region Data Export Methods/ / 将DataTable数据写入Excel文件(自动分页)/ / DataTable/ 每个WorkSheet写入多少行数据/ 表格数据起始行索引/ 表格数据起始列索引public void DataTableToExcel(DataTable dt,int rows,int top,int left)int rowCount = dt.Rows.Count;/DataTable行数int colCount = dt.Columns.Count;/DataTable列数sheetCount = this.GetSheetCount(rowCount,rows);/WorkSheet个数/StringBuilder sb;/复制sheetCount-1个WorkSheet对象for(int i=1;isheetCount;i+)workSheet = (Excel.Worksheet)workBook.Worksheets.get_Item(i);workSheet.Copy(missing,workBook.Worksheetsi);for(int i=1;i=sheetCount;i+)int startRow = (i - 1) * rows;/记录起始行索引int endRow = i * rows;/记录结束行索引/若是最后一个WorkSheet,那么记录结束行索引为源DataTable行数if(i = sheetCount)endRow = rowCount;/获取要写入数据的WorkSheet对象,并重命名workSheet = (Excel.Worksheet)workBook.Worksheets.get_Item(i);workSheet.Name = sheetPrefixName + - + i.ToString();/将dt中的数据写入WorkSheet/for(int j=0;jendRow-startRow;j+)/for(int k=0;kcolCount;k+)/workSheet.Cellstop + j,left + k = dt.RowsstartRow + jk.ToString();/利用二维数组批量写入int row = endRow-startRow;string, ss = new stringrow,colCount;for(int j=0;jrow;j+)for(int k=0;kcolCount;k+)ssj,k = dt.RowsstartRow + jk.ToString();range = (Excel.Range)workSheet.Cellstop,left;range = range.get_Resize(row,colCount);range.Value = ss;#region 利用Windwo粘贴板批量拷贝数据(在Web下面行不通)#endregion将DataTable数据写入Excel文件(不分页)/ / 将DataTable数据写入Excel文件(不分页)/ / DataTable/ 表格数据起始行索引/ 表格数据起始列索引public void DataTableToExcel(DataTable dt,int top,int left)int rowCount = dt.Rows.Count;/DataTable行数int colCount = dt.Columns.Count;/DataTable列数/利用二维数组批量写入string, arr = new stringrowCount,colCount;for(int j=0;jrowCount;j+)for(int k=0;kcolCount;k+)arrj,k = dt.Rowsjk.ToString();range = (Excel.Range)workSheet.Cellstop,left;range = range.get_Resize(rowCount,colCount);range.Value = arr;数据写入Excel文件自动分页,并指定要合并的列索引/ / 将DataTable数据写入Excel文件(自动分页,并指定要合并的列索引)/ / DataTable/ 每个WorkSheet写入多少行数据/ 表格数据起始行索引/ 表格数据起始列索引/ DataTable中要合并相同行的列索引,从0开始public void DataTableToExcel(DataTable dt,int rows,int top,int left,int mergeColumnIndex)int rowCount = dt.Rows.Count;/源DataTable行数int colCount = dt.Columns.Count;/源DataTable列数sheetCount = this.GetSheetCount(rowCount,rows);/WorkSheet个数/StringBuilder sb;/复制sheetCount-1个WorkSheet对象for(int i=1;isheetCount;i+)workSheet = (Excel.Worksheet)workBook.Worksheets.get_Item(i);workSheet.Copy(missing,workBook.Worksheetsi);for(int i=1;i=sheetCount;i+)int startRow = (i - 1) * rows;/记录起始行索引int endRow = i * rows;/记录结束行索引/若是最后一个WorkSheet,那么记录结束行索引为源DataTable行数if(i = sheetCount)endRow = rowCount;/获取要写入数据的WorkSheet对象,并重命名workSheet = (Excel.Worksheet)workBook.Worksheets.get_Item(i);workSheet.Name = sheetPrefixName + - + i.ToString();/将dt中的数据写入WorkSheet/for(int j=0;jendRow-startRow;j+)/for(int k=0;kcolCount;k+)/workSheet.Cellstop + j,left + k = dt.RowsstartRow + jk.ToString();/利用二维数组批量写入int row = endRow-startRow;string, ss = new stringrow,colCount;for(int j=0;jrow;j+)for(int k=0;kcolCount;k+)ssj,k = dt.RowsstartRow + jk.ToString();range = (Excel.Range)workSheet.Cellstop,left;range = range.get_Resize(row,colCount);range.Value = ss;/合并相同行this.MergeRows(workSheet,left+mergeColumnIndex,top,rows);MergeRows将指定索引列的数据相同的行合并/ / 将指定索引列的数据相同的行合并,对指定WorkSheet操作/ / 要合并的列索引/ 合并开始行索引/ 要合并的行数private void MergeRows(Excel.Worksheet sheet,int columnIndex,int beginRowIndex,int rows)int beginIndex = beginRowIndex;int count = 0;string text1;string text2;if(sheet = null)return;for(int j=beginRowIndex;j 0)this.MergeCells(sheet,beginIndex,columnIndex,beginIndex+count,columnIndex,text1);beginIndex = j + 1;/设置开始合并行索引count = 0;/计数器清0改变当前工作表,隐藏指定的工作表/ / 改变当前工作表/ / 工作表索引public void ChangeCurrentWorkSheet(int sheetIndex)/若指定工作表索引超出范围,则不改变当前工作表if(sheetIndex this.WorkSheetCount)return;this.workSheet = (Excel.Worksheet)this.workBook.Sheets.get_Item(sheetIndex);/ / 隐藏指定名称的工作表/ / 工作表名称public void HiddenWorkSheet(string sheetName)tryExcel.Worksheet sheet = null;for(int i=1;i=this.WorkSheetCount;i+)workSheet = (Excel.Worksheet)workBook.Sheets.get_Item(i);if(workSheet.Name = sheetName)sheet = workSheet;if(sheet != null)sheet.Visible = Excel.XlSheetVisibility.xlSheetHidden;elsethis.KillExcelProcess();throw new Exception(名称为 + sheetName + 的工作表不存在);catch(Exception e)this.KillExcelProcess();throw e;/ / 隐藏指定索引的工作表/ / public void HiddenWorkSheet(int sheetIndex)if(sheetIndex this.WorkSheetCount)this.KillExcelProcess();throw new Exception(索引超出范围,WorkSheet索引不能大于WorkSheet数量!);tryExcel.Worksheet sheet = null;sheet = (Excel.Worksheet)workBook.Sheets.get_Item(sheetIndex);sheet.Visible = Excel.XlSheetVisibility.xlSheetHidden;catch(Exception e)this.KillExcelProcess();throw e;/ / 改变当前工作表/ / 工作表索引public void ChangeCurrentWorkSheet(int sheetIndex)/若指定工作表索引超出范围,则不改变当前工作表if(sheetIndex this.WorkSheetCount)return;this.workSheet = (Excel.Worksheet)this.workBook.Sheets.get_Item(sheetIndex);/ / 隐藏指定名称的工作表/ / 工作表名称public void HiddenWorkSheet(string sheetName)tryExcel.Worksheet sheet = null;for(int i=1;i=this.WorkSheetCount;i+)workSheet = (Excel.Worksheet)workBook.Sheets.get_Item(i);if(workSheet.Name = sheetName)sheet = workSheet;if(sheet != null)sheet.Visible = Excel.XlSheetVisibility.xlSheetHidden;elsethis.KillExcelProcess();throw new Exception(名称为 + sheetName + 的工作表不存在);catch(Exception e)this.KillExcelProcess();throw e;/ / 隐藏指定索引的工作表/ / public void HiddenWorkSheet(int sheetIndex)if(sheetIndex this.WorkSheetCount)this.KillExcelProcess();throw new Exception(索引超出范围,WorkSheet索引不能大于WorkSheet数量!);tryExcel.Worksheet sheet = null;sheet = (Excel.Worksheet)workBook.Sheets.get_Item(sheetIndex);sheet.Visible = Excel.XlSheetVisibility.xlSheetHidden;catch(Exception e)this.KillExcelProcess();throw e;指定名称的工作表后面拷贝N个该工作表的副本/ / 在指定名称的工作表后面拷贝指定个数的该工作表的副本,并重命名/ / 工作表名称/ 工作表个数public void CopyWorkSheets(string sheetName,int sheetCount)tryExcel.Worksheet sheet = null;int sheetIndex = 0;for(int i=1;i=1;i-)sheet.Copy(this.missing,sheet);/重命名for(int i=sheetIndex;i=sheetIndex+sheetCount;i+)workSheet = (Excel.Worksheet)workBook.Sheets.get_Item(i);workSheet.Name = sheetName + - + Convert.ToString(i - sheetIndex + 1);elsethis.KillExcelProcess();throw new Exception(名称为 + sheetName + 的工作表不存在);catch(Exception e)this.KillExcelProcess();throw e;将一个工作表拷贝到另一个工作表后面/ / 将一个工作表拷贝到另一个工作表后面,并重命名/ / 拷贝源工作表索引/ 参照位置工作表索引,新工作表拷贝在该工作表后面/ public void CopyWorkSheet(int srcSheetIndex,int aimSheetIndex,string newSheetName)if(srcSheetIndex this.WorkSheetCount | aimSheetIndex this.WorkSheetCount)this.KillExcelProcess();throw new Exception(索引超出范围,WorkSheet索引不能大于WorkSheet数量!);tryExcel.Worksheet srcSheet = (Excel.Worksheet)workBook.Sheets.get_Item(srcSheetIndex);Excel.Worksheet aimSheet = (Excel.Worksheet)workBook.Sheets.get_Item(aimSheetIndex);srcSheet.Copy(this.missing,aimSheet);/重命名workSheet = (Excel.Worksheet)aimSheet.Next;/获取新拷贝的工作表workSheet.Name = newSheetName;catch(Exception e)this.KillExcelProcess();throw e;根据名称或索引删除工作表/ / 根据名称删除工作表/ / public void DeleteWorkSheet(string sheetName)tryExcel.Worksheet sheet = null;/找到名称位sheetName的工作表for(int i=1;i=this.WorkSheetCount;i+)workSheet = (Excel.Worksheet)workBook.Sheets.get_Item(i);if(workSheet.Name = sheetName)sheet = workSheet;if(sheet != null)sheet.Delete();elsethis.KillExcelProcess();throw new Exception(名称为 + sheetName + 的工作表不存在);catch(Exception e)this.KillExcelProcess();throw e;/ / 根据索引删除工作表/ / public void DeleteWorkSheet(int sheetIndex)if(sheetIndex this.WorkSheetCount)this.KillExcelProcess();throw new Exception(索引超出范围,WorkSheet索引不能大于WorkSheet数量!);tryExcel.Worksheet sheet = null;sheet = (Excel.Worksheet)workBook.Sheets.get_Item(sheetIndex);sheet.Delete();catch(Exception e)this.KillExcelProcess();throw e;向指定文本框写入数据,对每个WorkSheet操作/ / 向指定文本框写入数据,对每个WorkSheet操作/ / 文本框名称/ 要写入的文本public void SetTextBox(string textboxName,string text)for(int i=1;i=this.WorkSheetCount;i+)workSheet = (Excel.Worksheet)workBook.Worksheets.get_Item(i);trytextBox = (Excel.TextBox)workSheet.TextBoxes(textboxName);textBox.Text = text;catchthis.KillExcelProcess();throw new Exception(不存在ID为 + textboxName + 的文本框!);/ / 向指定文本框写入数据,对指定WorkSheet操作/ / 工作表索引/ 文本框名称/ 要写入的文本public void SetTextBox(int sheetIndex,string textboxName,string text)workSheet = (Excel.Worksheet)workBook.Worksheets.get_Item(sheetIndex);trytextBox = (Excel.TextBox)workSheet.TextBoxes(textboxName);textBox.Text = text;catchthis.KillExcelProcess();throw new Exception(不存在ID为 + textboxName + 的文本框!);/ / 向文本框写入数据,对每个WorkSheet操作/ / Hashtable的键值对保存文本框的ID和数据public void SetTextBoxes(Hashtable ht)if(ht.Count = 0) return;for(int i=1;i=this.WorkSheetCount;i+)workSheet = (Excel.Worksheet)workBook.Worksheets.get_Item(i);foreach(DictionaryEntry dic in ht)trytextBox = (Excel.TextBox)workSheet.TextBoxes(dic.Key);textBox.Text = dic.Value.ToString();catchthis.KillExcelProcess();throw new Exception(不存在ID为 + dic.Key.ToString() + 的文本框!);/ / 向文本框写入数据,对指定WorkSheet操作/ / Hashtable的键值对保存文本框的ID和数据public void SetTextBoxes(int sheetIndex,Hashtable ht)if(ht.Count = 0) return;if(sheetIndex this.WorkSheetCount)this.KillExcelProcess();throw new Exception(索引超出范围,WorkSheet索引不能大于WorkSheet数量!);workSheet = (Excel.Worksheet)workBook.Worksheets.get_Item(sheetIndex);foreach(DictionaryEntry dic in ht)trytextBox = (Excel.TextBox)workSheet.TextBoxes(dic.Key);textBox.Text = dic.Value.ToString();catchthis.KillExcelProcess();throw new Exception(不存在ID为 + dic.Key.ToString() + 的文本框!);向单元格写入数据,对当前WorkSheet操作/ / 向单元格写入数据,对当前WorkSheet操作/ / 行索引/ 列索引/ 要写入的文本值public void SetCells(int rowIndex,int columnIndex,string text)tryworkSheet.CellsrowIndex,columnIndex = text;catchthis.
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年商业地产项目股权收购与商业品牌入驻协议
- 2025版事业单位人员国际学术访问与交流经费保障合同
- 2025年度注塑车间设备更新改造承包合同
- 2025版土地租赁合同范本:网络安全培训项目合作协议
- 2025年度土石方施工劳务分包及合同终止条件合同
- 2025版环保材质墙纸墙布安装及维修服务合同
- 2025版能源项目汽车吊车租赁服务合同版
- 2025版新能源电动汽车充电设施建设与运营协议
- 2025产品价格保密协议(含技术秘密保护)
- 2025年互联网平台法律顾问服务合同-用户权益保护
- 工业管道的定期检查与维护措施
- 林业发展“十五五”发展规划
- 过氧化氢低温等离子灭菌器规范
- 2024年四川公安厅招聘警务辅助人员笔试真题
- 彩钢顶翻新施工方案
- 2022标准化数据中心机房建设项目设计方案
- 预防青少年药物滥用-主题班会课件
- 建筑工程八大员岗位职责
- 消防工程全套报验资料
- 建筑模型手工课件
- 创客空间运营方案
评论
0/150
提交评论