我从Excel工作表创建了一个数据表。我运行了一些linq查询,并在新工作表中填充了所需的列。我需要帮助根据日期列填写行。它必须是动态的,因为日期会更改并且ID可能会更改。
我有一个Excel表格,其中包含这样的数据
L ID | Date | Other | Columns |
D123 1/24/2018
D456 1/25/2018
D678 1/26/2018
D910 1/25/2018
我正在尝试创建看起来像这样的输出。
L ID 1/24/2018 1/25/2018 1/26/2018
D123 1
D456 1
D678 1
D910 1
我做了一些代码,选择了所需的数据,然后在Excel工作表中填充了日期列和ID列。
public List<DateTime?> GetTurnOverDates(System.Data.DataTable dt3)
{
List<DateTime?> TurnOverDateList = dt3.AsEnumerable().Select(r => r.Field<DateTime?>("Turnover")).Distinct().OrderBy(x => x).Where(x => x >= DateTime.Today.AddDays(-1)).ToList();
return TurnOverDateList;
public List<String> GetLIDList(System.Data.DataTable dt3, List<DateTime?> list)
{
List<String> LIDList = dt3.AsEnumerable().Where(r => list.Contains(r.Field<DateTime?>("Turnover"))).Select(r => r.Field<String>("LID")).ToList();
return LidList;
}
public void CreateTurnoverWS(String Path, List<DateTime?> DateList, List<String> LidList)
{
int rw = 0;
int c1 = 0;
Excel.Application xlsApp;
Excel.Workbook xlsWorkbook;
Excel.Range range;
xlsApp = new Excel.Application();
xlsWorkbook = xlsApp.Workbooks.Open(Path);
Excel.Sheets xlsworksheets = xlsWorkbook.Worksheets;
var xlsNewSheet = (Excel.Worksheet)xlsworksheets.Add(xlsworksheets[1], Type.Missing, Type.Missing, Type.Missing);
xlsNewSheet.Name = "Turnover";
xlsNewSheet.Cells[1, 3] = "L ID";
xlsNewSheet = (Excel.Worksheet)xlsWorkbook.Worksheets.get_Item(1);
xlsNewSheet.Select();
range = xlsNewSheet.UsedRange;
rw = range.Rows.Count;
c1 = range.Columns.Count;
for (int cCnt = 1; cCnt < DateList.Count(); cCnt++)
{
xlsNewSheet.Cells[1, c1++] = DateList[cCnt];
}
for (int ccnt2 = 0; ccnt2 < LidList.Count(); ccnt2++)
{
xlsNewSheet.Cells[rw++, 3] = LidList[ccnt2];
}
xlsWorkbook.Save();
xlsWorkbook.Close();
}
}
所以到目前为止,我基本上已经在excel表中有了它。
L ID 1/24/2018 1/25/2018 1/26/2018
D123
D456
D678
D910
我正在研究数据透视表,但不确定是否可以使用。我有从excel到数据表的数据,选择某些数据然后将其放入新的工作表中。请指教。谢谢。