您的位置:首页 > 编程语言 > C#

C#合并excel单元格,操作合并后的单元格 (winform导出excel)

2016-02-04 10:49 495 查看
我想合并excel单元格,但不光是行合并,或是列合并,而是其中既包含行合并又包含列合并(就是把列合并的单元格再行合并,反过来也是),比如我想把前三行合并成一个单元格怎么办?(前三行已经是列合并后的单元格啦)有高手么?指点一下~~

protected void AddExcel(DataSet ds)

{

DataTable dt = ds.Tables[0];

//获取excel的文件名称(Guid是一个全球表示,使excel的文件名不同)

string fileName = Guid.NewGuid() + ".xls";

//初始化excel对象

Excel.Application excel = new Excel.ApplicationClass();

//Excel.Application excel1 = new Excel.ApplicationClass();

//定义列

int rowIndex = 5;

//定义行

int colIndex = 0;

//开始添加

excel.Application.Workbooks.Add(true);

Excel.Range range = excel.get_Range(excel.Cells[1, 1], excel.Cells[2, 1]);

//Excel.Range range1 = excel.get_Range(excel.Cells[2, 1], excel.Cells[3, 1]);

//myrange.NumberFormatLocal = "asd";

Excel.Workbooks workbooks = excel.Workbooks;

Excel.Workbook workbook = workbooks.Add(Excel.XlWBATemplate.xlWBATWorksheet);

Excel.Worksheet worksheet = (Excel.Worksheet)workbook.Worksheets[1];

range.NumberFormatLocal = "@"; //设置单元格格式为文本

range = worksheet.get_Range("H4", "O4"); //获取Excel多个单元格区域:本例做为Excel表头

range.Merge(0); //单元格合并动作

Excel.Worksheet workSheet = (Excel.Worksheet)workbook.Worksheets[1];

Excel.Range excelRange = workSheet.get_Range(workSheet.Cells[4, 1],workSheet.Cells[5, 1]);

Excel.Range excelRange1 = workSheet.get_Range(workSheet.Cells[4, 2], workSheet.Cells[5, 2]);

Excel.Range excelRange2 = workSheet.get_Range(workSheet.Cells[4, 3], workSheet.Cells[5, 3]);

Excel.Range excelRange3 = workSheet.get_Range(workSheet.Cells[4, 4], workSheet.Cells[5, 4]);

Excel.Range excelRange4 = workSheet.get_Range(workSheet.Cells[4, 5], workSheet.Cells[5, 5]);

Excel.Range excelRange6 = workSheet.get_Range(workSheet.Cells[4, 6], workSheet.Cells[5, 6]);

Excel.Range excelRange5 = workSheet.get_Range(workSheet.Cells[4, 7], workSheet.Cells[5, 7]);

excelRange.Merge(excelRange.MergeCells);

excelRange1.Merge(excelRange1.MergeCells);

excelRange2.Merge(excelRange2.MergeCells);

excelRange3.Merge(excelRange3.MergeCells);

excelRange4.Merge(excelRange4.MergeCells);

excelRange5.Merge(excelRange5.MergeCells);

excelRange6.Merge(excelRange6.MergeCells);

workSheet.get_Range("A1", "S1").Merge(workSheet.get_Range("A1", "O1").MergeCells);

workSheet.get_Range("A2", "S2").Merge(workSheet.get_Range("A2", "O2").MergeCells);

workSheet.get_Range("A3", "S3").Merge(workSheet.get_Range("A3", "O3").MergeCells);

worksheet.Cells[2, 1] = "2010年第二季度产品质量定期监督检查动态监管档案表"; //Excel单元格赋值

worksheet.Cells[4, 1] = "序号";

worksheet.Cells[4, 2] = "产品分类";

worksheet.Cells[4, 3] = "企业名称";

worksheet.Cells[4, 4] = "详细地址及邮政编码";

worksheet.Cells[4, 5] = "企业负责人及联系电话";

workSheet.Cells[4, 6] = "企业规模许可证书编号";

workSheet.Cells[4, 7] = "生产状态及年产量";

workSheet.Cells[4, 8] = "第二季度";

workSheet.Cells[5, 8] = "抽检日期";

workSheet.Cells[5, 9] = "承检机构";

workSheet.Cells[5, 10] = "抽检样品名称及规格";

workSheet.Cells[5, 11] = "产品生产日期批号";

workSheet.Cells[5, 12] = "检验结果";

workSheet.Cells[5, 13] = "整改复查后检验结果";

workSheet.Cells[5, 14] = "此类产品总体合格率";

//向Excel表格中添加数据

foreach (DataRow row in dt.Rows)

{

rowIndex++;

colIndex = 0;

for (colIndex = 0; colIndex < dt.Columns.Count; colIndex++)

{

excel.Cells[rowIndex, colIndex + 1] = row[colIndex].ToString();

}

}

//导出表格后是否打开,(false)为不打开 (true)为打开

excel.Visible = false;

//保存路径(不可以自己更改路径)

//excel.ActiveWorkbook.SaveAs(fileName, Excel.XlFileFormat.xlExcel9795, null, null, false, false, Excel.XlSaveAsAccessMode.xlNoChange, null, null, null,
null, null);

//保存文件(可以自己更改路径)

excel.Save(fileName);

//关闭excel

excel.Quit();

//清空excel中的内容

excel = null;

GC.Collect();//垃圾回收

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: