2015-10-16 3 views
0

Я пытаюсь центрировать изображение в файле экспорта Excel с помощью классического ASP. Я пробовал все и прибегал к CSS. CSS не работает (примеры ниже):Центрирование изображения в Excel

 img { 
position: absolute; 
top: 0; bottom:0; left: 0; right:0; 
margin: auto; 
} 

и

img.center { 
display: block; 
margin: 0 auto; 
    } 

Я попытался положить изображение в div и центрирования div. Это тоже не сработало. У меня есть изображение в качестве img тега, как это:

<img border=0 id= "img" name= "img" src="pic.jpg" height ="100" width= "1000"> 

Когда я экспортировать файл в Excel и открыть его, картина всегда в крайнее левое положение.

+0

Что такое код, который вы используете, чтобы поместить изображение в файл? –

+0

Как HTML и CSS можно использовать для размещения изображения в файле Excel? Вы кодируете ASP Classic с VBScript или JavaScript? –

+0

@ExcelHero Эта линия добавляет изображение. Я попытался использовать

(устаревший, я знаю) и помещаю эту строку внутри центрированного div, но это тоже не сработало. –

ответ

0

Хотя простые файлы Excel могут быть созданы с помощью ASP Classic, просто задав заголовки страницы, вам часто потребуется больше контроля.

Пожалуйста, обратите внимание на это: блог http://www.crydust.be/blog/2009/03/02/generate-excel-files-in-asp-classic/

Код repostedform Кристофа Neirynck здесь:

<%@LANGUAGE="JAVASCRIPT" CODEPAGE="65001"%> 
<% 

function getData(connectionString, sql){ 
    var result = null; 
    var adStateOpen = 1; 
    var connection = new ActiveXObject("ADODB.CONNECTION"); 
    try{ 
     connection.Open(connectionString); 
    } catch(e1){ 
     return null; 
    } 
    if (connection.State !== adStateOpen) { 
     return null; 
    } 
    try{ 
     var recordset = connection.Execute(sql); 
    } catch(e2){ 
     return null; 
    } 
    if (!recordset.EOF) { 
     result = recordset.GetRows().toArray(); 
     recordset.Close(); 
    } 
    recordset = null; 
    connection.Close(); 
    connection = null; 
    return result; 
} 


function writeCsvHttpHeaders(filename){ 
    Response.ContentType = "text/csv"; 
    Response.Charset = "utf-8"; 
    Response.AddHeader("Content-Disposition", 
      "attachment; filename="+filename+".csv"); 
} 

function writeXlsHttpHeaders(filename){ 
    Response.ContentType = "application/vnd.ms-excel"; 
    Response.Charset = "utf-8"; 
    Response.AddHeader("Content-Disposition", 
      "attachment; filename="+filename+".xls"); 
} 

function getXlsStart(){ 
    return "" 
    + "<html>\n" 
    + "<head>\n" 
    + "<meta http-equiv=\"Content-Type\" " 
    + "content=\"text/html; charset=UTF-8\">\n" 
    + "<style type=\"text/css\">\n" 
    + "html, body, table {\n" 
    + " margin: 0;\n" 
    + " padding: 0;\n" 
    + " font-size: 11pt;\n" 
    + "}\n" 
    + "table, th, td { \n" 
    + " border: 0.1pt solid #D0D7E5;\n" 
    + " border-collapse: collapse;\n" 
    + " border-spacing: 0;\n" 
    + "}\n" 
    + "</style>\n" 
    + "</head>\n" 
    + "<body>\n" 
    + "<table>\n" 
    + ""; 
} 

function getXlsEnd(){ 
    return "" 
    + "</table>\n" 
    + "</body>\n" 
    + "</html>" 
    + ""; 
} 

function csvEscape(val){ 
    if (typeof val === "number") { 
     return val.toString(10).replace(".", ","); 
    } else if (typeof val === "string") { 
     if (val.indexOf("\"") !== -1) { 
      return "\""+val.replace(/"/g, "\"\"")+"\""; 
     } else if (val.indexOf(";") !== -1) { 
      return "\""+val+"\""; 
     } else { 
      return val; 
     } 
    } else if (val === null) { 
     return "#NULL#"; 
    } else if (val === undefined) { 
     return "#UNDEFINED#"; 
    } else { 
     return "#ERROR#"; 
    } 
} 

function writeCsv(filename, data, columnCount){ 
    writeCsvHttpHeaders(filename); 
    // utf-8 BOM (very important for special characters) 
    Response.Write("\uFEFF"); 
    for (var i=0, il=data.length; i<il; i+=columnCount) { 
     for (var j=0; j<columnCount; j++) { 
      Response.Write(csvEscape(data[i+j])); 
      if (j !== columnCount-1) { 
       Response.Write(";"); 
      } 
     } 
     Response.Write("\n"); 
     // prevent Response Buffering Limit Exceeded 
     if (i % 1000 === 0) { 
      Response.Flush(); 
     } 
    } 
} 

function xlsEscape(val){ 
    if (typeof val === "number") { 
     return val.toString(10).replace(".", ","); 
    } else if (typeof val === "string") { 
     return Server.HTMLEncode(val); 
    } else if (val === null) { 
     return "#NULL#"; 
    } else if (val === undefined) { 
     return "#UNDEFINED#"; 
    } else { 
     return "#ERROR#"; 
    } 
} 

function writeXls(filename, data, columnCount){ 
    writeXlsHttpHeaders(filename); 
    Response.Write(getXlsStart()); 
    for (var i=0, il=data.length; i<il; i+=columnCount) { 
     Response.Write("<tr>"); 
     for (var j=0; j<columnCount; j++) { 
      Response.Write("<td>"); 
      Response.Write(xlsEscape(data[i+j])); 
      Response.Write("</td>"); 
     } 
     Response.Write("</tr>\n"); 
     // prevent Response Buffering Limit Exceeded 
     if (i % 1000 === 0) { 
      Response.Flush(); 
     } 
    } 
    Response.Write(getXlsEnd()); 
} 

function main(){ 
    var filetype = Request.QueryString("filetype")(); 
    Var connectionString = "Provider=SQLOLEDB.1;" 
    + "Data Source=LAPTOP\\SQLEXPRESS;" 
    + "User ID=internal;" 
    + "Password=internal;" 
    + "Initial Catalog=trees_in_sql"; 
    Var sql = "" 
    + "SELECT id \n" 
    + ", name \n" 
    + "FROM People \n" 
    + ";"; 
    var filename = "filename"; 
    var columnCount = 2; 

    var data = getData(connectionString, sql); 
    if (data !== null) { 
     Response.Clear(); 
     if (filetype === "csv") { 
      writeCsv(filename, data, columnCount); 
     } else { 
      writeXls(filename, data, columnCount); 
     } 
    } else { 
     Response.Write("Error, no data found"); 
    } 
    Response.End(); 
} 

main(); 

%> 

.

ВАЖНЫЕ

Что касается изображения конкретно, вы должны смотреть на это: http://www.experts-exchange.com/Programming/Languages/Scripting/ASP/Q_27115638.html

Из приведенной выше ссылке:

<!--#include file="functions.asp"--> 
<% 
response.ContentType = "application/vnd.ms-excel" 
thedate = CStr(Now()) 
groupid = request.querystring("groupid") 

GroupName = getGroupName(groupid) 

datetimestring = Replace(FormatDateTime(Now(), vbShortDate), "/", "-") & "_" & Replace(FormatDateTime(Now(), vbShortTime), ":", "") 
response.AddHeader "Content-Disposition", "attachment;filename=GroupAttendanceExport_" & GroupName & "_" & datetimestring & ".xls" 

response.write "<html><body><table>" 
response.write "<tr><td><img border=0 src='https://www.example.org/xxx_Logo_small.jpg'></td></tr>" 
response.write "<tr><td></td></tr>" 
response.write "<tr><td></td></tr>" 
response.write "<tr><td></td></tr>" 
response.write "<tr><td></td></tr>" 
response.write "<tr><td></td></tr>" 

response.write "<tr><td > Attendance</td></tr>" 
response.write "</table>" 

MORE CODE HERE 
……… 
……… 
……… 
……… 

response.write "</body></html>" 

.

UPDATE

Это звучит, как вам нужно использовать OpenXML вместо HTML.

Вот пример того, как вставить изображение в определенной ячейке с помощью OpenXML: https://social.msdn.microsoft.com/Forums/office/en-US/157e2fab-ed30-43a5-9824-e144d673a5b7/insert-images-into-specific-excel-cells-using-openxml?forum=oxmlsdk

+0

Благодарим вас за быстрый ответ. Я использовал прилагаемый код раньше в других проектах, но такая же проблема сохраняется. Ссылка на изображение не позволяет мне увидеть подтвержденный ответ. –

+0

Я обновил ответ кодом второй ссылки. –

+0

Запуск 2-й линии дает то, что у меня до сих пор. Изображение в левом верхнем углу экрана. Мне нужно как-то манипулировать местоположением изображения и привести его в центр. –

Смежные вопросы