如何根据特定列拆分Excel文件

时间:2019-06-17 01:54:46

标签: c# excel

我有这样的示例数据(在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

我们将不胜感激,并且会提供语法纠正

1 个答案:

答案 0 :(得分:0)

为什么不使用查询?读取文件后,放入ORDER BY语句。

SqlCommand cmd = "SELECT NAME, PLACE FROM namaTabel ORDER BY PLACE ASC"; 
cmd.fulldata();