C#从Excel中读取数据问题:

gqchen1981 2005-08-03 01:19:02
我从网上找了些例子,总是不行,
首先从引用方面,我从COM里引用Microsoft Excel 5.0对象程序库(是不是错了?),
然后写
Application exc = new Application();//这里不行,是不是和OFFICE版本有关?我装的好象是2003
后面的就没的写了,打击死了!!
希望高手们帮忙解决下,
最好能写个读取Excel例子,谢谢了!!
...全文
704 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
seekg 2005-08-11
  • 打赏
  • 举报
回复
旁听
qiezic 2005-08-03
  • 打赏
  • 举报
回复
mark
gqchen1981 2005-08-03
  • 打赏
  • 举报
回复
解决了,这不是引用问题
应该是OFFICE版本问题,我的是2003,我找了个2000的.dll文件引用了,
然后就过了,真郁闷啊!不过还是要谢谢大家!
jinger007 2005-08-03
  • 打赏
  • 举报
回复
全称是
Microsoft Excel 10.0 Object Library
Microsoft Office 10.0 Object Library

jinger007 2005-08-03
  • 打赏
  • 举报
回复
在com里面,前面还有Microsoft
gqchen1981 2005-08-03
  • 打赏
  • 举报
回复
excel= new Excel.ApplicationClass();
老大,我这里已经试过啦,不行,我要的是Excel引用,为什么
我这样写编译不过?你们引用的是什么?
gqchen1981 2005-08-03
  • 打赏
  • 举报
回复
interop.excel.dll和office.core我在.net和COM引用里都没找到,
为什么?麻烦2楼能再解释一下!谢谢!
lyb_abiandbel 2005-08-03
  • 打赏
  • 举报
回复
public void 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;
}

}
}

调用:

private void Form1_Load(object sender, System.EventArgs e)
{
this.sqlDataAdapter2.Fill(this.dataSet11);
OutputExcel(this.dataSet11.tyfy.DefaultView,"aaaa");//调用OutputExcel

} //"aaaa"是标题
jinger007 2005-08-03
  • 打赏
  • 举报
回复
添加引用的时候应该加这个interop.excel.dll,另外还有office.core

110,533

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧