C#怎么写excel
我要的效果如下图,可以写死,也可以动态的,我数据是从数据库拿的。怎么写到下面的效果。--------------------编程问答-------------------- 可以把这个excel文件的格式做成模版吗?如果数据是动态的,而格式是一定的就好操作多了。用NPOI或者微软的excel组件都可以做到,读取excel模版,动态添加数据到指定单元格,然后生成excel文件。至于有单元格合并的情况也不怕,像大连组实际上是在A4单元格的位置,向A4写大连组这个字符串就可以,最后save就行了。
refer:
http://blog.csdn.net/downmoon/article/details/6329814
http://blog.csdn.net/chinacsharper/article/details/8980456 --------------------编程问答--------------------
数据库动态,格式是一定的。 --------------------编程问答-------------------- 做成模板文件,
程序里打开模板文件,
在相应地的单元格里填数据库中读出来的内容就行了 --------------------编程问答--------------------
给个实例,我没做过那个,不会。 --------------------编程问答--------------------
protected void AddExcel(DataSet ds)
{
DataTable dt = ds.Tables[0];
//获取excel的文件名称(Guid是一个全球表示,使excel的文件名不同)
//--- string fileName = Guid.NewGuid() + ".xls";
string fileName = System.DateTime.Now.ToString("yyyymmdd");
//初始化excel对象
Excel.Application excel = new Excel.ApplicationClass();
//Excel.Application excel1 = new Excel.ApplicationClass();
//定义列
int rowIndex = 3;
//定义行
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 = "@"; //设置单元格格式为文本
Excel.Worksheet workSheet = (Excel.Worksheet)workbook.Worksheets[1];
Excel.Range excelRange = workSheet.get_Range(workSheet.Cells[2, 1], workSheet.Cells[2, 1]);
workSheet.get_Range("A1", "M1").Merge(workSheet.get_Range("A1", "O1").MergeCells);
workSheet.get_Range("B2", "M2").Merge(workSheet.get_Range("B2", "O2").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] = "企业规模许可证书编号";
//向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.Save(fileName);
//关闭excel
excel.Quit();
//清空excel中的内容
excel = null;
GC.Collect();//垃圾回收
}
这里导出来的时候,为什么要保存两个excel? --------------------编程问答-------------------- 这个应该是EXCEL的简单列子 用模板写死最简单
不写死也简单 直接调用格式化都可以
用NPOI或者微软的excel --------------------编程问答-------------------- 我在想,有没有办法可以用参数来传值,比如我在EXCEL模板里任意一个单元格设个“Name”,然后数据库的字段就绑定到EXCEL模板里的name
--------------------编程问答-------------------- 方法多种多样,要么用Office PIA之类的方案,要么用NPOI之类的方案。
补充:.NET技术 , C#