Пример #1
0
##############################################################################
#
# A simple program to write some dates and times to an Excel file
# using the XlsxWriter Python module.
#
# Copyright 2013, John McNamara, [email protected]
#
from datetime import datetime
from xlsxwriter.workbook import Workbook

# Create a workbook and add a worksheet.
workbook = Workbook('datetimes.xlsx')
worksheet = workbook.add_worksheet()
bold = workbook.add_format({'bold': True})

# Expand the first columns so that the date is visible.
worksheet.set_column('A:B', 30)

# Write the column headers.
worksheet.write('A1', 'Formatted date', bold)
worksheet.write('B1', 'Format', bold)

# Create a datetime object to use in the examples.

date_time = datetime.strptime('2013-01-23 12:30:05.123',
                              '%Y-%m-%d %H:%M:%S.%f')

# Examples date and time formats. In the output file compare how changing
# the format codes change the appearance of the date.
date_formats = (
    'dd/mm/yy',
Пример #2
0
def generatexlsheet(request):
    """
    to generate Course List of Registered Students

    @param:
        request - contains metadata about the requested page

    @variables:
        f_key -
        idd - Dictionary value of post data year
        course_id - Course object according to idd
        obj - Registration object of the year in idd
        ans - Formatted Array to be converted to xlsx
        k -temporary array to add data to formatted array/variable
        output - io Bytes object to write to xlsx file
        book - workbook of xlsx file
        title - formatting variable of title the workbook
        subtitle - formatting variable of subtitle the workbook
        normaltext - formatting variable for normal text
        sheet - xlsx sheet to be rendered
        titletext - formatting variable of title text
        dep - temporary variables
        z - temporary variables for final output
        b - temporary variables for final output
        c - temporary variables for final output
        st - temporary variables for final output
    """
    idd = str(request.POST['year'])
    f_key = Course.objects.get(course_name=str(idd))
    course_id = str(f_key.course_id)
    obj = Register.objects.all().filter(course_id=f_key)
    ans = []
    for i in obj:
        k = []
        k.append(i.student_id.id.id)
        k.append(i.student_id.id.user.first_name)
        k.append(i.student_id.id.user.last_name)
        k.append(i.student_id.id.department)
        ans.append(k)
    ans.sort()
    import io
    output = io.BytesIO()
    from xlsxwriter.workbook import Workbook

    book = Workbook(output, {'in_memory': True})
    title = book.add_format({
        'bold': True,
        'font_size': 22,
        'align': 'center',
        'valign': 'vcenter'
    })
    subtitle = book.add_format({
        'bold': True,
        'font_size': 15,
        'align': 'center',
        'valign': 'vcenter'
    })
    normaltext = book.add_format({
        'bold': False,
        'font_size': 15,
        'align': 'center',
        'valign': 'vcenter'
    })
    sheet = book.add_worksheet()

    title_text = ((str(course_id) + " : " + str(str(idd))))
    #width = len(title_text)
    sheet.set_default_row(25)

    sheet.merge_range('A2:E2', title_text, title)
    sheet.write_string('A3', "Sl. No", subtitle)
    sheet.write_string('B3', "Roll No", subtitle)
    sheet.write_string('C3', "Name", subtitle)
    sheet.write_string('D3', "Discipline", subtitle)
    sheet.write_string('E3', 'Signature', subtitle)
    sheet.set_column('A:A', 20)
    sheet.set_column('B:B', 20)
    sheet.set_column('C:C', 60)
    sheet.set_column('D:D', 15)
    sheet.set_column('E:E', 30)
    k = 4
    num = 1
    for i in ans:
        sheet.write_number('A' + str(k), num, normaltext)
        num += 1
        z, b, c = str(i[0]), i[1], i[2]
        name = str(b) + " " + str(c)
        temp = str(i[3]).split()
        dep = str(temp[len(temp) - 1])
        sheet.write_string('B' + str(k), z, normaltext)
        sheet.write_string('C' + str(k), name, normaltext)
        sheet.write_string('D' + str(k), dep, normaltext)
        k += 1
    book.close()
    output.seek(0)
    response = HttpResponse(output.read(),
                            content_type='application/vnd.ms-excel')
    st = 'attachment; filename = ' + course_id + '.xlsx'
    response['Content-Disposition'] = st
    return response
Пример #3
0
def get_factor_excel_file(request, id):
    # create io file
    output = io.BytesIO()
    # get factor
    this_factor = get_object_or_404(Factor, ID=id)
    # create xlsx
    workbook = Workbook(output, {'in_memory': True})
    worksheet = workbook.add_worksheet(this_factor.FactorNumber)
    # set row
    row = 0
    # set factor filed
    worksheet.write(row, 0, 'شماره سریال')
    worksheet.write(row, 1, 'تاریخ خرید')
    worksheet.write(row, 2, 'کل هزینه')
    worksheet.write(row, 3, 'هزینه پست')
    worksheet.write(row, 4, 'میزان تخفیف')
    worksheet.write(row, 5, 'نوع تخفیف')
    worksheet.write(row, 6, 'وضعیت صورت حساب')
    worksheet.write(row, 7, 'نوع پرداخت')
    worksheet.write(row, 8, 'توضیحات')
    # set factor data
    row += 1
    worksheet.write(row, 0, this_factor.FactorNumber)
    worksheet.write(
        row, 1,
        str(
            jdatetime.date.fromgregorian(
                day=this_factor.OrderDate.date().day,
                month=this_factor.OrderDate.date().month,
                year=this_factor.OrderDate.date().year)))
    worksheet.write(row, 2, this_factor.TotalPrice)
    worksheet.write(row, 3, this_factor.PostPrice)
    worksheet.write(row, 4, this_factor.DiscountRate)
    worksheet.write(row, 5, this_factor.get_coupon_status())
    worksheet.write(row, 6, this_factor.get_factor_status())
    worksheet.write(row, 7, this_factor.get_factor_payment_type())
    worksheet.write(row, 8, this_factor.Description)
    # set user filed
    row += 2
    worksheet.write(row, 0, 'نام خریدار')
    worksheet.write(row, 1, 'موبایل')
    worksheet.write(row, 2, 'کد پستی')
    worksheet.write(row, 3, 'پیش شماره شهر')
    worksheet.write(row, 4, 'شماره ثابت')
    worksheet.write(row, 5, 'استان')
    worksheet.write(row, 6, 'شهرستان')
    worksheet.write(row, 7, 'شهر')
    worksheet.write(row, 8, 'آدرس')
    # set user data
    row += 1
    worksheet.write(
        row, 0,
        this_factor.FK_User.first_name + ' ' + this_factor.FK_User.last_name)
    worksheet.write(row, 1, this_factor.MobileNumber)
    worksheet.write(row, 2, this_factor.ZipCode)
    worksheet.write(row, 3, this_factor.CityPerCode)
    worksheet.write(row, 4, this_factor.PhoneNumber)
    worksheet.write(row, 5, this_factor.State)
    worksheet.write(row, 6, this_factor.BigCity)
    worksheet.write(row, 7, this_factor.City)
    worksheet.write(row, 8, this_factor.Address)
    # set product filed
    row += 2
    worksheet.write(row, 0, 'نام محصول')
    worksheet.write(row, 1, 'قیمت')
    worksheet.write(row, 2, 'تعداد')
    worksheet.write(row, 3, 'نام حجره')
    worksheet.write(row, 4, 'مدیریت حجره')
    # set product data
    row += 1
    for item in this_factor.FK_FactorPost.all():
        worksheet.write(row, 0, item.FK_Product.Title)
        worksheet.write(row, 1, item.FK_Product.Price)
        worksheet.write(row, 2, item.ProductCount)
        worksheet.write(row, 3, item.FK_Product.FK_Shop.Title)
        worksheet.write(
            row, 4, item.FK_Product.FK_Shop.FK_ShopManager.first_name + ' ' +
            item.FK_Product.FK_Shop.FK_ShopManager.last_name)
        row += 1

    workbook.close()

    output.seek(0)

    response = HttpResponse(
        output.read(),
        content_type=
        "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet")
    response['Content-Disposition'] = "attachment; filename = " + str(
        this_factor.FactorNumber) + ".xlsx"

    output.close()

    return response
Пример #4
0
def export(request, schema_id):
    """ 
        Generate a XLSX file for download
    """

    # Query for schema
    schema = get_object_or_404(Schema, random_id=schema_id)

    single_tab = request.GET.get('singleTab')

    try:

        # Generate output string
        output = StringIO.StringIO()

        # Create workbook
        book = Workbook(output, {'in_memory': True})

        # Set up bold format
        bold = book.add_format({'bold': True})

        # List of unique names, as 31 characters is the limit for an object
        # and the worksheets names must be unique
        unique_names = []
        unique_count = 1

        # This puts the objects on different worksheets
        if not single_tab:

            # create a sheet for each object
            for obj in schema.sorted_objects_api():

                # strip api name
                api_name = obj.api_name[:29]

                # If the name exists
                if api_name in unique_names:

                    # Add count integer to name
                    api_name_unique = api_name + str(unique_count)

                    unique_count += 1

                else:
                    api_name_unique = api_name

                # add name to list
                unique_names.append(api_name)

                # Create sheet
                sheet = book.add_worksheet(api_name_unique)

                # Write column headers
                sheet.write(0, 0, 'Field Label', bold)
                sheet.write(0, 1, 'API Name', bold)
                sheet.write(0, 2, 'Type', bold)
                sheet.write(0, 3, 'Help Text', bold)
                sheet.write(0, 4, 'Formula', bold)

                # If the usage needs to be included, add the columns
                if schema.include_field_usage:
                    sheet.write(0, 5, 'Field Usage', bold)

                # Iterate over fields in object
                for index, field in enumerate(obj.sorted_fields()):

                    # Set start row
                    row = index + 1

                    # Write fields to row
                    sheet.write(row, 0, field.label)
                    sheet.write(row, 1, field.api_name)
                    sheet.write(row, 2, field.data_type)
                    sheet.write(row, 3, field.help_text)
                    sheet.write(row, 4, field.formula)

                    if schema.include_field_usage:
                        sheet.write(row, 5, field.field_usage_display_text)

        # This puts all fields on the one worksheet
        else:

            # Create sheet
            sheet = book.add_worksheet('Schema')

            # Write column headers
            sheet.write(0, 0, 'Object', bold)
            sheet.write(0, 1, 'Field Label', bold)
            sheet.write(0, 2, 'API Name', bold)
            sheet.write(0, 3, 'Type', bold)
            sheet.write(0, 4, 'Help Text', bold)
            sheet.write(0, 5, 'Formula', bold)

            # If the usage needs to be included, add the columns
            if schema.include_field_usage:
                sheet.write(0, 6, 'Field Usage', bold)

            # Set start row
            row = 1

            # create a sheet for each object
            for obj in schema.sorted_objects_api():

                # Iterate over fields in object
                for index, field in enumerate(obj.sorted_fields()):

                    # Write fields to row
                    sheet.write(row, 0, obj.api_name)
                    sheet.write(row, 1, field.label)
                    sheet.write(row, 2, field.api_name)
                    sheet.write(row, 3, field.data_type)
                    sheet.write(row, 4, field.help_text)
                    sheet.write(row, 5, field.formula)

                    if schema.include_field_usage:
                        sheet.write(row, 6, field.field_usage_display_text)

                    row += 1

        # Close the book
        book.close()

        # construct response
        output.seek(0)
        response = HttpResponse(
            output.read(),
            content_type=
            "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"
        )
        response[
            'Content-Disposition'] = "attachment; filename=schema_%s.xlsx" % schema.org_id

        return response

    except Exception as ex:

        return HttpResponse(ex)
        outfile.write(res_str)
    res_str = "\n"
    student_name = student_details[1][0][7:]
    student_roll = student_details[1][1][11:]
    res_str += student_roll + "," + student_name + ","
    for i in range(1, len(data) - 1):
        res_str += data[i][2] + ","
    sgpa_odd = sem_marks[0][0][42:]
    res_str += (sgpa_odd)
    outfile.write(res_str)
    print("Retrieved " + str(counter + 1) + " out of " + str(c) +
          " roll numbers successfully.")
    counter += 1
outfile.close()
if fileextension == ".xlsx" or fileextension == ".XLSX":
    workbook = Workbook(filename + fileextension, {'strings_to_numbers': True})
    c = workbook.add_format({'font_name': 'Segoe UI', 'align': 'center'})
    b = workbook.add_format({
        'font_name': 'Segoe UI',
        'align': 'center',
        'bold': True
    })
    g = workbook.add_format({
        'color': 'green',
        'font_name': 'Segoe UI',
        'align': 'center',
        'bold': True
    })
    n = workbook.add_format({
        'color': 'red',
        'font_name': 'Segoe UI',
Пример #6
0
import sys
from xlsxwriter.workbook import Workbook

# Add some command-line logic to read the file names.

for tsv_file in sys.argv[1:]:

    #tsv_file = sys.argv[1]
    print(tsv_file)

    ain = tsv_file.split(".")
    ain[-1] = "xlsx"
    xlsx_file = ".".join(ain)

    # Create an XlsxWriter workbook object and add a worksheet.
    workbook = Workbook(xlsx_file)
    worksheet = workbook.add_worksheet()

    # Create a TSV file reader.
    tsv_reader = csv.reader(open(tsv_file, 'rt'), delimiter="\t")

    # Read the row data from the TSV file and write it to the XLSX file.
    for row, data in enumerate(tsv_reader):

        ndata = []
        for x in data:
            try:
                y = float(x)
                ndata.append(y)
            except:
                ndata.append(x)
Пример #7
0
##############################################################################
#
# A simple formatting example using XlsxWriter.
#
# This program demonstrates the indentation cell format.
#
# Copyright 2013, John McNamara, [email protected]
#
from xlsxwriter.workbook import Workbook

workbook = Workbook('cell_indentation.xlsx')

worksheet = workbook.add_worksheet()

indent1 = workbook.add_format({'indent': 1})
indent2 = workbook.add_format({'indent': 2})

worksheet.set_column('A:A', 40)

worksheet.write('A1', "This text is indented 1 level", indent1)
worksheet.write('A2', "This text is indented 2 levels", indent2)

workbook.close()
Пример #8
0
    def get_excel(self):
        import io
        from xlsxwriter.workbook import Workbook

        try:
            direccion = self.env['main.parameter.hr'].search(
                [])[0].dir_create_file
        except:
            raise UserError(
                'Falta configurar un directorio de descargas en el menu Configuracion/Parametros/Directorio de Descarga'
            )
        workbook = Workbook(direccion + 'prestamos.xlsx')

        boldbord = workbook.add_format({'bold': True})
        boldbord.set_border(style=2)
        boldbord.set_align('center')
        boldbord.set_align('vcenter')
        boldbord.set_text_wrap()
        boldbord.set_font_size(10)
        boldbord.set_bg_color('#DCE6F1')
        boldbord.set_font_name('Times New Roman')

        especial1 = workbook.add_format()
        especial1.set_align('center')
        especial1.set_align('vcenter')
        especial1.set_border(style=1)
        especial1.set_text_wrap()
        especial1.set_font_size(10)
        especial1.set_font_name('Times New Roman')

        especial3 = workbook.add_format({'bold': True})
        especial3.set_align('center')
        especial3.set_align('vcenter')
        especial3.set_border(style=1)
        especial3.set_text_wrap()
        especial3.set_bg_color('#DCE6F1')
        especial3.set_font_size(15)
        especial3.set_font_name('Times New Roman')

        numberdos = workbook.add_format({'num_format': '0'})
        numberdos.set_border(style=1)
        numberdos.set_font_size(10)
        numberdos.set_font_name('Times New Roman')

        dateformat = workbook.add_format({'num_format': 'd-m-yyyy'})
        dateformat.set_border(style=1)
        dateformat.set_font_size(10)
        dateformat.set_font_name('Times New Roman')

        hourformat = workbook.add_format({'num_format': 'hh:mm'})
        hourformat.set_align('center')
        hourformat.set_align('vcenter')
        hourformat.set_border(style=1)
        hourformat.set_font_size(10)
        hourformat.set_font_name('Times New Roman')

        import sys
        reload(sys)
        sys.setdefaultencoding('iso-8859-1')

        ##########ASISTENCIAS############
        worksheet = workbook.add_worksheet("PRESTAMOS")
        worksheet.set_tab_color('blue')

        worksheet.merge_range(
            1, 0, 1, 4,
            "PRESTAMO %s %s" % (self.employee_id.name_related, self.date),
            especial3)
        worksheet.write(3, 0, "Empleado", boldbord)
        worksheet.merge_range(3, 1, 3, 2, self.employee_id.name_related,
                              especial1)
        worksheet.write(3, 3, "Fecha de Prestamo", boldbord)
        worksheet.write(3, 4, self.date, especial1)
        worksheet.write(5, 0, "Tipo de Prestamo", boldbord)
        worksheet.merge_range(5, 1, 5, 2, self.loan_type_id.name, especial1)
        worksheet.write(5, 3, "Numero de Cuotas", boldbord)
        worksheet.write(5, 4, self.fees_number, especial1)

        x = 7
        worksheet.write(x, 0, "CUOTA", boldbord)
        worksheet.write(x, 1, "MONTO", boldbord)
        worksheet.write(x, 2, "FECHA DE PAGO", boldbord)
        worksheet.write(x, 3, "DEUDA POR PAGAR", boldbord)
        worksheet.write(x, 4, "VALIDACION", boldbord)
        x = 8

        for line in self.line_ids:
            worksheet.write(x, 0, line.fee if line.fee else 0, numberdos)
            worksheet.write(x, 1, line.amount if line.amount else 0, numberdos)
            worksheet.write(x, 2, line.date if line.date else '', especial1)
            worksheet.write(x, 3, line.debt if line.debt else 0, numberdos)
            worksheet.write(
                x, 4,
                dict(line._fields['validation'].selection).get(line.validation)
                if line.validation else '', especial1)
            x += 1

        tam_col = [12, 12, 12, 12, 12, 12]

        worksheet.set_column('A:A', tam_col[0])
        worksheet.set_column('B:B', tam_col[1])
        worksheet.set_column('C:C', tam_col[2])
        worksheet.set_column('D:D', tam_col[3])
        worksheet.set_column('E:E', tam_col[4])
        worksheet.set_column('F:F', tam_col[5])

        workbook.close()

        f = open(direccion + 'prestamos.xlsx', 'rb')

        vals = {
            'output_name': 'Prestamo - %s.xlsx' % (self.date),
            'output_file': base64.encodestring(''.join(f.readlines())),
        }

        sfs_id = self.env['planilla.export.file'].create(vals)

        return {
            "type": "ir.actions.act_window",
            "res_model": "planilla.export.file",
            "views": [[False, "form"]],
            "res_id": sfs_id.id,
            "target": "new",
        }
Пример #9
0
def sage_xlsx(request, sage_batch_ref):

    # Write to Excel
    output = io.BytesIO()

    workbook = Workbook(output, {'in_memory': True, 'remove_timezone': True})
    worksheet = workbook.add_worksheet()
    header = workbook.add_format({'bold': True})
    header.set_bg_color('#F2F2F2')
    header_a = workbook.add_format({'bold': True})
    header_a.set_bg_color('#F2F2F2')
    header_a.set_align('center')
    header_b = workbook.add_format({'bold': True})
    header_b.set_bg_color('#F2F2F2')
    header_b.set_align('right')
    date = workbook.add_format({'num_format': 'dd/mm/yyyy'})
    date.set_align('center')
    money = workbook.add_format({'num_format': '£#,##0.00'})
    money.set_align('right')
    center = workbook.add_format()
    center.set_align('center')
    italic_right = workbook.add_format()
    italic_right.set_align('right')
    italic_right.set_italic()
    italic_center = workbook.add_format()
    italic_center.set_align('center')
    italic_center.set_italic()

    worksheet.set_column('A:A', 14)
    worksheet.set_column('B:B', 20)
    worksheet.set_column('C:C', 20)
    worksheet.set_column('D:D', 20)
    worksheet.set_column('E:E', 14)
    worksheet.set_column('F:F', 14)
    worksheet.set_column('G:G', 30)
    worksheet.set_column('H:H', 14)
    worksheet.set_column('I:I', 14)
    worksheet.set_column('J:J', 14)
    worksheet.set_column('K:K', 14)
    worksheet.set_column('L:L', 14)
    worksheet.set_column('M:M', 14)
    worksheet.set_column('N:N', 14)
    worksheet.set_column('O:O', 14)

    # Write Header
    worksheet.write(0, 0, 'Type', header_a)
    worksheet.write(0, 1, 'Account Reference', header_a)
    worksheet.write(0, 2, 'Nominal A/C Ref', header_a)
    worksheet.write(0, 3, 'Department Code', header_a)
    worksheet.write(0, 4, 'Date', header_a)
    worksheet.write(0, 5, 'Reference', header_a)
    worksheet.write(0, 6, 'Details', header_a)
    worksheet.write(0, 7, 'Net Amount', header_a)
    worksheet.write(0, 8, 'Tax Code', header_a)
    worksheet.write(0, 9, 'Tax Amount', header_a)
    worksheet.write(0, 10, 'Exchange Rate', header_a)
    worksheet.write(0, 11, 'Extra Reference', header_a)
    worksheet.write(0, 12, 'User Name', header_a)
    worksheet.write(0, 13, 'Project Refn', header_a)
    worksheet.write(0, 14, 'Cost Code Refn', header_a)

    n = 0
    val_summary = 0

    recs = SageBatchDetails.objects.filter(
        sage_batch_ref_id=sage_batch_ref).order_by('-id')
    transactions_for_batch_total = SageBatchTransactions.objects.filter(
        sage_batch_ref_id=sage_batch_ref,
        transactionsourceid__in=['GO1', 'GO3'],
        remove=0).aggregate(Sum('sage_batch_netpayment'))
    wip_transactions_for_batch = transactions_for_batch_total[
        "sage_batch_netpayment__sum"]

    sagebatchheader = SageBatchHeaders.objects.get(
        sage_batch_ref=sage_batch_ref)
    date = sagebatchheader.sage_batch_date.strftime('%d/%m/%Y')
    transaction_total = 0

    for transaction in recs:
        n += 1
        # val_summary += transaction.transnetpayment
        if transaction.transactionsourceid == 'SP1' or transaction.transactionsourceid == 'SP2' or transaction.transactionsourceid == 'SP3'\
                or transaction.transactionsourceid == 'GO1' or transaction.transactionsourceid == 'GO3':
            worksheet.write(n, 0, 'JC', center)
            worksheet.write(n, 1, '', italic_center)
            worksheet.write(n, 2, transaction.nominal_account_ref)
            worksheet.write(n, 3, '0')
            worksheet.write(n, 4, '')
            worksheet.write(n, 4, date)
            worksheet.write(n, 5, '')
            worksheet.write(n, 6, transaction.account_reference, center)
            worksheet.write(n, 7, transaction.batch_detail_total, money)
            worksheet.write(n, 8, transaction.tax_code, center)
            if transaction.tax_code == 'T1':
                transaction_wip = (transaction.batch_detail_total
                                   or 0) * decimal.Decimal(0.2)
                worksheet.write(n, 9, transaction_wip, money)
                transaction_total = transaction_total + transaction_wip
            else:
                worksheet.write(n, 9, 0.00, money)
    if wip_transactions_for_batch:
        n += 1
        worksheet.write(n, 0, 'JD', center)
        worksheet.write(n, 1, '', italic_center)
        worksheet.write(n, 2, 'XXXX')
        worksheet.write(n, 3, '0')
        worksheet.write(n, 4, '')
        worksheet.write(n, 4, date)
        worksheet.write(n, 5, '')
        worksheet.write(n, 6, 'DD Call Debtor Control (XXXX)', center)
        worksheet.write(n, 7, wip_transactions_for_batch, money)
        worksheet.write(n, 8, '', center)
        worksheet.write(n, 9, transaction_total, money)
        # worksheet.write(n, 9, '=SUM(J2:J'+str(n)+')')
        # if transaction.tax_code != 'T1':
        #     worksheet.write(n, 8, transaction.batch_detail_total*decimal(0.2), center)
        # else:
        #     worksheet.write(n, 8, '0.00', money)

    workbook.close()
    output.seek(0)

    filename = 'Sage Export '+ sage_batch_ref +' @ {date:%Y-%m-%d}.xlsx'\
                                                .format(date=datetime.datetime.now())

    response = HttpResponse(
        output.read(),
        content_type=
        "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet")
    response['Content-Disposition'] = "attachment; filename=%s" % filename
    output.close()
    return response
Пример #10
0
import sqlite3
from xlsxwriter.workbook import Workbook

workbook = Workbook('Список студентов.xlsx')  # Открытие и запись в файл
worksheet = workbook.add_worksheet()

conn = sqlite3.connect('students.db')  # Подключение к БД
c = conn.cursor()
c.execute("SELECT * FROM students")

print('Выберите направление работы:')
vib = int(
    input('''1 - Научное студенческое общество;
2 - Социальная поддержка;
3 - Спорт;
4 - Культура и творчество;
5 - Штаб трудовых дел. \n'''))  # Выбор вида работ

if vib == 1:
    mysel = c.execute(
        "SELECT * FROM students WHERE direction_of_work='Научное студенческое общество'"
    )

elif vib == 2:
    mysel = c.execute(
        "SELECT * FROM students WHERE direction_of_work='Социальная поддержка'"
    )

elif vib == 3:
    mysel = c.execute("SELECT * FROM students WHERE direction_of_work='Спорт'")
    def do_rebuild(self):
        self.env.cr.execute(
            """  DROP VIEW IF EXISTS saldo_comprobante_empresa;
			create or replace view saldo_comprobante_empresa as (

select t1.id as id, ap.name as periodo,t3.nro_documento as ruc,t3.name as empresa,t4.code as code,t4.name as descripcion,
CASE WHEN t5.type= 'payable' THEN 'A pagar'  ELSE 'A cobrar' END as tipo_cuenta
,t_debe as debe,t_haber as haber, CASE WHEN abs(t_debe-t_haber) < 0.01 then 0 else t_debe-t_haber end as saldo  from ( 
select min(aml.id) as id, concat(aml.partner_id,'-',aml.account_id) as identificador,sum(aml.debit) as t_debe,sum(aml.credit) as t_haber from account_move_line aml
inner join account_move am on am.id = aml.move_id
inner join account_period api on api.date_start <= am.fecha_contable and api.date_stop  >= am.fecha_contable and am.fecha_special = api.special
inner join account_account aa on aa.id = aml.account_id
left join account_account_type aat on aat.id = aa.user_type_id
where (aat.type='receivable' or aat.type='payable' ) -- and aa.reconcile = true 
and periodo_num(api.code) >= periodo_num('""" + str(self.periodo_ini.code) +
            """') and periodo_num(api.code) <= periodo_num('""" +
            str(self.periodo_fin.code) + """')
and am.state != 'draft'
group by identificador) t1

left join account_move_line t2 on t2.id=t1.id
left join account_move am on am.id = t2.move_id
left join account_period ap on ap.date_start <= am.fecha_contable and ap.date_stop  >= am.fecha_contable and am.fecha_special = ap.special
left join res_partner t3 on t3.id=t2.partner_id
left join account_account t4 on t4.id=t2.account_id
left join account_account_type t5 on t5.id = t4.user_type_id


order by code,empresa

						)""")
        filtro = []
        if self.check == True:
            filtro.append(('saldo', '!=', 0))
        if self.cuenta.id:
            filtro.append(('code', '=', self.cuenta.code))

        if self.empresa.id:
            filtro.append(('empresa', '=', self.empresa.name))

        if self.tipo:
            filtro.append(('tipo_cuenta', '=', self.tipo))

        move_obj = self.env['saldo.comprobante.empresa']
        lstidsmove = move_obj.search(filtro)
        if (len(lstidsmove) == 0):
            raise osv.except_osv('Alerta', 'No contiene datos.')

        #DSC_Exportar a CSV por el numero de filas
        self.env.cr.execute(
            """select count(*)  from saldo_comprobante_empresa""")
        rows = self.env.cr.fetchone()
        #if self.mostrar == 'excel' and rows[0] > 1000:
        #	self.mostrar = 'csv'

        if self.mostrar == 'pantalla':
            return {
                'domain': filtro,
                'type': 'ir.actions.act_window',
                'res_model': 'saldo.comprobante.empresa',
                'view_mode': 'tree',
                'view_type': 'form',
                'views': [(False, 'tree')],
            }

        #DSC_
        if self.mostrar == 'csv':
            direccion = self.env['main.parameter'].search(
                [])[0].dir_create_file
            docname = 'SaldoEmpresa.csv'
            #CSV
            sql_query = """	COPY (SELECT * FROM saldo_comprobante_empresa )TO '""" + direccion + docname + """'   WITH DELIMITER ',' CSV HEADER			
							"""
            self.env.cr.execute(sql_query)
            #Caracteres Especiales
            import sys
            reload(sys)
            sys.setdefaultencoding('iso-8859-1')
            f = open(direccion + docname, 'rb')
            vals = {
                'output_name': docname,
                'output_file': base64.encodestring(''.join(f.readlines())),
            }
            sfs_id = self.env['export.file.save'].create(vals)
            return {
                "type": "ir.actions.act_window",
                "res_model": "export.file.save",
                "views": [[False, "form"]],
                "res_id": sfs_id.id,
                "target": "new",
            }

        if self.mostrar == 'excel':
            import io
            from xlsxwriter.workbook import Workbook
            output = io.BytesIO()
            ########### PRIMERA HOJA DE LA DATA EN TABLA
            #workbook = Workbook(output, {'in_memory': True})

            direccion = self.env['main.parameter'].search(
                [])[0].dir_create_file

            workbook = Workbook(direccion + 'saldoperiodo.xlsx')
            worksheet = workbook.add_worksheet("Analisis Saldo x Empresa")
            #Print Format
            worksheet.set_landscape()  #Horizontal
            worksheet.set_paper(9)  #A-4
            worksheet.set_margins(left=0.75, right=0.75, top=1, bottom=1)
            worksheet.fit_to_pages(1, 0)  # Ajustar por Columna

            bold = workbook.add_format({'bold': True})
            normal = workbook.add_format()
            boldbord = workbook.add_format({'bold': True})
            boldbord.set_border(style=2)
            boldbord.set_align('center')
            boldbord.set_align('vcenter')
            boldbord.set_text_wrap()
            boldbord.set_font_size(9)
            boldbord.set_bg_color('#DCE6F1')
            numbertres = workbook.add_format({'num_format': '0.000'})
            numberdos = workbook.add_format({'num_format': '0.00'})
            bord = workbook.add_format()
            bord.set_border(style=1)
            bord.set_text_wrap()
            numberdos.set_border(style=1)
            numbertres.set_border(style=1)

            title = workbook.add_format({'bold': True})
            title.set_align('center')
            title.set_align('vcenter')
            title.set_text_wrap()
            title.set_font_size(20)
            worksheet.set_row(0, 30)

            x = 9
            tam_col = [
                0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
            ]
            tam_letra = 1.2
            import sys
            reload(sys)
            sys.setdefaultencoding('iso-8859-1')

            worksheet.merge_range(0, 0, 0, 8, u"Análisis de Saldos x Empresa",
                                  title)

            worksheet.write(1, 0, u"Año Fiscal", bold)
            worksheet.write(1, 1, self.fiscal_id.name, normal)

            worksheet.write(2, 0, u"Periodo Inicial", bold)
            worksheet.write(2, 1, self.periodo_ini.name, normal)

            worksheet.write(3, 0, u"Periodo Final", bold)
            worksheet.write(3, 1, self.periodo_fin.name, normal)

            worksheet.write(4, 0, u"Solo Pendientes", bold)
            worksheet.write(4, 1, 'Si' if self.check else 'No', normal)

            worksheet.write(5, 0, u"Empresa", bold)
            worksheet.write(5, 1,
                            self.empresa.name if self.empresa.name else '',
                            normal)

            worksheet.write(6, 0, u"Cuenta", bold)
            worksheet.write(6, 1, self.cuenta.name if self.cuenta.name else '',
                            normal)

            worksheet.write(8, 0, "Periodo", boldbord)
            worksheet.write(8, 1, "Empresa", boldbord)
            worksheet.write(8, 2, "RUC", boldbord)
            worksheet.write(8, 3, "Tipo Cuenta", boldbord)
            worksheet.write(8, 4, u"Cuenta", boldbord)
            worksheet.write(8, 5, u"Descripción", boldbord)
            worksheet.write(8, 6, "Debe", boldbord)
            worksheet.write(8, 7, "Haber", boldbord)
            worksheet.write(8, 8, "Saldo", boldbord)

            for line in self.env['saldo.comprobante.empresa'].search(filtro):
                worksheet.write(x, 0, line.periodo if line.periodo else '',
                                bord)
                worksheet.write(x, 1, line.empresa if line.empresa else '',
                                bord)
                worksheet.write(x, 2, line.ruc if line.ruc else '', bord)
                worksheet.write(x, 3,
                                line.tipo_cuenta if line.tipo_cuenta else '',
                                bord)
                worksheet.write(x, 4, line.code if line.code else '', bord)
                worksheet.write(x, 5,
                                line.descripcion if line.descripcion else '',
                                bord)
                worksheet.write(x, 6, line.debe, numberdos)
                worksheet.write(x, 7, line.haber, numberdos)
                worksheet.write(x, 8, line.saldo, numberdos)

                x = x + 1

            tam_col = [
                15, 45, 12, 10, 25, 45, 11, 11, 10, 11, 14, 10, 11, 14, 14, 10,
                16, 16, 20, 36
            ]

            worksheet.set_column('A:A', tam_col[0])
            worksheet.set_column('B:B', tam_col[1])
            worksheet.set_column('C:C', tam_col[2])
            worksheet.set_column('D:D', tam_col[3])
            worksheet.set_column('E:E', tam_col[4])
            worksheet.set_column('F:F', tam_col[5])
            worksheet.set_column('G:G', tam_col[6])
            worksheet.set_column('H:H', tam_col[7])
            worksheet.set_column('I:I', tam_col[8])
            worksheet.set_column('J:J', tam_col[9])
            worksheet.set_column('K:K', tam_col[10])
            worksheet.set_column('L:L', tam_col[11])
            worksheet.set_column('M:M', tam_col[12])
            worksheet.set_column('N:N', tam_col[13])
            worksheet.set_column('O:O', tam_col[14])
            worksheet.set_column('P:P', tam_col[15])
            worksheet.set_column('Q:Q', tam_col[16])
            worksheet.set_column('R:R', tam_col[17])
            worksheet.set_column('S:S', tam_col[18])
            worksheet.set_column('T:T', tam_col[19])

            workbook.close()

            f = open(direccion + 'saldoperiodo.xlsx', 'rb')

            sfs_obj = self.pool.get('repcontab_base.sunat_file_save')
            vals = {
                'output_name': 'SaldoEmpresa.xlsx',
                'output_file': base64.encodestring(''.join(f.readlines())),
            }

            sfs_id = self.env['export.file.save'].create(vals)

            return {
                "type": "ir.actions.act_window",
                "res_model": "export.file.save",
                "views": [[False, "form"]],
                "res_id": sfs_id.id,
                "target": "new",
            }
    def get_excel(self):
        import io
        from xlsxwriter.workbook import Workbook
        ReportBase = self.env['report.base']

        direccion = self.env['main.parameter'].search(
            [('company_id', '=', self.company_id.id)], limit=1).dir_create_file

        if not direccion:
            raise UserError(
                u'No existe un Directorio Exportadores configurado en Parametros Principales de Contabilidad para su Compañía'
            )

        workbook = Workbook(direccion + 'Analisis_Vencimientos.xlsx')
        workbook, formats = ReportBase.get_formats(workbook)

        import importlib
        import sys
        importlib.reload(sys)

        ##########ANALISIS VENCIMIENTO############
        worksheet = workbook.add_worksheet("ANALISIS VENCIMIENTO")
        worksheet.set_tab_color('blue')

        HEADERS = [
            'FECHA EM', 'FECHA VEN', 'CUENTA', 'DIVISA', 'TDP', 'RUC',
            'PARTNER', 'TD', 'NRO COMPROBANTE', u'CU BANCO', u'SALDO MN',
            u'SALDO ME', u'0 - 30', u'31 - 60', u'61 - 90', u'91 - 120',
            u'121 - 150', u'151 - 180', u'181 - MÁS'
        ]
        worksheet = ReportBase.get_headers(worksheet, HEADERS, 0, 0,
                                           formats['boldbord'])
        x = 1

        for line in self.env['maturity.analysis.book'].search([]):
            worksheet.write(x, 0, line.fecha_emi if line.fecha_emi else '',
                            formats['dateformat'])
            worksheet.write(x, 1, line.fecha_ven if line.fecha_ven else '',
                            formats['dateformat'])
            worksheet.write(x, 2, line.cuenta if line.cuenta else '',
                            formats['especial1'])
            worksheet.write(x, 3, line.divisa if line.divisa else '',
                            formats['especial1'])
            worksheet.write(x, 4, line.tdp if line.tdp else '',
                            formats['especial1'])
            worksheet.write(x, 5, line.doc_partner if line.doc_partner else '',
                            formats['especial1'])
            worksheet.write(x, 6, line.partner if line.partner else '',
                            formats['especial1'])
            worksheet.write(x, 7, line.td_sunat if line.td_sunat else '',
                            formats['especial1'])
            worksheet.write(
                x, 8, line.nro_comprobante if line.nro_comprobante else '',
                formats['especial1'])
            worksheet.write(x, 9, line.cu_banco if line.cu_banco else '',
                            formats['especial1'])
            worksheet.write(x, 10, line.saldo_mn if line.saldo_mn else '0.00',
                            formats['numberdos'])
            worksheet.write(x, 11, line.saldo_me if line.saldo_me else '0.00',
                            formats['numberdos'])
            worksheet.write(x, 12,
                            line.cero_treinta if line.cero_treinta else '0.00',
                            formats['numberdos'])
            worksheet.write(
                x, 13,
                line.treinta1_sesenta if line.treinta1_sesenta else '0.00',
                formats['numberdos'])
            worksheet.write(
                x, 14,
                line.sesenta1_noventa if line.sesenta1_noventa else '0.00',
                formats['numberdos'])
            worksheet.write(
                x, 15,
                line.noventa1_ciento20 if line.noventa1_ciento20 else '0.00',
                formats['numberdos'])
            worksheet.write(
                x, 16,
                line.ciento21_ciento50 if line.ciento21_ciento50 else '0.00',
                formats['numberdos'])
            worksheet.write(
                x, 17,
                line.ciento51_ciento80 if line.ciento51_ciento80 else '0.00',
                formats['numberdos'])
            worksheet.write(x, 18,
                            line.ciento81_mas if line.ciento81_mas else '0.00',
                            formats['numberdos'])
            x += 1

        widths = [
            10, 12, 8, 8, 6, 11, 40, 6, 21, 10, 16, 16, 15, 15, 15, 15, 15, 15,
            15
        ]
        worksheet = ReportBase.resize_cells(worksheet, widths)
        workbook.close()

        f = open(direccion + 'Analisis_Vencimientos.xlsx', 'rb')
        return self.env['popup.it'].get_file(
            'Analisis_Vencimientos.xlsx',
            base64.encodestring(b''.join(f.readlines())))
Пример #13
0
import cv2
from numpy import *
from xlsxwriter.workbook import Workbook
ROUND = 7.

img = cv2.imread('123.jpg')
y, x, ch = img.shape
img = cv2.resize(img, (y / 3, x / 3))
y, x, ch = img.shape

t = Workbook('pic.xlsx')
ts = t.add_worksheet()
ts.set_default_row(height=1.8)
ts.set_column(0, 5000, .2)

s = [(i, j) for i in xrange(y) for j in xrange(x)]
for i, j in s:
    color = rint(img[i, j] / ROUND) * ROUND
    color = '#%02X%02X%02X' % tuple(color.tolist()[::-1])
    fmat = t.add_format({'bg_color': color})
    ts.write(i, j, '', fmat)
    if j == 0: print i, '/', y

t.close()
import sqlite3
from sr_extract_stress import stress_to_database
from sr_extract_sr import sr_to_database
from sr_extract_vm import vm_stress_to_database
from sr_extract_solid import solid_stress_to_database
from patran_input import process_input
import time
from xlsxwriter.workbook import Workbook
from math import sqrt

# Creare fisier excel pentru scrierea rezultatelor
workbook = Workbook('ResultsSR.xlsx')
worksheet = workbook.add_worksheet('Data_Results_SR')
worksheet2 = workbook.add_worksheet('Summary_SR_MOS')
worksheet3 = workbook.add_worksheet('Data_Results_HC')
worksheet4 = workbook.add_worksheet('Summary_HC_MOS')
worksheet5 = workbook.add_worksheet('Data_Results_VM')
worksheet6 = workbook.add_worksheet('Summary_VM')

# Creare baza de date pentru stocarea datelor
conn = sqlite3.connect('ResultsData.db')
conn.execute('pragma journal_mode=wal')
c = conn.cursor()
c.execute('''PRAGMA synchronous = OFF''')
c.execute("BEGIN TRANSACTION")


def nrCazuri():
    c.execute('SELECT COUNT(DISTINCT subcase) FROM ElmStrengthRatio')
    nrCaz = c.fetchone()
    return nrCaz
Пример #15
0
    row_max = int(sys.argv[1]) / 2
else:
    row_max = 1000

if len(sys.argv) > 2:
    optimise = 1
else:
    optimise = 0

col_max = 50

# Start timing after everything is loaded.
start_time = clock()

# Start of program being tested.
workbook = Workbook('py_ewx.xlsx', {'constant_memory': optimise})
worksheet = workbook.add_worksheet()

worksheet.set_column(0, col_max, 18)

for row in range(0, row_max):
    for col in range(0, col_max):
        worksheet.write_string(row * 2, col, "Row: %d Col: %d" % (row, col))
    for col in range(0, col_max + 1):
        worksheet.write_number(row * 2 + 1, col, row + col)

# Get total memory size for workbook object before closing it.
total_size = asizeof(workbook)

workbook.close()
Пример #16
0
    alldata = df.values.flatten()
    alldata = alldata[~np.isnan(alldata)]
    if 'bins' in kwargs:
        h, b = np.histogram(alldata, bins=kwargs['bin'])
    else:
        h, b = np.histogram(alldata)
    bins = b
    bindf = {}
    for colname, data in df.items():
        data = data.dropna().values
        h, b = np.histogram(data, bins=bins)
        bindf[colname] = pandas.Series(h, index=[x for x in b[:-1]])
    df = pandas.DataFrame(bindf)
    worksheet = writeData(df, wb, sheetname, **kwargs)
    params = {'type': 'column'}
    if 'subtype' in kwargs:
        params['subtype'] = kwargs['subtype']
    chart = wb.add_chart(params)
    __addAxisInfo(chart, kwargs)
    kwargs['gap'] = 0
    addSeries(df, chart, sheetname, **kwargs)
    # Insert the chart into the worksheet (with an offset).
    cell = __getLocation(df, kwargs)
    worksheet.insert_chart(cell, chart, {'x_scale': 2.0, 'y_scale': 2.0})


if __name__ == "__main__":
    wb = Workbook('test.xlsx')
    df = pandas.DataFrame.from_csv('test_dates.csv')
    plotLineChart(df, wb, 'test_dates', style=42)
Пример #17
0
##############################################################################
#
# A simple example of merging cells with the XlsxWriter Python module.
#
# Copyright 2013, John McNamara, [email protected]
#
from xlsxwriter.workbook import Workbook


# Create an new Excel file and add a worksheet.
workbook = Workbook('merge1.xlsx')
worksheet = workbook.add_worksheet()

# Increase the cell size of the merged cells to highlight the formatting.
worksheet.set_column('B:D', 12)
worksheet.set_row(3, 30)
worksheet.set_row(6, 30)
worksheet.set_row(7, 30)


# Create a format to use in the merged range.
merge_format = workbook.add_format({
    'bold': 1,
    'border': 1,
    'align': 'center',
    'valign': 'vcenter',
    'fg_color': 'yellow'})


# Merge 3 cells.
worksheet.merge_range('B4:D4', 'Merged Range', merge_format)
Пример #18
0
def getWorkbook(fname, options=None):
    """Return a xlsxwriter Workbook by the given name"""
    if options is not None:
        return Workbook(fname, options)
    return Workbook(fname)
Пример #19
0
###############################################################################
#
# An example of how to create autofilters with XlsxWriter.
#
# An autofilter is a way of adding drop down lists to the headers of a 2D
# range of worksheet data. This allows users to filter the data based on
# simple criteria so that some data is shown and some is hidden.
#
# Copyright 2013, John McNamara, [email protected]
#
from xlsxwriter.workbook import Workbook

workbook = Workbook('autofilter.xlsx')

# Add a worksheet for each autofilter example.
worksheet1 = workbook.add_worksheet()
worksheet2 = workbook.add_worksheet()
worksheet3 = workbook.add_worksheet()
worksheet4 = workbook.add_worksheet()
worksheet5 = workbook.add_worksheet()
worksheet6 = workbook.add_worksheet()

# Add a bold format for the headers.
bold = workbook.add_format({'bold': 1})

# Open a text file with autofilter example data.
textfile = open('autofilter_data.txt')

# Read the headers from the first line of the input file.
headers = textfile.readline().strip("\n").split()
Пример #20
0
    def generate_excel(self):

        tipeFile = ["extracto_bancario", "cajas_registradoras"]
        title_report_list = ["Extracto Bancario", "Cajas registradoras"]
        size_ref = 0
        # nombre de archivo
        if re.match("(.*)CAJA(.*)", self.name):
            name_file = tipeFile[1] + \
                datetime.now().strftime("%Y%m%d%H%M%S") + '.xlsx'
            title_report = title_report_list[1]
            size_ref = 40
        else:
            name_file = tipeFile[0] + \
                datetime.now().strftime("%Y%m%d%H%M%S") + '.xlsx'
            title_report = title_report_list[0]
            size_ref = 20
        direccion = self.env['main.parameter'].search([])[0].dir_create_file

        # nombre de la direccion
        direccion += name_file
        workbook = Workbook(direccion, {
            'in_memory': True,
            'strings_to_numbers': True
        })

        workbook.formats[0].set_font_size(10)
        workbook.formats[0].set_font_name("Arial")
        worksheet = workbook.add_worksheet(title_report)
        worksheet.set_zoom(80)
        worksheet.set_row(1, 60)
        worksheet.set_column(1, 1, 15)  # ancho de B y C
        worksheet.set_column(2, 5, 40)  # ancho de B y C
        worksheet.set_column(3, 4, 50)  # ancho de B y C
        worksheet.set_column(6, 6, 18)
        ########################### Cabecera  ##################################

        merge_format_left_label = workbook.add_format({
            'bold': 1,
            'align': 'left',
            'valign': 'vcenter',
            'font_size': 12,
        })
        merge_format_left_text = workbook.add_format({
            'bold': 0,
            'border': 0,
            'align': 'left',
            'valign': 'vcenter',
        })
        merge_format_title = workbook.add_format({
            'bold': 1,
            'border': 1,
            'align': 'center',
            'underline': 0,
            'valign': 'top',
            'font_size': 14,
            'font_name': 'Arial'
        })
        merge_format_right = workbook.add_format({
            'align': 'right',
            'valign': 'vcenter',
            'right': 1
        })
        merge_format_center_header = workbook.add_format({
            'bold': 1,
            'border': 1,
            'align': 'center',
            'valign': 'vcenter',
            'font_size': 12,
            'font_name': 'Arial',
        })
        merge_format_center_text = workbook.add_format({
            'border': 0,
            'align': 'center',
            'valign': 'vcenter',
            'font_size': 10,
            'font_name': 'Arial',
        })

        merge_format_center_text_wrap = workbook.add_format({
            'border':
            0,
            'align':
            'center',
            'valign':
            'vcenter',
            'font_size':
            10,
            'font_name':
            'Arial',
        })
        merge_format_bottom_center = workbook.add_format({
            'bold': 1,
            'border': 1,
            'align': 'center',
            'valign': 'vcenter',
            'font_size': 12,
            'font_name': 'Arial',
        })
        formatMoneyWithBorder = workbook.add_format({
            'valign':
            'vcenter',
            'align':
            'right',
            'num_format':
            '"%s" #,##0.00' % self.currency_id.symbol
        })

        formatMoney = workbook.add_format({
            'num_format': '#,##0.00',
            'border': 1,
            'valign': 'vcenter',
            'align': 'right'
        })

        # agregando logo al documento
        #worksheet.insert_image('B2:D2', 'company_logo.jpg', {
        #                      'x_offset': 25, 'y_offset': 5, 'y_scale': 0.95, 'x_scale': 0.85})
        # Borde celdas de imagen
        #worksheet.merge_range('B2:C2', "", merge_format_title)
        # coloca Titulo
        # worksheet.merge_range('D2:N2', title_report, merge_format_title)
        # Inf - Fecha
        merge_format_bottom_center.set_text_wrap()
        worksheet.merge_range('B2:G2', title_report + "\n" + self.name,
                              merge_format_bottom_center)

        # Cabezera
        worksheet.write('B4', "Diario:", merge_format_left_label)
        worksheet.write('B5', "Fecha:", merge_format_left_label)
        worksheet.write('F4', "Saldo Inicial:", merge_format_left_label)
        worksheet.write('F5', "Balance Final:", merge_format_left_label)

        worksheet.write('C4', self.journal_id[0].name, merge_format_left_text)
        worksheet.write('C5', self.date, merge_format_left_text)
        worksheet.write_number('G4', self.balance_start, formatMoneyWithBorder)
        worksheet.write_number('G5', self.balance_end_real,
                               formatMoneyWithBorder)

        # worksheet.set_column(4, 6, 30)  # ancho de B y C
        x = 7
        y = 1
        i = 0

        worksheet.write("B7", "Fecha", merge_format_center_header)
        worksheet.write("C7", "Etiqueta", merge_format_center_header)
        worksheet.write("D7", "Partner", merge_format_center_header)
        worksheet.write("E7", "Referencia", merge_format_center_header)
        worksheet.write("F7", "Medio de Pago", merge_format_center_header)
        worksheet.write("G7", "Cantidad", merge_format_center_header)

        for item in self.line_ids:
            worksheet.set_row(x + i, size_ref)
            if (item['date']):
                worksheet.write(x + i, y, item['date'],
                                merge_format_center_text)
            if (item['name']):
                worksheet.write(x + i, y + 1, item['name'],
                                merge_format_center_text)
            if item.partner_id.name:
                worksheet.write(x + i, y + 2, item.partner_id.name,
                                merge_format_center_text)
            if item['ref']:
                worksheet.write(x + i, y + 3, item['ref'],
                                merge_format_center_text)
            if item.medio_pago.name:
                merge_format_center_text.set_text_wrap()
                worksheet.write(x + i, y + 4, item.medio_pago.name,
                                merge_format_center_text)
            if item['amount']:
                worksheet.write_number(x + i, y + 5, item['amount'],
                                       formatMoneyWithBorder)
            i = i + 1

        workbook.close()
        # os.remove('company_logo.jpg')
        f = open(direccion, 'rb')
        vals = {
            'output_name': 'Reporte_' + name_file,
            'output_file': base64.encodestring(''.join(f.readlines())),
        }
        sfs_id = self.env['export.file.save'].create(vals)

        return {
            "type": "ir.actions.act_window",
            "res_model": "export.file.save",
            "views": [[False, "form"]],
            "res_id": sfs_id.id,
            "target": "new",
        }
Пример #21
0
def excel():

    if request.method == 'GET':

        user_data = User.query.filter_by(id=current_user.id).first()

        build_data = Build.query.filter_by(user_id=user_data.id).first()

        if request.args.get("date_start") != None and request.args.get(
                "time_start") != None and request.args.get(
                    "date_end") != None and request.args.get(
                        "time_end") != None and request.args.get(
                            "department") != None and request.args.get(
                                "department") != "0":

            if current_user.role_id == 2:

                build_data_select = Build.query.all()

                department_data = Department.query.filter_by(
                    build_id=request.args.get("build")).all()

                build_log_data = Build_Log.query.filter_by(build_id=request.args.get("build")).filter(Build_Log.created_at >= request.args.get("date_start")+" "+request.args.get("time_start")).filter(Build_Log.created_at <= request.args.get("date_end")+" "+request.args.get("time_end"))\
                    .filter_by(department_id=request.args.get("department")).all()

            else:

                build_data_select = Build.query.filter_by(
                    id=build_data.id).all()

                department_data = Department.query.filter_by(
                    build_id=request.args.get("build")).all()

                build_log_data = Build_Log.query.filter_by(build_id=build_data.id).filter(Build_Log.created_at >= request.args.get("date_start")+" "+request.args.get("time_start")).filter(Build_Log.created_at <= request.args.get("date_end")+" "+request.args.get("time_end"))\
                    .filter_by(department_id=request.args.get("department")).all()

            for x in build_log_data:
                for j in build_data_select:
                    if j.id == x.build_id:
                        x.build_name = j.build_name
                for j in department_data:
                    if j.id == x.department_id:
                        x.department_name = j.department_name
                x.created_at = str(x.created_at).split(".")[0]
                x.sum = equation_sum(x.variable_a, x.variable_b, x.variable_c)
                x.error = equation_error(x.variable_a, x.variable_b,
                                         x.variable_c)

        elif request.args.get("date_start") != None and request.args.get(
                "time_start") != None and request.args.get(
                    "date_end") != None and request.args.get(
                        "time_end") != None:

            if current_user.role_id == 2:

                build_data_select = Build.query.all()

                department_data = Department.query.filter_by(
                    build_id=request.args.get("build")).all()

                build_log_data = Build_Log.query.filter_by(
                    build_id=request.args.get("build")
                ).filter(
                    Build_Log.created_at >= request.args.get("date_start") +
                    " " + request.args.get("time_start")).filter(
                        Build_Log.created_at <= request.args.get("date_end") +
                        " " + request.args.get("time_end")).all()

            else:

                build_data_select = Build.query.filter_by(
                    id=build_data.id).all()

                department_data = Department.query.filter_by(
                    build_id=request.args.get("build")).all()

                build_log_data = Build_Log.query.filter_by(
                    build_id=build_data.id
                ).filter(
                    Build_Log.created_at >= request.args.get("date_start") +
                    " " + request.args.get("time_start")).filter(
                        Build_Log.created_at <= request.args.get("date_end") +
                        " " + request.args.get("time_end")).all()

            for x in build_log_data:
                for j in build_data_select:
                    if j.id == x.build_id:
                        x.build_name = j.build_name
                for j in department_data:
                    if j.id == x.department_id:
                        x.department_name = j.department_name
                x.created_at = str(x.created_at).split(".")[0]
                x.sum = equation_sum(x.variable_a, x.variable_b, x.variable_c)
                x.error = equation_error(x.variable_a, x.variable_b,
                                         x.variable_c)

        else:
            build_log_data = []
            department_data = []
            if current_user.role_id == 2:
                build_data_select = Build.query.all()
            else:
                build_data_select = Build.query.filter_by(
                    id=build_data.id).all()

        output = BytesIO()
        workbook = Workbook(output)

        sheet = workbook.add_worksheet('sheet_1')

        header = workbook.add_format({
            'bg_color': '#F7F7F7',
            'color': 'black',
            'align': 'center',
            'valign': 'top',
            'border': 1
        })
        text = workbook.add_format({
            'color': 'black',
            'align': 'center',
            'valign': 'top',
            'border': 1
        })

        merge_format = workbook.add_format({
            'bold': 1,
            'border': 1,
            'align': 'center',
            'valign': 'vcenter',
            # 'fg_color': 'yellow'
        })

        set_col = 7
        set_row = 2

        sheet.merge_range(
            'C2:J5',
            'บริษัท ปตท. จำกัด (มหาชน) \r\n 555 ถนนวิภาวดีรังสิต แขวงจตุจักร เขตจตุจักร 10900 \r\n โทรศัพท์ : 0-2537-2000 โทรสาร : 0-2537-3498-9',
            merge_format)

        sheet.write(set_col, 1, ("#"), header)
        sheet.write(set_col, 2, ("Station"), header)
        sheet.write(set_col, 3, ("License Plate"), header)
        sheet.write(set_col, 4, ("Oil Type"), header)
        sheet.write(set_col, 5, ("API"), header)
        sheet.write(set_col, 6, ("API@Ori"), header)
        sheet.write(set_col, 7, ("Temp"), header)
        sheet.write(set_col, 8, ("API@60F"), header)
        sheet.write(set_col, 9, ("Error"), header)
        sheet.write(set_col, 10, ("Date"), header)
        count = 0

        for item in build_log_data:
            set_col += 1
            sheet.write(set_col, 1, (count), text)
            try:
                sheet.write(set_col, 2, (item.build_name), text)
                sheet.write(set_col, 3, (item.license_plate), text)
            except:
                sheet.write(set_col, 2, (""), text)
                sheet.write(set_col, 3, (""), text)
            try:
                sheet.write(set_col, 4, (item.department_name), text)
            except:
                sheet.write(set_col, 4, (""), text)

            try:
                sheet.write(set_col, 5, (item.variable_a), text)
                sheet.write(set_col, 6, (item.variable_b), text)
                sheet.write(set_col, 7, (item.variable_c), text)
                sheet.write(set_col, 8, (item.sum), text)
                sheet.write(set_col, 9, (item.error), text)
                sheet.write(set_col, 10, (str(item.created_at).split(".")[0]),
                            text)
            except:
                sheet.write(set_col, 5, (""), text)
                sheet.write(set_col, 6, (""), text)
                sheet.write(set_col, 7, (""), text)
                sheet.write(set_col, 8, (""), text)
                sheet.write(set_col, 9, (""), text)
                sheet.write(set_col, 10, (""), text)

            count += 1

        workbook.close()
        output.seek(0)

        return send_file(output,
                         attachment_filename='data.xlsx',
                         as_attachment=True,
                         mimetype=EXCELMIME)
Пример #22
0
##############################################################################
#
# A simple example of some of the features of the XlsxWriter Python module.
#
# Copyright 2013, John McNamara, [email protected]
#
from xlsxwriter.workbook import Workbook


# Create an new Excel file and add a worksheet.
workbook = Workbook('demo.xlsx')
worksheet = workbook.add_worksheet()

# Widen the first column to make the text clearer.
worksheet.set_column('A:A', 20)

# Add a bold format to use to highlight cells.
bold = workbook.add_format({'bold': 1})

# Write some simple text.
worksheet.write('A1', 'Hello')

# Text with formatting.
worksheet.write('A2', 'World', bold)

# Write some numbers, with row/column notation.
worksheet.write(2, 0, 123)
worksheet.write(3, 0, 123.456)

workbook.close()
Пример #23
0
import os
import glob
import csv
from xlsxwriter.workbook import Workbook

for csv_file in glob.glob(os.path.join('.', 'data/*.csv')):
    workbook = Workbook(csv_file[:-4] + '.xlsx')
    worksheet = workbook.add_worksheet()
    with open(csv_file, 'rt', encoding='utf8') as f:
        reader = csv.reader(f)
        for r, row in enumerate(reader):
            for c, col in enumerate(row):
                worksheet.write(r, c, col)
                print("converting...")
    workbook.close()
        keyword_set = keyword_split
        keyword_sep = ''
        for each in keyword_set:
            keyword_sep = keyword_sep + each + '|'
        keyword_sep = keyword_sep.strip('|')
        #print('keyword_sep:', keyword_sep)
        if (len(keyword_sep)) == 0:
            continue
        #用所有关键词将整段话分割,再插入富字符串,然后捆绑颜色、关键词和后面的文本,需注意一一对应
        temp_list = re.split(keyword_sep, txt)
        params = []
        temp_list_num = len(temp_list)
        for i in range(temp_list_num):
            if i != 0:
                params.extend((red, keyword_set[i - 1], temp_list[i]))
            else:
                params.append(temp_list[i])
        worksheet.write(work_row, work_col, id_data)
        worksheet.write_rich_string(work_row, work_col2, *params)
        work_row = work_row + 1
    workbook.close()


if __name__ == '__main__':
    data = pd.read_excel(r'E:\DLML\DataHandle\data\data.xlsx',
                         index=None)  #原文本文件
    data_result = Workbook(r'E:\DLML\DataHandle\data\data-result.xlsx')  #标注结果
    cate_data = pd.read_excel(r'E:\DLML\DataHandle\data\cate_data.xlsx',
                              index=None)  #匹配的文本文件
    model_set_colors(data, data_result, cate_data)
    'Florida': 'FL',
    'Georgia': 'GA',
    'Illinois': 'IL',
    'Kansas': 'KS',
    'Michigan': 'MI',
    'New York': 'NY',
    'Ohio': 'OH',
    'Pennsylvania': 'PA',
    'Texas': 'TX'
}

# In[14]:

import sqlite3
from xlsxwriter.workbook import Workbook
workbook = Workbook('hospital_ranking.xlsx')
SheetNum = 0
c = conn.cursor()
while SheetNum < 11:
    worksheet = workbook.add_worksheet(StatesList[SheetNum])

    if StatesList[SheetNum] == 'Nationwide':
        mysel = c.execute(
            """select hospital_national_ranking.provider_id,hospital_name,city,state,county_name
        from hospital_general_information
        join hospital_national_ranking
        on hospital_national_ranking.provider_id=hospital_general_information.provider_id
        order by ranking limit 100""")
    else:
        l = [StatesDictionary[StatesList[SheetNum]]]
        mysel = c.execute(
Пример #26
0
 def get_xlsx_writer(self, response, **kwargs):
     return Workbook(response, {'in_memory': True})
Пример #27
0
def export_reviewer_votes(request, conference_slug):
    """
    Write reviewer votes to a spreadsheet.
    """
    if not request.user.is_superuser:
        raise PermissionDenied

    conference = get_object_or_404(Conference, slug=conference_slug)
    proposal_sections = conference.proposal_sections.all()
    proposals_qs = Proposal.objects.select_related(
        'proposal_type',
        'proposal_section',
        'conference',
        'author',
    ).filter(conference=conference, status=ProposalStatus.PUBLIC)
    proposals_qs = sorted(proposals_qs,
                          key=lambda x: x.get_reviewer_votes_sum(),
                          reverse=True)
    vote_values_list = ProposalSectionReviewerVoteValue.objects.order_by(
        '-vote_value')
    vote_values_desc = tuple(
        i.description
        for i in ProposalSectionReviewerVoteValue.objects.order_by(
            '-vote_value'))
    header = ('Proposal Type', 'Title', 'Sum of reviewer votes', 'No. of reviewer votes') + \
        tuple(vote_values_desc) + ('Public votes count', 'Vote Comments')
    output = StringIO.StringIO()

    with Workbook(output) as book:
        for section in proposal_sections:
            sheet = book.add_worksheet(section.name[:30])
            cell_format = book.add_format({'bold': True})
            sheet.write_row(0, 0, header, cell_format)

            section_proposals = [
                p for p in proposals_qs if p.proposal_section == section
            ]

            for index, p in enumerate(section_proposals, 1):
                vote_details = tuple(
                    p.get_reviewer_votes_count_by_value(v)
                    for v in vote_values_list)
                vote_comment = '\n'.join([
                    comment.comment
                    for comment in p.proposalcomment_set.filter(
                        vote=True,
                        deleted=False,
                    )
                ])
                row = (p.proposal_type.name, p.title, p.get_reviewer_votes_sum(),
                       p.get_reviewer_votes_count(),) + \
                    vote_details + (p.get_votes_count(), vote_comment,)
                if p.get_reviewer_votes_count_by_value(
                        ProposalSectionReviewerVoteValue.objects.get(
                            vote_value=ProposalReviewVote.NOT_ALLOWED)) > 0:
                    cell_format = book.add_format({'bg_color': 'red'})
                elif p.get_reviewer_votes_count_by_value(
                        ProposalSectionReviewerVoteValue.objects.get(
                            vote_value=ProposalReviewVote.MUST_HAVE)) > 2:
                    cell_format = book.add_format({'bg_color': 'green'})
                elif p.get_reviewer_votes_count() < 2:
                    cell_format = book.add_format({'bg_color': 'yellow'})
                else:
                    cell_format = None

                sheet.write_row(index, 0, row, cell_format)

    output.seek(0)
    response = HttpResponse(
        output.read(),
        content_type=
        "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet")
    file_name = str(uuid.uuid4())[:8]
    response[
        'Content-Disposition'] = "attachment; filename=junction-{}.xlsx".format(
            file_name)

    return response
Пример #28
0
##############################################################################
#
# A simple formatting example using XlsxWriter.
#
# This program demonstrates the indentation cell format.
#
# Copyright 2013, John McNamara, [email protected]
#
from xlsxwriter.workbook import Workbook

workbook = Workbook('text_indent.xlsx')

worksheet = workbook.add_worksheet()
indent1 = workbook.add_format({'indent': 1})
indent2 = workbook.add_format({'indent': 2})

worksheet.set_column('A:A', 40)

worksheet.write('A1', "This text is indented 1 level", indent1)
worksheet.write('A2', "This text is indented 2 levels", indent2)

workbook.close()
Пример #29
0
def queryresultalter():
	es = Elasticsearch([{'host': '13.235.1.36', 'port': 9200}])

	yesterday = "QueryRan"
	# print(yesterday)
	startdate = date.today() - timedelta(days=7) - timedelta(hours=5, minutes=30)
	startdate = int((time.mktime(startdate.timetuple()))-19800)
	print("Startdate :{}".format(startdate))
	enddate = date.today()
	enddate = int((time.mktime(enddate.timetuple()))-19800)
	print("EndDate :{}".format(enddate))
	
	# Make a excel sheet store the headers Only
	workbook = Workbook('Data_QueryRan.xlsx')
	worksheet = workbook.add_worksheet()
	lista = ['appid','deviceid','devicemake','devicemodel','platform','apppackage','keyname','mobileoperator','ssid','app','song','album'
	,'pstate','source','ipaddress','city','station','duration','timestamp','created_date','created_time']

	r = 0
	c = 0
	for item in lista:
		worksheet.write(r, c, item)
		c = c + 1

	# Query the elasticsearch cluster 
	i=0
	results = helpers.scan(client = es,
                    scroll = '2m',
                    query = {"query": {"range": {"timestamp": {"gte": startdate,"lte": enddate}}}}, 
                    index = "tendays")
	for item in results:
		dataJson = item["_source"]
		data_appid = dataJson["app_id"]
		data_deviceid = dataJson["device_id"]
		data_devicemake = '"'+dataJson["events"]["ma"]+'"'
		data_devicemodel = '"'+dataJson["events"]["d"]+'"'
		data_platform = '"'+dataJson["events"]["p"]+'"'
		data_apppackage = '"'+dataJson["events"]["ap"]+'"'
		try:
			data_keyname = '"'+dataJson["key"]+'"'
		except Exception as e:
			data_keyname = ""
		data_mobileoperator = '"'+dataJson["events"]["network"]["ope"]+'"'
		data_ssid = '"'+dataJson["events"]["network"]["ssid"]+'"'
		try:
			data_App = '"'+dataJson["events"]["segmentation"]["App"]+'"'
		except Exception as e:
			data_App = ""
		
		try:
			data_Song = '"'+dataJson["events"]["segmentation"]["Song"]+'"'
		except Exception as e:
			data_Song = ""
		
		try:
			data_Album = '"'+dataJson["events"]["segmentation"]["Album"]+'"'
		except Exception as e:
			data_Album = ""
		
		try:
			data_PState = '"'+dataJson["events"]["segmentation"]["PState"]+'"'
		except Exception as e:
			data_PState = ""
		try:
			data_Source = '"'+dataJson["events"]["segmentation"]["Source"]+'"'
		except Exception as e:
			data_Source = ""
		data_ipAddress = dataJson["ipAddress"]
		data_city = dataJson["city"]
		try:
			data_station = '"'+dataJson["events"]["segmentation"]["Station"]+'"'
		except Exception as e:
			data_station = ""
		try:
			data_duration = '"'+dataJson["events"]["segmentation"]["Duration"]+'"'
		except Exception as e:
			data_duration = ""
		
		data_timestamp = dataJson["timestamp"]
		data_created_date = dataJson["created_date"]
		data_created_time = dataJson["created_time"]

		lista = [data_appid,data_deviceid,data_devicemake,data_devicemodel,data_platform,data_apppackage,data_keyname,data_mobileoperator,data_ssid,data_App,data_Song,data_Album,data_PState,data_Source,data_ipAddress,data_city,data_station,data_duration,data_timestamp,data_created_date,data_created_time]
		r =r + 1
		c = 0
		for item in lista:
			worksheet.write(r, c, item)
			c = c + 1
		i=i+1
	print("Value of i:{}".format(i))
	workbook.close()
Пример #30
0
    def do_rebuild(self):

        self.env.cr.execute("""
			drop view if exists vst_docs_apertura cascade;
			create view vst_docs_apertura as (

			 SELECT a1.account_id,
    a1.partner_id,
    a1.type_document_it,
    a1.nro_comprobante,
    a2.date,
    a1.date_maturity,
        CASE
            WHEN a3.name IS NULL THEN 'PEN'::text
            ELSE 'USD'::text
        END AS moneda,
        CASE
            WHEN a3.name IS NULL THEN a1.debit - a1.credit
            ELSE NULL::numeric
        END AS pventamn,
        CASE
            WHEN a3.name::text = 'USD'::text THEN a1.amount_currency
            ELSE NULL::numeric
        END AS pventame
   FROM account_move_line a1
     LEFT JOIN account_move a2 ON a2.id = a1.move_id
     LEFT JOIN res_currency a3 ON a3.id = a1.currency_id
     LEFT JOIN account_account a4 ON a4.id = a1.account_id
  WHERE a2.fecha_special = true AND date_part('year'::text, a2.date) = (( SELECT main_parameter.fiscalyear
           FROM main_parameter))::double precision AND date_part('month'::text, a2.date) <> '12'::double precision AND a4.internal_type::text = 'receivable'::text AND a2.state::text = 'posted'::text

			)""")

        self.env.cr.execute("""
			drop view if exists saldos_doc_apertura cascade;
			create view saldos_doc_apertura as (

			 SELECT a1.account_id,
    a1.partner_id,
    a1.type_document_it,
    a1.nro_comprobante,
    a1.date,
    a1.date_maturity,
    a1.moneda,
    a1.pventamn,
    a1.pventame,
    sum(a2.debit - a2.credit) AS saldomn,
    sum(a2.amount_currency) AS saldome,
    max(a2.create_uid) AS propietario
   FROM vst_docs_apertura a1
     LEFT JOIN account_move_line a2 ON concat(a2.account_id, a2.partner_id, a2.type_document_it, a2.nro_comprobante) = concat(a1.account_id, a1.partner_id, a1.type_document_it, a1.nro_comprobante)
  GROUP BY a1.account_id, a1.partner_id, a1.type_document_it, a1.nro_comprobante, a1.date, a1.date_maturity, a1.moneda, a1.pventamn, a1.pventame

			)""")

        self.env.cr.execute("""
			drop view if exists vst_ctasctes_apertura cascade;
			create view vst_ctasctes_apertura as (

			SELECT a1.date AS fecha_emi,
    a1.date_maturity AS fecha_ven,
    partner.nro_documento,
    partner.name AS cliente,
    doc.name AS tdoc,
    a1.nro_comprobante,
    a1.pventamn,
    a1.pventame,
        CASE
            WHEN a1.moneda = 'PEN'::text THEN a1.pventamn - a1.saldomn
            ELSE NULL::numeric
        END AS cancelamn,
        CASE
            WHEN a1.moneda = 'USD'::text THEN a1.pventame - a1.saldome
            ELSE NULL::numeric
        END AS cancelame,
    a1.saldomn,
    a1.saldome,
    a1.moneda,
    a1.propietario
   FROM saldos_doc_apertura a1
     LEFT JOIN res_partner partner ON partner.id = a1.partner_id
     LEFT JOIN einvoice_catalog_01 doc ON doc.id = a1.type_document_it

			)""")

        self.env.cr.execute("""
			drop view if exists vst_saldos_letras cascade;
			create view vst_saldos_letras as (
			 SELECT a1.account_id,
    a1.partner_id,
    a1.type_document_it,
    btrim(btrim(a1.nro_comprobante::text), chr(9)) AS nro_comprobante,
    min(a1.invoice_id) AS id_factura,
        CASE
            WHEN a3.name IS NULL THEN 'PEN'::text
            ELSE 'USD'::text
        END AS moneda,
    sum(a1.debit) AS debe,
    sum(a1.credit) AS haber,
    sum(a1.debit - a1.credit) AS saldomn,
    sum(a1.amount_currency) AS saldome
   FROM account_move_line a1
     LEFT JOIN account_account a2 ON a2.id = a1.account_id
     LEFT JOIN res_currency a3 ON a3.id = a2.currency_id
     LEFT JOIN account_move a4 ON a4.id = a1.move_id
  WHERE a2.internal_type::text = 'receivable'::text AND a2.centralized = true AND a4.state::text = 'posted'::text AND date_part('year'::text, a4.date) = (( SELECT main_parameter.fiscalyear
           FROM main_parameter))::double precision
  GROUP BY a1.account_id, a1.partner_id, a1.type_document_it, (btrim(btrim(a1.nro_comprobante::text), chr(9))), (
        CASE
            WHEN a3.name IS NULL THEN 'PEN'::text
            ELSE 'USD'::text
        END)

			)""")

        self.env.cr.execute("""
			drop view if exists vst_ctasctes_letras cascade;
			create view vst_ctasctes_letras as (

			 SELECT a7.fecha_canje AS fecha_emi,
    a2.fecha_vencimiento AS fecha_ven,
    a3.nro_documento,
    a3.name AS cliente,
    'LETRA'::text AS tdoc,
    a1.nro_comprobante,
        CASE
            WHEN a1.moneda = 'PEN'::text THEN a1.debe
            ELSE 0::numeric
        END AS pventamn,
        CASE
            WHEN a1.moneda = 'USD'::text THEN a2.monto_divisa
            ELSE 0::numeric
        END AS pventame,
        CASE
            WHEN a1.moneda = 'PEN'::text THEN a1.haber
            ELSE 0::numeric
        END AS cancelamn,
        CASE
            WHEN a1.moneda = 'USD'::text THEN a2.monto_divisa - a1.saldome
            ELSE 0::numeric
        END AS cancelame,
        CASE
            WHEN a1.moneda = 'PEN'::text THEN a1.saldomn
            ELSE 0::numeric
        END AS saldomn,
        CASE
            WHEN a1.moneda = 'USD'::text THEN a1.saldome
            ELSE 0::numeric
        END AS saldome,
    a1.moneda,
    t10.user AS propietario
   FROM vst_saldos_letras a1
     INNER JOIN account_letras_payment_letra_manual a2 ON a2.nro_letra::text = a1.nro_comprobante
     INNER JOIN res_partner a3 ON a3.id = a1.partner_id
     INNER JOIN account_letras_payment a7 ON a7.id = a2.letra_payment_id and a7.partner_id = a3.id

     LEFT JOIN (select letra_payment_id, max(ai.create_uid) as user from account_invoice ai
     inner join account_letras_payment_factura alpf on alpf.invoice_id = ai.id
     group by letra_payment_id) t10 on t10.letra_payment_id = a7.id




			)""")

        self.env.cr.execute("""
			drop view if exists vst_saldos_factura cascade;
			create view vst_saldos_factura as (
 SELECT a1.account_id,
    a1.partner_id,
    a1.type_document_it,
    btrim(btrim(a1.nro_comprobante::text), chr(9)) AS nro_comprobante,
    min(a1.invoice_id) AS id_factura,
    min(a1.id) AS id_apunte,
    sum(a1.debit) AS debe,
    sum(a1.credit) AS haber,
    sum(a1.debit - a1.credit) AS saldomn,
    sum(a1.amount_currency) AS saldome
   FROM account_move_line a1
     LEFT JOIN account_account a2 ON a2.id = a1.account_id
     LEFT JOIN account_move a3 ON a3.id = a1.move_id
  WHERE a2.internal_type::text = 'receivable'::text AND a3.state::text = 'posted'::text AND date_part('year'::text, a3.date) = (( SELECT main_parameter.fiscalyear
           FROM main_parameter))::double precision AND COALESCE(a2.centralized, false) = false
  GROUP BY a1.account_id, a1.partner_id, a1.type_document_it, (btrim(btrim(a1.nro_comprobante::text), chr(9)))

			)""")

        self.env.cr.execute("""
			drop view if exists vst_ctasctes_facturas cascade;
			create view vst_ctasctes_facturas as (

			SELECT a2.date_invoice AS fecha_emi,
    a2.date_due AS fecha_ven,
    a3.nro_documento,
    a3.name AS cliente,
    a4.name AS tdoc,
    a1.nro_comprobante,
        CASE
            WHEN a6.name::text = 'PEN'::text THEN a2.amount_total_company_signed
            ELSE 0::numeric
        END AS pventamn,
        CASE
            WHEN a6.name::text = 'USD'::text THEN a2.amount_total_signed
            ELSE 0::numeric
        END AS pventame,
        CASE
            WHEN a6.name::text = 'PEN'::text THEN a1.haber
            ELSE 0::numeric
        END AS cancelamn,
        CASE
            WHEN a6.name::text = 'USD'::text THEN a2.amount_total_signed - a1.saldome
            ELSE 0::numeric
        END AS cancelame,
        CASE
            WHEN a6.name::text = 'PEN'::text THEN a1.saldomn
            ELSE 0::numeric
        END AS saldomn,
        CASE
            WHEN a6.name::text = 'USD'::text THEN a1.saldome
            ELSE 0::numeric
        END AS saldome,
    a6.name AS moneda,
    a2.user_id AS propietario
   FROM vst_saldos_factura a1
     JOIN account_invoice a2 ON a2.id = a1.id_factura
     LEFT JOIN res_partner a3 ON a3.id = a1.partner_id
     LEFT JOIN einvoice_catalog_01 a4 ON a4.id = a1.type_document_it
     LEFT JOIN res_currency a6 ON a6.id = a2.currency_id

			)""")

        self.env.cr.execute("""
			drop view if exists vst_ctasctes_integral cascade;
			create view vst_ctasctes_integral as (
			SELECT vst_ctasctes_facturas.fecha_emi,
    vst_ctasctes_facturas.fecha_ven,
    vst_ctasctes_facturas.nro_documento,
    vst_ctasctes_facturas.cliente,
    vst_ctasctes_facturas.tdoc,
    vst_ctasctes_facturas.nro_comprobante,
    vst_ctasctes_facturas.pventamn,
    vst_ctasctes_facturas.pventame,
    vst_ctasctes_facturas.cancelamn,
    vst_ctasctes_facturas.cancelame,
    vst_ctasctes_facturas.saldomn,
    vst_ctasctes_facturas.saldome,
    vst_ctasctes_facturas.moneda,
    vst_ctasctes_facturas.propietario
   FROM vst_ctasctes_facturas
  WHERE (vst_ctasctes_facturas.saldomn + vst_ctasctes_facturas.saldome) <> 0::numeric
UNION ALL
 SELECT vst_ctasctes_letras.fecha_emi,
    vst_ctasctes_letras.fecha_ven,
    vst_ctasctes_letras.nro_documento,
    vst_ctasctes_letras.cliente,
    vst_ctasctes_letras.tdoc,
    vst_ctasctes_letras.nro_comprobante,
    vst_ctasctes_letras.pventamn,
    vst_ctasctes_letras.pventame,
    vst_ctasctes_letras.cancelamn,
    vst_ctasctes_letras.cancelame,
    vst_ctasctes_letras.saldomn,
    vst_ctasctes_letras.saldome,
    vst_ctasctes_letras.moneda,
    vst_ctasctes_letras.propietario
   FROM vst_ctasctes_letras
  WHERE (vst_ctasctes_letras.saldomn + vst_ctasctes_letras.saldome) <> 0::numeric
UNION ALL
 SELECT vst_ctasctes_apertura.fecha_emi,
    vst_ctasctes_apertura.fecha_ven,
    vst_ctasctes_apertura.nro_documento,
    vst_ctasctes_apertura.cliente,
    vst_ctasctes_apertura.tdoc,
    vst_ctasctes_apertura.nro_comprobante,
    vst_ctasctes_apertura.pventamn,
    vst_ctasctes_apertura.pventame,
    vst_ctasctes_apertura.cancelamn,
    vst_ctasctes_apertura.cancelame,
    vst_ctasctes_apertura.saldomn,
    vst_ctasctes_apertura.saldome,
    vst_ctasctes_apertura.moneda,
    vst_ctasctes_apertura.propietario
   FROM vst_ctasctes_apertura
  WHERE (vst_ctasctes_apertura.saldomn + vst_ctasctes_apertura.saldome) <> 0::numeric)

			""")
        filtro = []
        #usuario = self.env['res.users'].browse(self.env.uid)

        #permisos = self.env['res.groups'].search([('name','=','Venta:Vendedor Normal')])[0]
        #if self.env.uid in permisos.users.ids:
        #	filtro.append( ('propietario','=',self.env.uid) )

        #permisos = self.env['res.groups'].search([('name','=','Venta:Vendedor Coorporativo')])[0]
        #if self.env.uid in permisos.users.ids:
        #	filtro.append( ('propietario','=',self.env.uid) )

        #permisos = self.env['res.groups'].search([('name','=','Venta:Jefe de Equipo')])[0]
        #if self.env.uid in permisos.users.ids:
        #	contenedor = [self.env.uid]
        #	teams = self.env['crm.team'].search([('user_id','=',self.env.uid)])
        #	for team in teams:
        #		for i in team.member_ids:
        #			if i.id not in contenedor:
        #				contenedor.append(i.id)
        # allpartner = self.env['res.users'].search([])
        # for i in allpartner:
        # 	if i.partner_id.team_id.id == usuario.partner_id.team_id.id:
        # 		contenedor.append(i.id)

        #	filtro.append( ('propietario','in',contenedor ) )

        #permisos = self.env['res.groups'].search([('name','=','Venta:Gerente')])[0]
        #if self.env.uid in permisos.users.ids:
        #	filtro = []

        self.env.cr.execute(
            """  DROP VIEW IF EXISTS saldo_comprobante_periodo_propietario;
			create or replace view saldo_comprobante_periodo_propietario as (

			select row_number() OVER () AS id,* from
			(
				select * from vst_ctasctes_integral 

				) T
			)

			""")

        import io
        from xlsxwriter.workbook import Workbook
        output = io.BytesIO()
        ########### PRIMERA HOJA DE LA DATA EN TABLA
        #workbook = Workbook(output, {'in_memory': True})

        direccion = self.env['main.parameter'].search([])[0].dir_create_file

        workbook = Workbook(direccion + 'reporteperiodo.xlsx')
        worksheet = workbook.add_worksheet("Saldo Comprobantes x Periodo")
        #Print Format
        worksheet.set_landscape()  #Horizontal
        worksheet.set_paper(9)  #A-4
        worksheet.set_margins(left=0.75, right=0.75, top=1, bottom=1)
        worksheet.fit_to_pages(1, 0)  # Ajustar por Columna

        bold = workbook.add_format({'bold': True})
        normal = workbook.add_format()
        boldbord = workbook.add_format({'bold': True})
        boldbord.set_border(style=2)
        boldbord.set_align('center')
        boldbord.set_align('vcenter')
        boldbord.set_text_wrap()
        boldbord.set_font_size(9)
        boldbord.set_bg_color('#DCE6F1')
        numbertres = workbook.add_format({'num_format': '0.000'})
        numberdos = workbook.add_format({'num_format': '0.00'})
        bord = workbook.add_format()
        bord.set_border(style=1)
        bord.set_text_wrap()
        numberdos.set_border(style=1)
        numbertres.set_border(style=1)

        title = workbook.add_format({'bold': True})
        title.set_align('center')
        title.set_align('vcenter')
        title.set_text_wrap()
        title.set_font_size(20)
        worksheet.set_row(0, 30)

        x = 4
        tam_col = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
        tam_letra = 1.2
        import sys
        reload(sys)
        sys.setdefaultencoding('iso-8859-1')

        worksheet.merge_range(0, 0, 0, 11, u"Cuenta Corriente a la fecha",
                              title)

        worksheet.write(3, 0, u"Propietario", boldbord)
        worksheet.write(3, 1, u"Fecha Emision", boldbord)
        worksheet.write(3, 2, u"Fecha Vencimiento", boldbord)
        worksheet.write(3, 3, u"Nro Documento", boldbord)
        worksheet.write(3, 4, u"Cliente", boldbord)
        worksheet.write(3, 5, u"TD", boldbord)
        worksheet.write(3, 6, u"Nro Comprobante", boldbord)
        worksheet.write(3, 7, u"Precio Venta MN", boldbord)
        worksheet.write(3, 8, u"Precio Venta ME", boldbord)
        worksheet.write(3, 9, u"Cancela MN", boldbord)
        worksheet.write(3, 10, u"Cancela ME", boldbord)
        worksheet.write(3, 11, u"Saldo MN", boldbord)
        worksheet.write(3, 12, u"Saldo ME", boldbord)
        worksheet.write(3, 13, u"Moneda", boldbord)

        for line in self.env['saldo.comprobante.periodo.propietario'].search(
                filtro):
            worksheet.write(
                x, 0, line.propietario_name if line.propietario_name else '',
                bord)
            worksheet.write(x, 1, line.fecha_emi if line.fecha_emi else '',
                            bord)
            worksheet.write(x, 2, line.fecha_ven if line.fecha_ven else '',
                            bord)
            worksheet.write(x, 3,
                            line.nro_documento if line.nro_documento else '',
                            bord)
            worksheet.write(x, 4, line.cliente if line.cliente else '', bord)
            worksheet.write(x, 5, line.tdoc if line.tdoc else '', bord)
            worksheet.write(
                x, 6, line.nro_comprobante if line.nro_comprobante else '',
                bord)
            worksheet.write(x, 7, line.pventamn, numberdos)
            worksheet.write(x, 8, line.pventame, numberdos)
            worksheet.write(x, 9, line.cancelamn, numberdos)
            worksheet.write(x, 10, line.cancelame, numberdos)
            worksheet.write(x, 11, line.saldomn, numberdos)
            worksheet.write(x, 12, line.saldome, numberdos)
            worksheet.write(x, 13, line.moneda if line.moneda else '', bord)

            x = x + 1

        tam_col = [
            15, 11, 14, 14, 14, 12, 13, 11, 10, 14, 14, 10, 14, 13, 14, 10, 16,
            16, 20, 36
        ]

        worksheet.set_column('A:A', tam_col[0])
        worksheet.set_column('B:B', tam_col[1])
        worksheet.set_column('C:C', tam_col[2])
        worksheet.set_column('D:D', tam_col[3])
        worksheet.set_column('E:E', tam_col[4])
        worksheet.set_column('F:F', tam_col[5])
        worksheet.set_column('G:G', tam_col[6])
        worksheet.set_column('H:H', tam_col[7])
        worksheet.set_column('I:I', tam_col[8])
        worksheet.set_column('J:J', tam_col[9])
        worksheet.set_column('K:K', tam_col[10])
        worksheet.set_column('L:L', tam_col[11])
        worksheet.set_column('M:M', tam_col[12])
        worksheet.set_column('N:N', tam_col[13])
        worksheet.set_column('O:O', tam_col[14])
        worksheet.set_column('P:P', tam_col[15])
        worksheet.set_column('Q:Q', tam_col[16])
        worksheet.set_column('R:R', tam_col[17])
        worksheet.set_column('S:S', tam_col[18])
        worksheet.set_column('T:T', tam_col[19])

        workbook.close()

        f = open(direccion + 'reporteperiodo.xlsx', 'rb')

        sfs_obj = self.pool.get('repcontab_base.sunat_file_save')
        vals = {
            'output_name': 'ReportePeriodo.xlsx',
            'output_file': base64.encodestring(''.join(f.readlines())),
        }

        sfs_id = self.env['export.file.save'].create(vals)

        #import os
        #os.system('c:\\eSpeak2\\command_line\\espeak.exe -ves-f1 -s 170 -p 100 "Se Realizo La exportación exitosamente Y A EDWARD NO LE GUSTA XDXDXDXDDDDDDDDDDDD" ')

        return {
            "type": "ir.actions.act_window",
            "res_model": "export.file.save",
            "views": [[False, "form"]],
            "res_id": sfs_id.id,
            "target": "new",
        }