簡體   English   中英

如何基於特定列拆分excel文件

[英]How to split excel file based on Specific Column

我有像這樣的示例數據(在Excel中)

名稱放置A JKT B JKT C CGK D JKT E CGK F BBK G JKT H BBK I BBK J BBK K CGK L CGK

我已經獲得了包含數據的3個++文件,例如,步驟是,我必須首先將文件合並到1個excel文件中,而我已經組合的輸出必須根據Place拆分成許多excel文件。

例如:因為數據有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個地方,所以我不知道分割它的有效方法,因為如果我使用硬編碼模式,它將不是效率和難以閱讀。

Hardcode =為40個不同的地方定義變量,定義40個不同excel的excel.Application,並使用if為40 ++個不同的地方

預期結果(來自示例):第一個excel:JKT.xlsx

Name       Place
A          JKT
B          JKT
D          JKT

第二名:CGK.xlsx

Name       Place
C          CGK
E          CGK
K          CGK 

第3名excel:BBK.xlsx

Name       Place
F          BBK

任何幫助將不勝感激和語法修正

為什么不使用查詢? 讀取文件后,輸入ORDER BY語句。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM