powered by simpleCommunicator - 2.0.39     © 2025 Programmizd 02
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / переконвертировать xls в csv - как отметить ячейчки, выделенные полужирным?
4 сообщений из 4, страница 1 из 1
переконвертировать xls в csv - как отметить ячейчки, выделенные полужирным?
    #39497302
registered
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день.
Есть скрипт для конвертации XLS в CSV - на JavaScript.
Конвертирует все файлы в каталоге, в котором запущен.
Но некоторые строчки в исходном XLS-файле - полужирные. Нужно как-то находить полужирные строчки, и при конвертации в CSV выделять их каким-либо символом, или дополнительным полем в CSV-файле.

Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
/*
 jPaq - A fully customizable JavaScript/JScript library
 http://jpaq.org/

 Copyright (c) 2011 Christopher West
 Licensed under the MIT license.
 http://jpaq.org/license/

 Version: 1.0.6.000001
 Revised: April 6, 2011
*/
(function(){jPaq={toString:function(){return"jPaq - A fully customizable JavaScript/JScript library created by Christopher West."}};var e=new ActiveXObject("WScript.Shell");alert=function(a,b,c,d){a==null&&(a="");if(!b)b=WScript.ScriptName;c==null&&(c=alert.OKOnly+alert.Exclamation);d==null&&(d=0);return e.Popup(a,d,b,c)};alert.OKOnly=0;alert.OKCancel=1;alert.AbortRetryIgnore=2;alert.YesNoCancel=3;alert.YesNo=4;alert.RetryCancel=5;alert.Critical=16;alert.Question=32;alert.Exclamation=48;alert.Information=
64;alert.Timeout=-1;alert.OK=1;alert.Cancel=2;alert.Abort=3;alert.Retry=4;alert.Ignore=5;alert.Yes=6;alert.No=7})();
/***** END OF JPAQ *****/

try {
  // Create an instance of Excel, but don't allow the content
  // area to be repainted.
  var xlCSV = 6;
  var xlApp = new ActiveXObject("Excel.Application");
  xlApp.Visible = true;
  xlApp.ScreenUpdating = false;
  xlApp.DisplayAlerts = false;

  // Initialize the counts.
  var fileCount = 0, csvCount = 0;

  // Regular expression for match Excel files to be converted.
  var re = /([^\\\/]+)\.xlsx?$/i;

  // Reference the containing folder.
  var fso = new ActiveXObject("Scripting.FileSystemObject");
  var fldr = fso.GetFolder(WScript.ScriptFullName.replace(/[\\\/][^\\\/]+$/, ""));

  // Determine whether or not linefeed characters should be removed.
  var msg = "Would you like to remove linefeed characters from all cells?";
  var title = "Remove Linefeed Characters";
  var removeLf = alert.Yes == alert(msg, title, alert.YesNo + alert.Question);

  // Loop through all of the xls and xlsx files in this folder.
  for(var e = new Enumerator(fldr.Files); !e.atEnd(); e.moveNext()) {
    var aFile = e.item();
    if(re.test(aFile.Name)) {
      xlApp.StatusBar = "Processing " + aFile.Path + "...";
      
      // Open the workbook.
      var wb = xlApp.Workbooks.Open(aFile.Path);
      
      // Save each worksheet as a CSV file.
      for(var e2 = new Enumerator(wb.Sheets); !e2.atEnd(); e2.moveNext()) {
        var ws = e2.item();
        if(removeLf) {
          ws.UsedRange.Replace("\n", "");
        }
        var csvPath = aFile.Path.replace(re, function($0, $1) {
          return $1 /*+ "-" + ws.Name*/ + ".csv";
        });
        ws.SaveAs(csvPath, xlCSV);
        csvCount++;  // Increment the number of CSV's.
      }
      
      // Close the workbook.
      wb.Close();

      // Increment the number of files.
      fileCount++;
    }
  }
  
  // Allow alerts to be displayed, and the screen to be updated again.
  xlApp.DisplayAlerts = true;
  xlApp.ScreenUpdating = true;

  // Close Excel.
  xlApp.Quit();
  
  var msg = "The results are as follows:\nFiles converted:  "
    + fileCount + "\nCSV's created:  " + csvCount;
  var title = "Conversion Process Complete";
  alert(msg, title, alert.Information);
}
catch(e) {
  // If the Excel workbook is open, close it.
  try{ wb.Close(false); }catch(e2){}
  
  // If Excel is open, change the settings back to normal and close it.
  try{
    xlApp.DisplayAlerts = true;
    xlApp.ScreenUpdating = true;
    xlApp.Quit();
  } catch(e2){}
  
  // Print the error message.
  var msg = "The following error caused this script to fail:\n"
    + e.message;
  var title = "Critical Error Occurred";
  alert(msg, title, alert.Critical);
}



Пробовал самостоятельно найти и перебирать ячейки, например, if (ws.UsedRange.Cells(x,y).Font.Bold) ..., но интерпретатор JavaScript ругается на данную конструкцию - после Cells он ожидает ";" , и на этом всё заканчивается.

Пример xls-файла - таблица на 7 колонок, и, если в 3-й колонке - полужирный текст, то нужно дописать в конце этой колонки какой-нибудь символ - т.е., если дописать запятую, то в csv-файле должно появиться дополнительное поле.
Или, в тех строках, которые - полужирные - дописать "+", к примеру, а в тех, которые не полужирные - "-".
...
Рейтинг: 0 / 0
переконвертировать xls в csv - как отметить ячейчки, выделенные полужирным?
    #39497338
Фотография The_Prist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
registered,

Вам надо скорее в раздел по java. Т.к. тут проблема больше в том, как цикл по ячейкам листа добавить именно на этом языке. Excel здесь явно ни при чем.
Должно быть что-то вроде:
После этой строки:
Код: javascript
1.
var ws = e2.item();


можно попробовать написать что-то вроде:
Код: javascript
1.
2.
3.
4.
5.
6.
var row_cnt=ws.Cells(ws.Rows.Coune,3).End(-4162).Row;
for(var lr=1; lr<=row_cnt; lr++) {
	if (ws.Cells(lr, 3).Font.Bold) {
            ws.Cells(lr, 3).Value = ws.Cells(lr, 3).Value + "|";
        }
}


Не уверен, сработает ли именно в этом виде. Не спец по Java.
...
Рейтинг: 0 / 0
переконвертировать xls в csv - как отметить ячейчки, выделенные полужирным?
    #39497340
Фотография The_Prist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ОпечаткаThe_Prist
Код: javascript
1.
var row_cnt=ws.Cells(ws.Rows.Coune,3).End(-4162).Row;



не ws.Rows.Coune, а ws.Rows.Count
...
Рейтинг: 0 / 0
переконвертировать xls в csv - как отметить ячейчки, выделенные полужирным?
    #39497352
registered
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
The_Prist,

Спасибо! Кстати, работает прямо так.
Непонятно, в чём была ошибка - старый пример не сохранил. Может, это и к лучшему :)
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / переконвертировать xls в csv - как отметить ячейчки, выделенные полужирным?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]