C# Excel如何复制一列?问题解决马上给分!

esprit0318 2007-09-11 02:51:47
如题!VB.net里有Sheets(index).Columns(index).copy()
C#中是怎么样的?谢谢!
...全文
1915 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
athuhu0321 2010-02-26
  • 打赏
  • 举报
回复
学习 现在正需要C#&excel的结合呵呵
yuyyu2016 2007-10-11
  • 打赏
  • 举报
回复
mark
校园的早晨 2007-09-11
  • 打赏
  • 举报
回复
http://blog.csdn.net/blog51/archive/2007/08/28/1761493.aspx
参考 完整方案
kingyan1985 2007-09-11
  • 打赏
  • 举报
回复
Sheets[index].Columns[index].copy()
懒牛科技 2007-09-11
  • 打赏
  • 举报
回复
自己慢慢研究把1
懒牛科技 2007-09-11
  • 打赏
  • 举报
回复
你可以通过excel知道excel的schema和每个列的列明,然后读取
代码:
public override DataSet ReadExcel(String xlsPath)
{

DataTable schemaTable = new DataTable();
OleDbDataAdapter workAdapter = new OleDbDataAdapter();
DataSet workSet = new DataSet();
OleDbConnection conn = new OleDbConnection();

char[] charArray = { ',', ' ' };
char[] charArray2 = { '$' };
string cmdString, cmdString2;
OleDbCommand cmd = new OleDbCommand();
string defaultTableName;

workSet.DataSetName = "excelData";

try
{
//设置连接字符串。
String connString = string.Empty;

if (ExcelReader.ExcelConnectionString != string.Empty)
connString = string.Format(ExcelReader.ExcelConnectionString, xlsPath);
else
connString = string.Format(ConnectionString, xlsPath);

//打开连接
conn.ConnectionString = connString;
conn.Open();



//使用数据源表中的架构信息
//填充 DataTable。
schemaTable = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, new Object[] { null, null, null, "TABLE" });
// 使用表名称填充数组。

if (schemaTable.Rows.Count < 1) return null;

defaultTableName = schemaTable.Rows[0]["Table_Name"].ToString();

//清除 DataTable
schemaTable.Clear();

//使用表名称和列架构
// 信息来构造 SELECT 语句,
// 使用数据源列中的架构信息
//填充 DataTable。

schemaTable = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Columns,
new Object[] { null, null, defaultTableName, null });

//逐个查看列名称,并将其附加到
//SELECT 语句中, 请注意用此中方法字段的顺序将和Excel不一致
//cmdString = "SELECT ";
//for(int x = 0 ;x<schemaTable.Rows.Count;x++)
//{
// cmdString = cmdString + string.Format("[{0}]",schemaTable.Rows[x]["Column_Name"]) +", ";
//}
//cmdString2 = cmdString.TrimEnd(charArray);
//请注意,无须将“$”附加到
//表名称中 - 它已包括在内。
//cmdString2 = cmdString2 + " FROM [" + defaultTableName + "]";


cmdString2 = "SELECT * FROM [" + defaultTableName + "]";

string cmdWhere = " WHERE ";
for (int x = 0; x < schemaTable.Rows.Count; x++)
{
cmdWhere = cmdWhere + string.Format("[{0}]", schemaTable.Rows[x]["Column_Name"]) + " is not null or ";
}
cmdWhere = cmdWhere.Substring(0, cmdWhere.Length - 3);
//使用 SELECT 命令和
//OleDbDataAdapter 填充 DataSet。
cmd.CommandText = cmdString2 + cmdWhere;
workAdapter.SelectCommand = cmd;
workAdapter.SelectCommand.Connection = conn;
string tableName = defaultTableName.TrimEnd(charArray2);
workAdapter.Fill(workSet, tableName);
schemaTable.Clear();

//把DataSet里的内容转换为大写。等待寻求更好的方法
if (workSet.Tables.Count > 0)
{
workSet.BeginInit();
for (int j = 0; j < workSet.Tables[0].Rows.Count; j++)
{
DataRow dr = workSet.Tables[0].Rows[j];
dr.BeginEdit();
for (int i = 0; i < workSet.Tables[0].Columns.Count; i++)
{
if (!dr.IsNull(i))
{
dr[i] = dr[i].ToString().ToUpper();
}
}
dr.EndEdit();
}
workSet.EndInit();
}

}
catch (Exception ex)
{
LogHelper.ErrorFormat("GetExcelData:{0}", ex);
throw ex;
}
finally
{
conn.Close();

if (schemaTable != null)
schemaTable.Dispose();
if (workAdapter != null)
workAdapter.Dispose();
if (cmd != null)
cmd.Dispose();
if (conn != null)
conn.Dispose();
}

return workSet;

}//ReadExcel

}
GZ_2008 2007-09-11
  • 打赏
  • 举报
回复
自己些个方法,循环复制其值可以实现你需要的功能.C#好象目前还没有如VB那样的方法.一句话就实现这个功能.
esprit0318 2007-09-11
  • 打赏
  • 举报
回复
回楼上的
Sheets[index].Columns[index]是有错的,Columns[]这里需要两个参数
在C#中复制的话只能是用Range才行吗?
Eddie005 2007-09-11
  • 打赏
  • 举报
回复
Sheets[index].Columns[index].copy()

都是调用Excel类库,方法基本上是一样的,只是语法稍有差异而以
bigmingming 2007-09-11
  • 打赏
  • 举报
回复
http://topic.csdn.net/t/20050325/13/3880608.html 参考删除
下载方式:https://pan.quark.cn/s/b4d8292ba69a 在构建食品品牌的市场整合营销推广方案时,我们必须首先深入探究品牌的由来、顾客的感知以及市场环境。 此案例聚焦于一款名为“某饼干产品”的食品,该产品自1998年进入河南市场以来,经历了销售业绩的波动。 1999至2000年期间,其销售额取得了明显的上升,然而到了2001年则出现了下滑。 在先前的宣传活动中,品牌主要借助大型互动活动如ROAD SHOW来吸引顾客,但收效甚微,这揭示了宣传信息与顾客实际认同感之间的偏差。 通过市场环境剖析,我们了解到消费者对“3+2”苏打夹心饼干的印象是美味、时尚且充满活力,但同时亦存在口感腻、价位偏高、饼身坚硬等负面评价。 实际上,该产品可以塑造为兼具美味、深度与创新性的休闲食品,适宜在多种情境下享。 这暗示着品牌需更精确地传递产品特性,同时消解消费者的顾虑。 在策略制定上,我们可考虑将新产品与原有的3+2苏打夹心进行协同推广。 这种策略的长处在于能够借助既有产品的声誉和市场占有率,同时通过新产品的加入,刷新品牌形象,吸引更多元化的消费群体。 然而,这也可能引发一些难题,例如如何合理配新旧产品间的资源,以及如何保障新产品的独特性和吸引力不被既有产品所掩盖。 为了提升推广成效,品牌可以实施以下举措:1. **定位修正**:基于消费者反馈,重新确立产品定位,突出其美味、创新与共享的特性,减少消费者感知的缺陷。 2. **创新宣传**:宣传信息应与消费者的实际体验相契合,运用更具魅力的创意手段,例如叙事式营销,让消费者体会到产品带来的愉悦和情感共鸣。 3. **渠道选择**:在目标消费者常去的场所开展活动,例如商业中心、影院或在线平台,以提高知名度和参与度。 4. **媒体联...

111,120

社区成员

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

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

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