ラベルの作成 - Excel シートのデータの使用 - 特定の列の選択

ラベルの作成 - Excel シートのデータの使用 - 特定の列の選択

デスク スリップ (ラベル) を作成する必要があります。このデータは Excel シートで入手できます。列名は、RollNo、Subject、Venue of Exam (試験センター) です。

現在、私たちは を使用してデスク伝票を作成していますCSVtools。ラベルは次のようになります -

NAME OF EXAMINATION

Subject : xyz

Roll No. : 000000

このためには、試験会場別および科目別に複数の CSV データ シートを作成する必要があります。複数の CSV データ シートを作成せずに、試験会場別および科目別にラベルを作成する方法はありますか?

MWE:

\documentclass[a4paper,12pt]{article}

\usepackage{csvtools}
\usepackage[left=.5cm,right=.5cm,top=.5cm,bottom=.5cm]{geometry}
\usepackage{multicol}
\usepackage{xcolor}
\usepackage{filecontents}
\begin{filecontents*}{data.csv}
RollNo,Subject,Venue
022701,Sociology,Deptt. of Physics
022702,Sociology,Deptt. of Physics
022704,Sociology,Deptt. of Physics
022705,Sociology,Deptt. of Physics
022706,Sociology,Deptt. of Physics
022707,Sociology,Deptt. of Physics
022708,Sociology,Deptt. of Physics
022709,Sociology,Deptt. of Physics
022709,Sociology,Deptt. of Physics
022710,Sociology,Deptt. of Physics
023001,Psychology,Deptt. of Physics
023002,Psychology,Deptt. of Physics
023004,Psychology,Deptt. of Physics
023005,Psychology,Deptt. of Physics
023006,Psychology,Deptt. of Physics
023007,Psychology,Deptt. of Physics
023008,Psychology,Deptt. of Physics
023009,Psychology,Deptt. of Physics
023010,Psychology,Deptt. of Physics
\end{filecontents*}

\begin{document}

\applyCSVfile{data.csv}{% here put the name of the file
%\begin{multicols}{2}
\noindent\fbox{\parbox{6.3cm}{%
{\color{white}.}\\[7pt]
\centering{\LARGE UGC NET - 2014}\\[2pt]
\raggedright
{\Large Subject : \insertSubject}\\[5pt]
{\Large Roll No. : \textbf{0\insertRollNo}}\\[12pt]
}} % This is for parbox
%\end{multicols}
}% This is for CSV file


\end{document}

答え1

ここに、出発点として役立つコードがあります。これはパッケージを使用します。列に加えて、datatool短いキーを持つ列を追加しました。center

center,RollNo,Subject,Venue
Bangalore,022701,Sociology,Deptt. of Physics
Bangalore,022702,Sociology,Deptt. of Physics
Bangalore,022704,Sociology,Deptt. of Physics
Bangalore,022705,Sociology,Deptt. of Physics

4 列目では、必要に応じて完全な中心を指定できます。

\documentclass[a4paper,12pt]{article}
\usepackage[left=.5cm,right=.5cm,top=.5cm,bottom=.5cm]{geometry}
\usepackage{xcolor}
\usepackage{filecontents}
\begin{filecontents*}{data.csv}
center,RollNo,Subject,Venue
Bangalore,022701,Sociology,Deptt. of Physics
Bangalore,022702,Sociology,Deptt. of Physics
Bangalore,022704,Sociology,Deptt. of Physics
Bangalore,022705,Sociology,Deptt. of Physics
Bangalore,022706,Sociology,Deptt. of Physics
Bangalore,022707,Sociology,Deptt. of Physics
Bangalore,022708,Sociology,Deptt. of Physics
Bangalore,022709,Sociology,Deptt. of Physics
Bangalore,022709,Sociology,Deptt. of Physics
Bangalore,022710,Sociology,Deptt. of Physics
Mangalore,023001,Psychology,Deptt. of Physics
Mangalore,023002,Psychology,Deptt. of Physics
Mangalore,023004,Psychology,Deptt. of Physics
Mangalore,023005,Psychology,Deptt. of Physics
Mangalore,023006,Psychology,Deptt. of Physics
Mangalore,023007,Psychology,Deptt. of Physics
Mangalore,023008,Psychology,Deptt. of Physics
Mangalore,023009,Psychology,Deptt. of Physics
Mangalore,023010,Psychology,Deptt. of Physics
\end{filecontents*}

\usepackage{datatool}
\DTLloaddb{data}{data.csv}

\begin{document}
This is for Bangalore center

\DTLforeach*[\DTLisopenbetween{\center}{B}{C}]{data}{%
 \center=center,\roll=RollNo,\sub=Subject, \venue=Venue}{%
   \noindent\fbox{\parbox{6.3cm}{%
{\color{white}.}\\[7pt]
\centering{\LARGE UGC NET - 2014}\\[2pt]
\raggedright
{\Large Subject : \sub}\\[5pt]
{\Large Roll No. : \textbf{\roll}}\\[12pt]
}}\hfill % This is for parbox
}%

\clearpage
This is for Mangalore

\DTLforeach*[\DTLisopenbetween{\center}{M}{N}]{data}{%
 \center=center,\roll=RollNo,\sub=Subject, \venue=Venue}{%
   \noindent\fbox{\parbox{6.3cm}{%
{\color{white}.}\\[7pt]
\centering{\LARGE UGC NET - 2014}\\[2pt]
\raggedright
{\Large Subject : \sub}\\[5pt]
{\Large Roll No. : \textbf{\roll}}\\[12pt]
}}\hfill % This is for parbox
}%

\clearpage
This is for Sociology

\DTLforeach*[\DTLisopenbetween{\sub}{S}{T}]{data}{%
 \center=center,\roll=RollNo,\sub=Subject, \venue=Venue}{%
   \noindent\fbox{\parbox{6.3cm}{%
{\color{white}.}\\[7pt]
\centering{\LARGE UGC NET - 2014}\\[2pt]
\raggedright
{\Large Subject : \sub}\\[5pt]
{\Large Roll No. : \textbf{\roll}}\\[12pt]
}}\hfill % This is for parbox
}%

\clearpage
This is for  Psychology

\DTLforeach*[\DTLisopenbetween{\sub}{P}{Q}]{data}{%
 \center=center,\roll=RollNo,\sub=Subject, \venue=Venue}{%
   \noindent\fbox{\parbox{6.3cm}{%
{\color{white}.}\\[7pt]
\centering{\LARGE UGC NET - 2014}\\[2pt]
\raggedright
{\Large Subject : \sub}\\[5pt]
{\Large Roll No. : \textbf{\roll}}\\[12pt]
}}\hfill % This is for parbox
}%

\end{document}

ここに画像の説明を入力してください

大きな csv ファイルの場合、コンパイルが遅くなる可能性があることに注意してください。 を使用すると、ある程度は解決できます。pgfplotstableここでは、特定のセンターまたは主題に対して大きな単一のデータ ファイルをフィルター処理し、個別の csv ファイルをオンザフライで作成できます。 これらが作成されると、csvtoolsパッケージの方法を使用するか、 を使用してラベルを作成できますdatatool。 前のコードと同じ を使用するサンプル コードを次に示しますdata.csv

\documentclass[a4paper,12pt]{article}
\usepackage[left=.5cm,right=.5cm,top=.5cm,bottom=.5cm]{geometry}
\usepackage{xcolor}

\usepackage{pgfplotstable,xstring}
\pgfplotsset{compat=1.11}

\usepackage{datatool}

\pgfplotstableread[col sep=comma]{data.csv}\data
\begin{document}
%%----------------------------------------------------------subjectwise
%% following will filter all Psychology rows and save it as Psychology.csv
\pgfplotstablesave[col sep=comma,
    row predicate/.code={%
    \pgfplotstablegetelem{#1}{Subject}\of\data%
    \IfStrEq{\pgfplotsretval}{Psychology}{%True            %% >>imp<< Psychology is case sensitive, psychology won't work
    \relax}%
    {\pgfplotstableuserowfalse}%False
  }%
]
{\data}
{Psychology.csv}
%%----------------------------------------------------------
%% from here use datatool
\DTLloaddb{Psychology}{Psychology.csv}
\DTLforeach{Psychology}{%
 \center=center,\roll=RollNo,\sub=Subject, \venue=Venue}{%
   \noindent\fbox{\parbox{6.3cm}{%
{\color{white}.}\\[7pt]
\centering{\LARGE UGC NET - 2014}\\[2pt]
\raggedright
{\Large Subject : \sub}\\[5pt]
{\Large Roll No. : \textbf{\roll}}\\[12pt]
}}\hfill % This is for parbox
}%

\clearpage
%%---------------------------------------------------------- centerwise
%% following will filter all Bangalore rows and save it as bangalore.csv
\pgfplotstablesave[col sep=comma,
    row predicate/.code={%
    \pgfplotstablegetelem{#1}{center}\of\data%
    \IfStrEq{\pgfplotsretval}{Bangalore}{%True                       %% >>imp<< Bangalore is case sensitive
    \relax}%
    {\pgfplotstableuserowfalse}%False
  }%
]
{\data}
{bangalore.csv}
%%----------------------------------------------------------
%% from here use datatool/csvtools
\DTLloaddb{bangalore}{bangalore.csv}
\DTLforeach{bangalore}{%
 \center=center,\roll=RollNo,\sub=Subject, \venue=Venue}{%
   \noindent\fbox{\parbox{6.3cm}{%
{\color{white}.}\\[7pt]
\centering{\LARGE UGC NET - 2014}\\[2pt]
\raggedright
{\Large Subject : \sub}\\[5pt]
{\Large Roll No. : \textbf{\roll}}\\[12pt]
}}\hfill % This is for parbox
}%
\end{document}

関連情報