[英]Exporting Excel to C#
我必须移植excel文件,业务人员正在使用它来计算C#的最终价格,以便我以后可以在Asp.Net应用程序中使用此算法。 这是我第一次不会做的事情,但今天它打击了我。 也许Excel可以导出到C#。 我不在乎它是否看起来很难看,但这仍然是一件好事。
是否有一些Excel插件,我可以标记一些输入和输出单元格,这个添加它会导出到C#?
编辑
我们的客户有Excel文件,雇员可以修改某些字段并查看另一个字段的最终价格。 Excel文件没有任何VB,但使用标准的数学函数函数来计算价格。
想象一下用于计算实时保险价格的excel文件。
我要做的是将使用excel文件进行的计算移植到C#。
严格地说,“将Excel导出到C#”没有多大意义。 这是因为您通常希望从Excel导出的是数据,而C#是一种编程语言 。 也许您正在寻找的问题是,“如何使用C#编写的程序可以使用Excel数据?”
我在C#Excel Interop Use上使用这篇文章作为从C#编写的应用程序中读取Excel数据的起点。 这可能是一个开始弄清楚如何在C#中显示Excel数据的好地方。
解释您的问题的另一种方法是您要将Excel工作簿中的Visual Basic for Applications(VBA)代码转换为C#。 如果是这种情况,您有几个选择:
你无法真正从一个spead表创建代码。 您更希望使用读取Excel文件的.NET API。 其中有几个。 这是我使用的那个: http : //exceldatareader.codeplex.com/
我从来没用过它,但你可能想看看这个:
它似乎做你想要的,只用C ++而不是C#,但重点是你得到一些代码然后你可以编译和使用(或者如果你真的需要它来转换为C#)。
在这个问题的答案:
Joe Erickson给出了他的产品Spreadsheet Gear的链接,但我从未使用过它。
如果您的公司具有SharePoint 2007或2010,您可能需要查看Excel Services ,它允许您通过SharePoint Web部件在Excel工作簿中使用计算。 不确定您是否能够将该Web部件公开给其他ASP.NET应用程序,但可能值得研究
尝试使用此代码,可能会有所帮助
public static void DataSetsToExcel(DataSet dataSet, string filepath)
{
try
{
string connString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + filepath + ";Extended Properties=Excel 12.0 Xml;";
string tablename = "";
DataTable dt = new DataTable();
foreach (System.Data.DataTable dataTable in dataSet.Tables)
{
dt = dataTable;
tablename = dataTable.TableName;
using (OleDbConnection con = new OleDbConnection(connString))
{
con.Open();
StringBuilder strSQL = new StringBuilder();
strSQL.Append("CREATE TABLE ").Append("[" + tablename + "]");
strSQL.Append("(");
for (int i = 0; i < dt.Columns.Count; i++)
{
strSQL.Append("[" + dt.Columns[i].ColumnName + "] text,");
}
strSQL = strSQL.Remove(strSQL.Length - 1, 1);
strSQL.Append(")");
OleDbCommand cmd = new OleDbCommand(strSQL.ToString(), con);
cmd.ExecuteNonQuery();
for (int i = 0; i < dt.Rows.Count; i++)
{
strSQL.Clear();
StringBuilder strfield = new StringBuilder();
StringBuilder strvalue = new StringBuilder();
for (int j = 0; j < dt.Columns.Count; j++)
{
strfield.Append("[" + dt.Columns[j].ColumnName + "]");
strvalue.Append("'" + dt.Rows[i][j].ToString().Replace("'", "''") + "'");
if (j != dt.Columns.Count - 1)
{
strfield.Append(",");
strvalue.Append(",");
}
else
{
}
}
if (strvalue.ToString().Contains("<br/>"))
{
strvalue = strvalue.Replace("<br/>", Environment.NewLine);
}
cmd.CommandText = strSQL.Append(" insert into [" + tablename + "]( ")
.Append(strfield.ToString())
.Append(") values (").Append(strvalue).Append(")").ToString();
cmd.ExecuteNonQuery();
}
con.Close();
}
}
}
catch (Exception ex)
{
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.