我有这样的示例数据(在Excel中)
名称地点 JKT B JKT C CGK 杰克特 电子CGK 步步高 G JKT 步步高 我步步高 步步高 ķCGK L CGK
我已经得到了包含示例数据的3 ++文件,步骤是,我必须先将文件合并为1个excel文件,然后我已经合并的输出必须拆分为许多基于excel文件的文件就地。
Ex:该数据中有3个不同的位置,因此它将为JKT,CGK和BBK创建3个不同的文件
我尝试合并的代码
xlApp = new excel.Application();
xlWb = xlApp.Workbooks.Open(fileName);
xlWs = xlWb.Sheets[1];
xlRange = xlWs.UsedRange;
row = xlRange.Rows.Count;
col = xlRange.Columns.Count;
fulldata = new string[row][];
for (int i = 0; i < fulldata.Length; i++)
{
fulldata[i] = new string[col];
//MessageBox.Show(i.ToString());
}
for (int i = 0; i < row; i++)
{
for (int j = 0; j < col; j++)
{
try
{
fulldata[i][j] = xlWs.Cells[i + 1, j + 1].value2.ToString();
}
catch (Exception ee)
{
fulldata[i][j] = "";
}
}
}
//create new excel file for combined data
xlApp1 = new excel.Application();
xlWb1 = xlApp1.Workbooks.Add();
xlWs1 = (excel.Worksheet)xlWb1.Worksheets.get_Item(1);
xlRange1 = xlWs1.UsedRange;
newFileRow = xlRange1.Rows.Count;
newFileCol = xlRange1.Columns.Count;
//Combine
if (newFileRow == 1)
{
for (int i = 0; i < row; i++)
{
for (int j = 0; j < col; j++)
{
xlWs1.Cells[i + 1, j + 1] = fulldata[i][j];
}
}
}
else
{
for (int i = newFileRow+1; i < row + newFileRow; i++)
{
for (int j = 0; j < col; j++)
{
xlWs1.Cells[i, j + 1] = fulldata[count][j];
count++;
}
}
}
//Split ExcelFile
for (int i = 0; i < row; i++)
{
for (int j = 0; j < col; j++)
{
//insertcode here
}
}
问题是,数据有40多个Place,所以我不知道分割数据的有效方法,因为如果我使用硬编码模式,它将不会高效且难以读取。
Hardcode =定义40个不同位置的变量,定义excel.40个不同excel的应用程序,如果40个以上++不同的位置则使用
预期结果(来自示例): 1st excel:JKT.xlsx
Name Place
A JKT
B JKT
D JKT
第二个excel:CGK.xlsx
Name Place
C CGK
E CGK
K CGK
第三个excel:BBK.xlsx
Name Place
F BBK
我们将不胜感激,并且会提供语法纠正
答案 0 :(得分:0)
为什么不使用查询?读取文件后,放入ORDER BY
语句。
SqlCommand cmd = "SELECT NAME, PLACE FROM namaTabel ORDER BY PLACE ASC";
cmd.fulldata();