C#或VSTO下能否调用EXCEL的工作表函数和VBA函数?

laoyebin 2010-03-07 08:56:31
RT
有些功能C#中提供不了,能否实现?
...全文
423 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
yuyu_1272407458 2011-10-02
  • 打赏
  • 举报
回复
此贴结了么?怎么没有继续下去啊。。。。。。
宋翔 2010-03-11
  • 打赏
  • 举报
回复
学习+帮顶
koj5201314 2010-03-11
  • 打赏
  • 举报
回复
学习中~~~~~~~
laoyebin 2010-03-11
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 lzsh0622 的回复:]
引用 9 楼 laoyebin 的回复:我的意思是能否直接调用EXCEL工作表函数如SUMIF之类的

工作表函数,直接操作工作表行、列、单元格,都写在工作表中。

COM方式下,你说的“直接调用”是什么含义,或者什么调用形式才算得上你说的“直接调用”?


[/Quote]

就是用 代码.sumif() 这样的形式,能不能直接调用sumif等函数,差不多就像11楼这样的意思
qygcom 2010-03-09
  • 打赏
  • 举报
回复
把VBA用VB语言作成dll,在C#调用
lzsh0622 2010-03-09
  • 打赏
  • 举报
回复
引用 9 楼 laoyebin 的回复:
我的意思是能否直接调用EXCEL工作表函数如SUMIF之类的


工作表函数,直接操作工作表行、列、单元格,都写在工作表中。

COM方式下,你说的“直接调用”是什么含义,或者什么调用形式才算得上你说的“直接调用”?

laoyebin 2010-03-08
  • 打赏
  • 举报
回复
8楼的貌似和我的问题不搭界哦

7楼的方法我也会呀
我的意思是能否直接调用EXCEL工作表函数如SUMIF之类的,或是能调用VBA的内置函数
而不是在EXCEL表里写了VBA过程后再去调用
十八道胡同 2010-03-08
  • 打赏
  • 举报
回复
关于excel2007的读,写操作.

难点:1.excel的进程的杀死.

2.excel的写操作,excel的下标是从1开始的.

3.对excel中空的操作.是DBnull不时null.

using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using System.Data.OleDb;
using System.Data.SqlClient;
using System.IO;
using Microsoft.Office.Interop.Excel;
namespace TestAccess
{
class Program
{
static void Main(string[] args)
{

string strConnection = "Provider=Microsoft.ACE.OLEDB.12.0;";
strConnection += @"Data Source=C:\Documents and Settings\v-changl\My Documents\couse.xlsx;";
strConnection += "Extended Properties=\"Excel 12.0 Xml;HDR=YES\";";
OleDbConnection objConnection = new OleDbConnection(strConnection);
objConnection.Open();
OleDbDataAdapter myCommandd = new OleDbDataAdapter("select * from [Sheet1$]", objConnection);
DataSet ds = new DataSet();
myCommandd.Fill(ds, "[Sheet1$]");
System.Data.DataTable dt = ds.Tables["[Sheet1$]"];
Console.WriteLine(dt.Columns[0].ToString());
Console.WriteLine(dt.Columns[1].ToString());
DataRow drDisplay = dt.Rows[0];
int[] num = new int[dt.Columns.Count];
for (int j = 0; ; )
{
for (int i = 0; i < dt.Columns.Count; i++)
{

if (drDisplay[i] is DBNull) ;
else
num[i] += Convert.ToInt32(drDisplay[i]);

}
if (++j >= dt.Rows.Count) break;
drDisplay = dt.Rows[j];
}
objConnection.Close();
object MissingValue = Type.Missing;
Microsoft.Office.Interop.Excel.Application app = new Application();
Microsoft.Office.Interop.Excel.Workbook wbook = app.Workbooks.Open(@"C:\Documents and Settings\v-changl\My Documents\couse.xlsx", MissingValue,
MissingValue, MissingValue, MissingValue,
MissingValue, MissingValue, MissingValue,
MissingValue, MissingValue, MissingValue,
MissingValue, MissingValue, MissingValue,
MissingValue);
Microsoft.Office.Interop.Excel.Worksheet wsheet = wbook.ActiveSheet as Microsoft.Office.Interop.Excel.Worksheet;
for (int i = 0; i < dt.Columns.Count; i++)
{
//注意下面是i+1,,excel小标默认从1开始
wsheet.Cells[dt.Rows.Count + 2, i + 1] = num[i].ToString();
}

wbook.Save();
wbook.Close(true, null, null);
System.Runtime.InteropServices.Marshal.ReleaseComObject(wsheet);
System.Runtime.InteropServices.Marshal.ReleaseComObject(wbook);
System.Runtime.InteropServices.Marshal.ReleaseComObject(app);
wsheet = null;
wbook = null;
app = null;
GC.Collect();
}
}
}



本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/LCL_data/archive/2009/05/06/4154784.aspx
lzsh0622 2010-03-08
  • 打赏
  • 举报
回复
laoyebin 2010-03-08
  • 打赏
  • 举报
回复
怎么一直没人来回答一下哟,再顶起
zhouxiangfu 2010-03-08
  • 打赏
  • 举报
回复
学习~~~~~~回复内容太短了!
laoyebin 2010-03-08
  • 打赏
  • 举报
回复
没人用过?
顶起来
laoyebin 2010-03-07
  • 打赏
  • 举报
回复
我知道VSTO可以调用EXCEL表里的VBA代码,但想找个能直接能用C#操作的
helloxxxxx111 2010-03-07
  • 打赏
  • 举报
回复
比如直接往需要计算结果的单元格
XX.CELL[行,列]= "=(C:C*6+D:D*6+E:E*1+F:F*3+G:G*4+H:H*3+I:I*0.5+J:J*0.5+K:K*1+L:L*3+M:M*2+N:N*2+O:O*2+P:P*2+Q:Q*1+R:R*4+S:S*6+T:T*2+U:U*4.5)/53.5";

这种...具体内容看EXCEL里面那个单元格Fx后面是啥子内容.
helloxxxxx111 2010-03-07
  • 打赏
  • 举报
回复
EXCEL可以
直接往单元格里面写字符串(需要实现的EXCEL函数对应的字符串).

其他不知道.
也有其他方法可以调用EXCEL的工作表函数,没用过,可参考MSDN上关于EXCEL的那个基础示例和VS TOOL FOR OFFICE,貌似里面曾经看到过.

110,534

社区成员

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

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

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