How to read data from Excel sheet in Linux using Shell Script? [closed] How to read data from Excel sheet in Linux using Shell Script? [closed] unix unix

How to read data from Excel sheet in Linux using Shell Script? [closed]


xls2csv will get your xls file into a CSV format.

Pipe that to sed to remove the double-quotes.

Use while to iterate over each line.

echo each line (l) to awk to get the second ($2) column into the $d (for domain) variable.

Then send that to browser. You can replace lynx with your favorite browser. A GUI browser will work as easily as a TUI one.

xls2csv domains.xls | sed -e's/"//g' | while read l; do d=`echo "$l" | awk  '{print $2}'`; lynx "$d"; done


you can use samples: help1help2help3

you can use perl:

#!/usr/bin/perluse Spreadsheet::WriteExcel;my $workbook = Spreadsheet::WriteExcel->new("test.xls"); my $worksheet = $workbook->add_worksheet();open(FH,"<file") or die "Cannot open file: $!\n";my ($x,$y) = (0,0);while (<FH>){  chomp; @list = split /\s+/,$_; foreach my $c (@list){    $worksheet->write($x, $y++, $c);      } $x++;$y=0;}close(FH);$workbook->close();

and python as well:

#!/usr/local/bin/python# Tool to convert CSV files (with configurable delimiter and text wrap# character) to Excel spreadsheets.import stringimport sysimport getoptimport reimport osimport os.pathimport csvfrom pyExcelerator import *def usage():  """ Display the usage """  print "Usage:" + sys.argv[0] + " [OPTIONS] csvfile"  print "OPTIONS:"  print "--title|-t: If set, the first line is the title line"  print "--lines|-l n: Split output into files of n lines or less each"  print "--sep|-s c [def:,] : The character to use for field delimiter"  print "--output|o : output file name/pattern"  print "--help|h : print this information"  sys.exit(2)def openExcelSheet(outputFileName):  """ Opens a reference to an Excel WorkBook and Worksheet objects """  workbook = Workbook()  worksheet = workbook.add_sheet("Sheet 1")  return workbook, worksheetdef writeExcelHeader(worksheet, titleCols):  """ Write the header line into the worksheet """  cno = 0  for titleCol in titleCols:    worksheet.write(0, cno, titleCol)    cno = cno + 1def writeExcelRow(worksheet, lno, columns):  """ Write a non-header row into the worksheet """  cno = 0  for column in columns:    worksheet.write(lno, cno, column)    cno = cno + 1def closeExcelSheet(workbook, outputFileName):  """ Saves the in-memory WorkBook object into the specified file """  workbook.save(outputFileName)def getDefaultOutputFileName(inputFileName):  """ Returns the name of the default output file based on the value      of the input file. The default output file is always created in      the current working directory. This can be overriden using the      -o or --output option to explicitly specify an output file """  baseName = os.path.basename(inputFileName)  rootName = os.path.splitext(baseName)[0]  return string.join([rootName, "xls"], '.')def renameOutputFile(outputFileName, fno):  """ Renames the output file name by appending the current file number      to it """  dirName, baseName = os.path.split(outputFileName)  rootName, extName = os.path.splitext(baseName)  backupFileBaseName = string.join([string.join([rootName, str(fno)], '-'), extName], '')  backupFileName = os.path.join(dirName, backupFileBaseName)  try:    os.rename(outputFileName, backupFileName)  except OSError:    print "Error renaming output file:", outputFileName, "to", backupFileName, "...aborting"    sys.exit(-1)def validateOpts(opts):  """ Returns option values specified, or the default if none """  titlePresent = False  linesPerFile = -1  outputFileName = ""  sepChar = ","  for option, argval in opts:    if (option in ("-t", "--title")):      titlePresent = True    if (option in ("-l", "--lines")):      linesPerFile = int(argval)    if (option in ("-s", "--sep")):      sepChar = argval    if (option in ("-o", "--output")):      outputFileName = argval    if (option in ("-h", "--help")):      usage()  return titlePresent, linesPerFile, sepChar, outputFileNamedef main():  """ This is how we are called """  try:    opts,args = getopt.getopt(sys.argv[1:], "tl:s:o:h", ["title", "lines=", "sep=", "output=", "help"])  except getopt.GetoptError:    usage()  if (len(args) != 1):    usage()  inputFileName = args[0]  try:    inputFile = open(inputFileName, 'r')  except IOError:    print "File not found:", inputFileName, "...aborting"    sys.exit(-1)  titlePresent, linesPerFile, sepChar, outputFileName = validateOpts(opts)  if (outputFileName == ""):    outputFileName = getDefaultOutputFileName(inputFileName)  workbook, worksheet = openExcelSheet(outputFileName)  fno = 0  lno = 0  titleCols = []  reader = csv.reader(inputFile, delimiter=sepChar)  for line in reader:    if (lno == 0 and titlePresent):      if (len(titleCols) == 0):        titleCols = line      writeExcelHeader(worksheet, titleCols)    else:      writeExcelRow(worksheet, lno, line)    lno = lno + 1    if (linesPerFile != -1 and lno >= linesPerFile):      closeExcelSheet(workbook, outputFileName)      renameOutputFile(outputFileName, fno)      fno = fno + 1      lno = 0      workbook, worksheet = openExcelSheet(outputFileName)  inputFile.close()  closeExcelSheet(workbook, outputFileName)  if (fno > 0):    renameOutputFile(outputFileName, fno)if __name__ == "__main__":  main()