求救﹗誰有C#操作EXCEL的例子﹕ ( 积分: 100 )

  • 主题发起人 主题发起人 fusm_2000
  • 开始时间 开始时间
F

fusm_2000

Unregistered / Unconfirmed
GUEST, unregistred user!
已OK了
if (dataset.Tables[0].Rows.Count<1)return;

app=new Excel.Application();
app.Application.Workbooks.Add(true);

books=(Excel.Workbook)app.Workbooks[1];
sheets=(Excel.Worksheet)books.Worksheets[1];


for(int i=0;
i<=dataset.Tables[0].Columns.Count-1;i++)
{
sheets.Cells[1,i+1]=dataset.Tables[0].Columns.Caption;

}

int j=0;
foreach(DataRow dt in dataset.Tables[0].Rows)
{
for(int i=0;
i<=dataset.Tables[0].Columns.Count-1;i++)
{
sheets.Cells[j+2,i+1]=dt.ToString();
}
j++;

}
app.Visible=true;

}
 
已OK了
if (dataset.Tables[0].Rows.Count<1)return;

app=new Excel.Application();
app.Application.Workbooks.Add(true);

books=(Excel.Workbook)app.Workbooks[1];
sheets=(Excel.Worksheet)books.Worksheets[1];


for(int i=0;
i<=dataset.Tables[0].Columns.Count-1;i++)
{
sheets.Cells[1,i+1]=dataset.Tables[0].Columns.Caption;

}

int j=0;
foreach(DataRow dt in dataset.Tables[0].Rows)
{
for(int i=0;
i<=dataset.Tables[0].Columns.Count-1;i++)
{
sheets.Cells[j+2,i+1]=dt.ToString();
}
j++;

}
app.Visible=true;

}
 
string desc_1,desc_2,desc_3,desc_4,PP_ID,desc_6,desc_7,desc_8,desc_9,desc_10,desc_11,desc_12,desc_13,desc_14, desc_15,desc_16,desc_18,desc_19;
if (ofd1.ShowDialog()==DialogResult.No) return;
string filename=null;
filename=ofd1.FileName;
if (filename==null)return;
app=new Excel.ApplicationClass();
app.Visible=false;
app.Workbooks.Open(filename,null,null,Excel.XlFileFormat.xlWKS,null,null,null,null,null,null,null,null,null,null,null);//此行報錯
sheets=(Excel.Worksheet)app.Workbooks[1];
int sheetrow=sheets.Rows.Count;
pgB1.Minimum=0;
pgB1.Maximum=sheetrow;
pgB1.Value=0;
for(int i=2;i<=sheetrow;i++)
{
if (sheets.Cells[i,5]==null)
{
this.label4.Text="EXCEL中第"+Convert.ToString(i)+"行的PP_ID為空﹐不能插入值﹗";
return;

}
 
引入Excel.dll了吗
 
在使用中,如果你们想用Excel进行操作的话。可以在你的项目中添加引用=>com组件=>Microsoft Excel 10.0 Object Library。在进行Excel(包括Word等Office)操作的时候,在你的项目中如果你要使用你常用的Application的话。请你使用它的完整模式:System.Windows.Forms.Application 因为Excel或者Word等Office的操作时,它会生成一个它自己的Application 好了
C#调用操作Excel的一个类 cocosoft(原作)

关键字 Excel C#调用


在这儿本来想写长一点的文章,但因为时间的关系,没有写成。现把自己做的一个小东西,C#调用Excel作报表的源代码放在这儿给大家看看。关于代码的构成,在源代码中已经有完整的代码注释了,这儿就不说什么了。
下面的这个类中,主要完成的功能是从数据库中逐字段读出数据,设置格式后,在Excel中显示出来。这是它运行后的效果图:
在这个类中,有两个参数传进来,一个是它的数据源,另一个是整个报表的标题字符串,具体看代码就应该知道了。
using System;
using System.Data;
using Excel;
namespace LogicLayer
{
/// <summary>
/// OutputExcel 的摘要说明
/// </summary>
public class OutputExcel
{
public OutputExcel(DataView dv,string str)
{
//
// TODO: 在此处添加构造函数逻辑
//
Excel.Application excel;
int rowIndex=4;
int colIndex=1;
Excel._Workbook xBk;
Excel._Worksheet xSt;
excel= new Excel.ApplicationClass();;
xBk = excel.Workbooks.Add(true);
xSt = (Excel._Worksheet)xBk.ActiveSheet;
//
//取得标题
//
foreach(DataColumn col in dv.Table.Columns)
{
colIndex++;
excel.Cells[4,colIndex] = col.ColumnName;
xSt.get_Range(excel.Cells[4,colIndex],excel.Cells[4,colIndex]).HorizontalAlignment = Excel.XlVAlign.xlVAlignCenter;//设置标题格式为居中对齐
}
//
//取得表格中的数据
//
foreach(DataRowView row in dv)
{
rowIndex ++;
colIndex = 1;
foreach(DataColumn col in dv.Table.Columns)
{
colIndex ++;
if(col.DataType == System.Type.GetType("System.DateTime"))
{
excel.Cells[rowIndex,colIndex] = (Convert.ToDateTime(row[col.ColumnName].ToString())).ToString("yyyy-MM-dd");
xSt.get_Range(excel.Cells[rowIndex,colIndex],excel.Cells[rowIndex,colIndex]).HorizontalAlignment = Excel.XlVAlign.xlVAlignCenter;//设置日期型的字段格式为居中对齐
}
else
if(col.DataType == System.Type.GetType("System.String"))
{
excel.Cells[rowIndex,colIndex] = "'"+row[col.ColumnName].ToString();
xSt.get_Range(excel.Cells[rowIndex,colIndex],excel.Cells[rowIndex,colIndex]).HorizontalAlignment = Excel.XlVAlign.xlVAlignCenter;//设置字符型的字段格式为居中对齐
}
else
{
excel.Cells[rowIndex,colIndex] = row[col.ColumnName].ToString();
}
}
}
//
//加载一个合计行
//
int rowSum = rowIndex + 1;
int colSum = 2;
excel.Cells[rowSum,2] = "合计";
xSt.get_Range(excel.Cells[rowSum,2],excel.Cells[rowSum,2]).HorizontalAlignment = Excel.XlHAlign.xlHAlignCenter;
//
//设置选中的部分的颜色
//
xSt.get_Range(excel.Cells[rowSum,colSum],excel.Cells[rowSum,colIndex]).Select();
xSt.get_Range(excel.Cells[rowSum,colSum],excel.Cells[rowSum,colIndex]).Interior.ColorIndex = 19;//设置为浅黄色,共计有56种
//
//取得整个报表的标题
//
excel.Cells[2,2] = str;
//
//设置整个报表的标题格式
//
xSt.get_Range(excel.Cells[2,2],excel.Cells[2,2]).Font.Bold = true;
xSt.get_Range(excel.Cells[2,2],excel.Cells[2,2]).Font.Size = 22;
//
//设置报表表格为最适应宽度
//
xSt.get_Range(excel.Cells[4,2],excel.Cells[rowSum,colIndex]).Select();
xSt.get_Range(excel.Cells[4,2],excel.Cells[rowSum,colIndex]).Columns.AutoFit();
//
//设置整个报表的标题为跨列居中
//
xSt.get_Range(excel.Cells[2,2],excel.Cells[2,colIndex]).Select();
xSt.get_Range(excel.Cells[2,2],excel.Cells[2,colIndex]).HorizontalAlignment = Excel.XlHAlign.xlHAlignCenterAcrossSelection;
//
//绘制边框
//
xSt.get_Range(excel.Cells[4,2],excel.Cells[rowSum,colIndex]).Borders.LineStyle = 1;
xSt.get_Range(excel.Cells[4,2],excel.Cells[rowSum,2]).Borders[Excel.XlBordersIndex.xlEdgeLeft].Weight = Excel.XlBorderWeight.xlThick;//设置左边线加粗
xSt.get_Range(excel.Cells[4,2],excel.Cells[4,colIndex]).Borders[Excel.XlBordersIndex.xlEdgeTop].Weight = Excel.XlBorderWeight.xlThick;//设置上边线加粗
xSt.get_Range(excel.Cells[4,colIndex],excel.Cells[rowSum,colIndex]).Borders[Excel.XlBordersIndex.xlEdgeRight].Weight = Excel.XlBorderWeight.xlThick;//设置右边线加粗
xSt.get_Range(excel.Cells[rowSum,2],excel.Cells[rowSum,colIndex]).Borders[Excel.XlBordersIndex.xlEdgeBottom].Weight = Excel.XlBorderWeight.xlThick;//设置下边线加粗
//
//显示效果
//
excel.Visible=true;
}
}
}
 
后退
顶部