本文介绍了在数据表中删除列的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我导出一个DataTable到Excel表成功......在这个Excel工作表。我除了最后一栏显示的数据表中的列(客户ID,产品名称,referenceno)....现在我怎么能显示在Excel中的数据表,而不显示最后一列(referenceno)...
谁能告诉我这个问题提前..
感谢的解决方案..
这是我的出口数据表的代码到excel:
系统.Data.DataTable DT = clsobj.convert_datagrid_orderlist_to_datatable(dvgorderlist,txtreferenceno);
OXL =新Excel.Application();
oxl.Visible = TRUE;
oxl.DisplayAlerts = FALSE;
wbook = oxl.Workbooks.Add(XlWBATemplate.xlWBATWorksheet);
oxl.ActiveCell.set_Item(2,4,阿法埃莎);
wsheet =(Excel.Worksheet)wbook.ActiveSheet;
wsheet.Name =客户;
Excel.Range范围= wsheet.get_Range(A6,H6);
wsheet.get_Range(A6,H6)Font.Name =宋体。
wsheet.get_Range(A6,H6)Font.Size = 12。
wsheet.get_Range(A6,H6)Interior.Color = ConvertColour(Color.SkyBlue)。
oxl.ActiveWindow.DisplayGridlines = FALSE;
INT rowCount时= 5;
的foreach(在dt.Rows的DataRow DR)
{
rowCount时+ = 1;
的for(int i = 1; I< dt.Columns.Count + 1;我++)
{
//添加标题在第一时间通过
如果(rowCount等= = 7)
{
wsheet.Cells [6,I] = dt.Columns [我 - 1] .ColumnName;
}
wsheet.Cells [rowCount时,我] =博士[I - 1]的ToString();
Excel.Range cellRange =(范围)wsheet.Cells [rowCount时,我]
//cellRange.Interior.Color = 200;
//cellRange.Interior.Color = ConvertColour(Color.LightBlue);
cellRange.Cells.Borders.LineStyle = BorderStyle.FixedSingle;
}
}
细胞= wsheet.get_Range(wsheet.Cells [2,2],
wsheet.Cells [rowCount等,dt.Columns.Count]);
cells.EntireColumn.AutoFit();
wsheet = NULL;
细胞= NULL;
解决方案
在你的声明中改变这一行
的for(int i = 1; I< dt.Columns.Count + 1;我++)
与此一
VAR filteredColumns = DT .Columns.OfType<&DataColumn的GT;()
。凡(X =>!x.ColumnName =referenceno);
的foreach(在filteredColumns VAR列)
{
//做你想做的
//如果需要,您可以创建计数器和1每次循环$ B增加它的指数$ b}
不要忘了使用LINQ
使用System.Linq的;
I am exporting a datatable to an excel sheet successfully... In that excel sheet i have to display the columns(customerid,Productname,referenceno) of the data table except the last column.... now how can i display the data table in excel without display the last column(referenceno)...
anyone tell me the solution of this problem..Thanks in Advance..
here is my code for export datatable to excel:
System.Data.DataTable dt = clsobj.convert_datagrid_orderlist_to_datatable(dvgorderlist, txtreferenceno);
oxl = new Excel.Application();
oxl.Visible = true;
oxl.DisplayAlerts = false;
wbook = oxl.Workbooks.Add(XlWBATemplate.xlWBATWorksheet);
oxl.ActiveCell.set_Item(2, 4, "Alfa Aesar");
wsheet = (Excel.Worksheet)wbook.ActiveSheet;
wsheet.Name = "Customers";
Excel.Range range = wsheet.get_Range("A6", "H6");
wsheet.get_Range("A6", "H6").Font.Name = "Times new Roman";
wsheet.get_Range("A6", "H6").Font.Size = 12;
wsheet.get_Range("A6", "H6").Interior.Color = ConvertColour(Color.SkyBlue);
oxl.ActiveWindow.DisplayGridlines = false;
int rowCount = 5;
foreach (DataRow dr in dt.Rows)
{
rowCount += 1;
for (int i = 1; i < dt.Columns.Count + 1; i++)
{
// Add the header the first time through
if (rowCount == 7)
{
wsheet.Cells[6, i] = dt.Columns[i - 1].ColumnName;
}
wsheet.Cells[rowCount, i] = dr[i - 1].ToString();
Excel.Range cellRange = (Range)wsheet.Cells[rowCount, i];
//cellRange.Interior.Color = 200;
//cellRange.Interior.Color = ConvertColour(Color.LightBlue);
cellRange.Cells.Borders.LineStyle = BorderStyle.FixedSingle;
}
}
cells = wsheet.get_Range(wsheet.Cells[2, 2],
wsheet.Cells[rowCount, dt.Columns.Count]);
cells.EntireColumn.AutoFit();
wsheet = null;
cells = null;
解决方案
In your for statement change this line
for (int i = 1; i < dt.Columns.Count + 1; i++)
with this one
var filteredColumns = dt.Columns.OfType<DataColumn>()
.Where( x=> x.ColumnName != "referenceno" );
foreach (var column in filteredColumns )
{
//do whatever you want
//if you need the index you can create counter and increase it by 1 each loop
}
don't forget to use linq
using System.Linq ;
这篇关于在数据表中删除列的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!