打算做一个C#操作EXCEL做报表的程序
需详细的C#操作EXCEL帮助:
1、C#新建EXCEL文档,新建SHEET,删除SHEET,在两个SHEET中间手稿SHEET,移动SHEET位置,保存SHEET,等。
2、C#设置单元格或区域的边框,大小,颜色,字体,合并单元格等。
先想到这些,谢谢。
需详细的C#操作EXCEL帮助:
1、C#新建EXCEL文档,新建SHEET,删除SHEET,在两个SHEET中间手稿SHEET,移动SHEET位置,保存SHEET,等。
2、C#设置单元格或区域的边框,大小,颜色,字体,合并单元格等。
先想到这些,谢谢。
// csc /r:Interop.Excel.dllnamespace Skyiv
{
using Excel; public class Excel2000 : ApplicationClass
{
object TM = System.Type.Missing; public Excel2000()
{
DisplayAlerts = false;
} // 返回当前工作表的使用的行数
public int GetRowsCount()
{
return ((Worksheet)ActiveSheet).UsedRange.Rows.Count;
} // 返回工作表 sheet 的使用的行数
public int GetRowsCount(int sheet)
{
return ((Worksheet)ActiveWorkbook.Sheets[sheet]).UsedRange.Rows.Count;
} // 用模板创建工作簿
public void CreateFromTemplet(string templet, params string [] names)
{
foreach (string name in names)
{
(Workbooks.Add(templet)).SaveAs(name, TM, TM, TM, TM, TM, XlSaveAsAccessMode.xlNoChange, TM, TM, TM, TM);
}
} // 打开工作簿
public void Open(params string [] names)
{
foreach (string name in names)
{
Workbooks.Open(name, TM, TM, TM, TM, TM, TM, TM, TM, TM, TM, TM, TM);
}
} // 复制当前工作簿的 sheet0 到 sheet1 之前
public void CopySheetBefore(int sheet0, int sheet1)
{
((Worksheet)ActiveWorkbook.Sheets[sheet0]).Copy(ActiveWorkbook.Sheets[sheet1], TM);
} // 复制当前工作簿的 sheet0 到 sheet1 之后
public void CopySheetAfter(int sheet0, int sheet1)
{
((Worksheet)ActiveWorkbook.Sheets[sheet0]).Copy(TM, ActiveWorkbook.Sheets[sheet1]);
} // 复制工作簿 book 的 sheet0 到 sheet1 之后
public void CopySheetAfter(int book, int sheet0, int sheet1)
{
((Worksheet)Workbooks[book].Sheets[sheet0]).Copy(TM, Workbooks[book].Sheets[sheet1]);
} // 把删除当前工作簿的工作表 sheet
public void DeleteSheet(int sheet)
{
((Worksheet)ActiveWorkbook.Sheets[sheet]).Delete();
} // 返回工作表 sheet 的名称
public string GetSheetName(int sheet)
{
return ((Worksheet)ActiveWorkbook.Sheets[sheet]).Name;
} // 把当前工作表改名为 name
public void SetSheetName(string name)
{
((Worksheet)ActiveSheet).Name = name;
} // 把工作表 sheet 改名为 name
public void SetSheetName(int sheet, string name)
{
((Worksheet)ActiveWorkbook.Sheets[sheet]).Name = name;
} // 把工作簿 book 的工作表 sheet 改名为 name
public void SetSheetName(int book, int sheet, string name)
{
((Worksheet)Workbooks[book].Sheets[sheet]).Name = name;
} // 返回当前工作表的单元格的值
public object GetCellValue(object col, object row)
{
return ((Range)((Worksheet)ActiveSheet).Cells[row, col]).Value;
} // 返回工作表sheet的单元格的值
public object GetCellValue(int sheet, object col, object row)
{
return ((Range)((Worksheet)ActiveWorkbook.Sheets[sheet]).Cells[row, col]).Value;
} // 对当前工作表的单元格赋值
public void SetCellText(object col, object row, object txt)
{
Cells[row, col] = txt;
} // 对book工作簿的sheet工作表的单元格赋值
public void SetCellText(object book, object sheet, object col, object row, object txt)
{
((Worksheet)Workbooks[book].Sheets[sheet]).Cells[row, col] = txt;
} // 对book工作簿的sheet工作表, 在第row行插入一行(复制本行)
public void InsertCopyRowAt(object book, object sheet, object row)
{
((Range)((Worksheet)Workbooks[book].Sheets[sheet]).Rows[row, TM]).Copy(TM);
((Range)((Worksheet)Workbooks[book].Sheets[sheet]).Cells[row, 1]).EntireRow.Insert(0);
} // 在第row行插入一行(复制本行)
public void InsertCopyRowAt(object row)
{
((Range)((Worksheet)ActiveSheet).Rows[row, TM]).Copy(TM);
((Range)((Worksheet)ActiveSheet).Cells[row, 1]).EntireRow.Insert(0);
} // 在第col行插入一列(复制本列)
public void InsertCopyColumnAt(object col)
{
((Range)((Worksheet)ActiveSheet).Columns[col, TM]).Copy(TM);
((Range)((Worksheet)ActiveSheet).Cells[1, col]).EntireColumn.Insert(0);
} // 对book工作簿的sheet工作表, 删除第row行
public void DeleteRowAt(object book, object sheet, object row)
{
((Range)((Worksheet)Workbooks[book].Sheets[sheet]).Rows[row, TM]).Delete(TM);
} // 删除第row行
public void DeleteRowAt(object row)
{
((Range)((Worksheet)ActiveSheet).Rows[row, TM]).Delete(TM);
} // 分类汇总
public void Subtotal(int r0, int c0, int r1, int c1, int GroupBy, int[] TotalList)
{
get_Range(Cells[r0,c0], Cells[r1,c1]).
Subtotal(GroupBy, XlConsolidationFunction.xlSum, TotalList, TM, TM, XlSummaryRow.xlSummaryBelow);
} // 清除
public void Clear(int r0, int c0, int r1, int c1)
{
get_Range(Cells[r0,c0], Cells[r1,c1]).Clear();
} // 保存所有工作簿
public void SaveAll()
{
foreach (Workbook book in Workbooks)
{
book.Save();
}
}
}
}
excel VBA来控制excel会更有效更方便。
我一只就是这么做的。===============================
◆◆◆【易销网】www.ezshopi.com◆◆◆
TaobaoAnalyzer.淘宝分析家-淘宝市场分析专家
===============================
下面是基本报表定义部分设置方案,除此还有系统配置,报表生成等,请各位看看一个人30个工作日开发完成的可行性有多高。多谢
1 报表模板定义
报表模板定义,是用户根据实际需求,定义出报表的原型,以及数据添充规则,然后系统可以根据模块分配给的具体报表,以及数据说不清充规则按期生成用户预期的报表。
1.1 报表组定义
定义一个报表分组,将作为多张报表的容器。对应于一个EXCEL文档。
1.2 报表定义
定义一张报表,相当于EXCEL的一张SHEET。
1.2.1 报表规格定义
针对某一整张报表进行定义,描述报表的整体属性。
1.2.2 报表元素定义
详细定义报表的各种细节,如表头,小节,注脚等。
1.2.2.1 表头定义
定义报表的表头部分,包括标题,说明等等,与数据无关的标识性内容。
表头的定义通常包括多个ITEM的定义,每个ITEM作为一项相对独立显示的内容,其内容可以是文本,时间,日期,操作员等等相对独立的信息。每个ITEM需定义它的占位,字体,颜色,对齐方式,单元格合并等显示规则。
1.2.2.2 小节定义
定义报表小的各个小节,一般而言每个小节都有不同的样式规格,简单报表可能只有一个小节,复杂报表通常会是多个小节组成的。
小节的定义包括小节样式,排列顺序等定义项目。
根据目前的需要,抽象出两种小节样式,1,明细列表;2,摘要说明。
1.2.2.2.1 明细列表
当小节定义中小节样式为明细列表时,采用此方式定义小节的细节。
明细列表是报表中常见的一种方式,通常会以列表的形式,为一批同类别的项目形成一张二维表。其中包括样式定义和数据添充规则定义。
样式定义将涉及到明细列表的表头定义,列定义,分组,汇总,行、列排序,列宽度,单元格合并,预警,显示规则等设置项。
数据规则定义主要定义明细列表内的实际数据由何种数据源,直接或经过运算而成。亦有可能由多个数据源参与运算,以及数据源截取的数据范围。
1.2.2.2.2 摘要说明
当小节样式设置为摘要说明时,采用此方式定义小节的细节。
摘要说明是一种简单的报表展示方式,但是其数据填充较明细列表复杂。可能一个数据要通过比较复杂的运算得来。其定义亦包括样式定义和数据填充定义。
样式定义将涉及到明细宽度,单元格合并,预警,显示规则等设置项。
数据规则定义主要定义明细列表内的实际数据由何种数据源,直接或经过运算而成。极有可能由多个数据源参与进行复杂运算。
1.3 报表模板预览
根据以上定义好的报表样式,生成一个空白的报表,给用户一个直观的报表形象。