日期:2014-05-18  浏览次数:20937 次

100分求操作Excel方法!
小弟最近在做一个操作Excel的项目,部分需求的内容是将DataTable数据集中的数据导出到Excel中,并进行打印和打印预览
操作。在操作中想使用“以文件方式打开并输出数据”的方式,但是在操作中遇到如下
错误:
错误 1 类型“Microsoft.Office.Interop.Excel.Sheets”在未被引用的程序集中定义。必须添加对程序集“Microsoft.Office.Interop.Excel,   Version=11.0.0.0,   Culture=neutral,   PublicKeyToken=71e9bce111e9429c”的引用。 C:\Documents   and   Settings\haokb\My   Documents\Visual   Studio   2005\Projects\ExcelText\OperationOnExcel\OutputToExcel.cs 38 17 OperationOnExcel


请问Microsoft.Office.Interop.Excel这个程序集在哪里可以获得,或给出一个优美的解决方案,分数不是问题   o(∩_∩)o
请高手指教!

------解决方案--------------------
记得以前做过一个并没有用到这个程序集啊,LZ是怎么做的?
------解决方案--------------------
必须添加对程序集“Microsoft.Office.Interop.Excel, Version=11.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c”的引用
------解决方案--------------------
http://blog.csdn.net/net_lover/archive/2007/07/23/1702797.aspx
------解决方案--------------------
这是我做的从DataGrid() 导出Excel数据表的代码 你看看 也许有帮助

using Excel; //要引用
//写在事件中

#region 导出数据到Excel表
//建立Excel对象

Excel.Application app = new Excel.Application();
try
{
if (app == null)
{
MessageBox.Show( "对不起,您的电脑未安装Excel,请先安装后再进行操作! ", "提示 ", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
app.Visible = isShowExcle;
Workbooks workbooks = app.Workbooks;
_Workbook workbook = workbooks.Add(XlWBATemplate.xlWBATWorksheet);
Sheets sheets = workbook.Worksheets;
_Worksheet worksheet = (_Worksheet)sheets.get_Item(1);
if (worksheet == null)
{
return false;
}
string sLen = " ";
//取得最后一列列名
char H = (char)(64 + DataGrid1.ColumnCount / 26);
char L = (char)(64 + DataGrid1.ColumnCount % 26);
if (DataGrid1.ColumnCount < 26)
{
sLen = L.ToString();
}
else
{
sLen = H.ToString() + L.ToString();
}


//标题
string sTmp = sLen + "1 ";
Range ranCaption = worksheet.get_Range(sTmp, "A1 ");
string[] asCaption = new string[DataGrid1.ColumnCount];
for (int i = 0; i < DataGrid1.ColumnCount; i++)
{
asCaption[i] = DataGrid1.Columns[i].HeaderText;
}
ranCaption.Value2 = asCaption;

//数据
object[] obj = new object[DataGrid1.Columns.Count];
for (int r = 0; r < DataGrid1.RowCount - 1; r++)
{
for (int l = 0; l < DataGrid1.Columns.Count; l++)
{
if (DataGrid1[l, r].ValueType == typeof(DateTime))
{
obj[l] = DataGrid1[l, r].Value.ToString();
}
else
{
obj[l] = DataGrid1[l, r].Value;
}
}
string cell1 = sLen + ((int)(r + 2)).ToStrin