Афоризм
Кого хочу я осчастливить, тому уже спасенья нет.
Поддержка проекта
Если Вам сайт понравился и помог, то будем признательны за Ваш «посильный» вклад в его поддержку и развитие
• Yandex.Деньги
410013796724260
• Webmoney
R335386147728
Z369087728698
Свойства и методы взаимодействия Java приложений с файлами Excel представлены на странице
библиотеки Apache POI. Здесь рассматриваются примеры использования
Apache POI для создания файлов Excel 2007 или более поздней версии. Если необходимо создать
Excel 1997-2003, то следует использовать классы, наименования которых начинаются с символа ‘H’.
Использование библиотеки Apache POI для чтения файлов Excel с примером рассмотрен
здесь.
Создание книги Excel
// Создание книги Excel XSSFWorkbook book = new XSSFWorkbook(); FileOutputStream fileOut = new FileOutputStream("workbook.xlsx"); // создания страниц // создание строк // создание и форматирование ячеек // запись информации в ячейки // Закрытие book.write(fileOut); fileOut.close();
Создание страницы
XSSFSheet sheet2 = book.createSheet("Sheet 1"); XSSFSheet sheet3 = book.createSheet("Страница 2");
Наименование страницы не должно превышать 31 символ. Следующие символы недопустимы в
наименовании страницы :
0x0 — нулевое значение;
‘:’ — двоеточие;
» — обратный слэш;
‘/’ — прямой слэш;
‘*’ — «звездочка»;
‘?’ — вопросительный знак;
‘[‘ — открывающаяся квадратная скобка;
‘]’ — закрывающаяся квадратная скобка.
Можно использовать утилиту WorkbookUtil для получения наименования страницы книги. Метод
createSafeSheetName данной утилиты заменит «неправильные» символы на пробелы (‘ ‘).
import org.apache.poi.ss.util.WorkbookUtil; String caption = "[O'Brien's sales*?]"; String safeName = WorkbookUtil.createSafeSheetName(caption); // safeName = " O'Brien's sales "; XSSFSheet sheet3 = book.createSheet(safeName);
Определение размера колонки
При определении размера колонки необходимо учитывать максимальное количество символов в колонке,
коэффициент размера символа для заданного шрифта (для «Sans Sherif» равен 1.14388) и коэффициент
EXCEL_COLUMN_WIDTH_FACTOR, равный 256. Метод autoSizeColumn(idx_column) позволяет автоматически
установить размер колонки по максимальному значению.
// Определение размера колонки int width = (int) (6 * 1.14388) * 256; // 1757; sheet.setColumnWidth(0, width); // Автоматическая настройка размера колонки sheet.autoSizeColumn(1);
Метод setColumnWidth(column, width) в качестве параметров принимает номер колонки (отсчет от 0) и
размер колонки. Методу autoSizeColumn(column) необходимо передать только номер колонки.
Создание строки
При создании строки в метод createRow в качестве параметра необходимо передать номер строки
(отсчет от 0). Для определения размера строки можно использовать методы setHeight (short) и
setHeightInPoints (float). При использовании метода setHeight также, как и с определением размера колонки,
необходимо учитывать коэффициенты. Поэтому метод setHeightInPoints оказывается более предпочтительным.
XSSFRow row = sheet.createRow((short)0); row.setHeightInPoints(80.0f);
Создание ячейки, определение типа значения
В следующем примере создаются ячейки, устанавливается их тип и записываются значения.
XSSFCell cell = row.createCell(0); cell.setCellType(CellType.NUMERIC); cell.setCellValue(1.2); cell = row.createCell(1); cell.setCellType(CellType.STRING); cell.setCellValue("Строковое представление"); cell = row.createCell(2); cell.setCellType(CellType.FORMULA); cell.setCellValue("SUM(B3:B5)");
Класс CellType включает свойства [_NONE, BLANK, BOOLEAN, ERROR, FORMULA, NUMERIC, STRING],
которые можно использовать для определения типа значения ячейки.
Определение формата даты ячейки
В следующем примере создаются две ячейки с записью текущей даты. Вторая ячейка форматируется.
CreationHelper createHelper = book.getCreationHelper(); XSSFCellStyle cellStyle = book.createCellStyle(); cellStyle.setDataFormat(createHelper .createDataFormat() .getFormat("m/d/yy h:mm")); XSSFCell cell = row.createCell(0); cell.setCellValue(new Date()); cell = row.createCell(1); cell.setCellStyle(cellStyle); cell.setCellValue(new Date());
Слияние ячеек
Для слияния ячеек используется метод addMergedRegion.
// Создание строки XSSFRow row = sheet.createRow((short) 1); // Создание ячейки XSSFCell cell = row.createCell((short) 1); cell.setCellValue("This is a test of merging"); // Слияние 2-х ячеек в одной строке sheet.addMergedRegion( new CellRangeAddress(1, // первая строка 1, // последняя строка 1, // первая колонка 2) // последняя колонка );
Определение шрифта
// Создание шрифта XSSFFont font = book.createFont(); font.setFontHeightInPoints((short)24); font.setFontName("Courier New"); font.setItalic(true); font.setStrikeout(true); // цвет шрифта font.setColor(new XSSFColor(new java.awt.Color(16,64,255))); // Создание стиля с определением в нем шрифта XSSFCellStyle style = book.createCellStyle(); style.setFont(font); // Создание ячейки с определением ее стиля XSSFRow row = sheet.createRow(0); XSSFCell cell = row.createCell(1); cell.setCellValue("Тестовый шрифт"); cell.setCellStyle(style);
Помните, что максимальное количество создаваемых шрифтов ограничено значением 32767. Необходимо
использовать объекты шрифтов/стилей.
// Неправильно for (int i = 0; i < 100; i++) { XSSFRow row = sheet.createRow(i); for (int j = 0; j < 100; j++) { XSSFCell cell = row.createCell((short) j); XSSFCellStyle style = workbook.createCellStyle(); XSSFFont font = workbook.createFont(); font.setBold(true); style.setFont(font); cell.setCellStyle(style); } } // Правильно XSSFFont font = workbook.createFont(); font.setBold(true); XSSFCellStyle style = workbook.createCellStyle(); style.setFont(font); for (int i = 0; i < 100; i++) { XSSFRow row = sheet.createRow(i); for (int j = 0; j < 100; j++) { XSSFCell cell = row.createCell((short) 0); cell.setCellStyle(style); } }
Определение цвета фона ячейки
Color COLOR_light_gray = new java.awt.Color(232, 232, 232); XSSFCellStyle style = book.createCellStyle(); style.setFillPattern(FillPatternType.SOLID_FOREGROUND); style.setFillForegroundColor(new XSSFColor(COLOR_light_gray));
ПРИМЕЧАНИЕ : для выделения цвета значения настраивайте шрифт (см. выше).
Выравнивание значения
В следующем примере создаются ячейки с различным выравниванием значений по горизонтали и
вертикали.
createCell(wb, row, (short) 0, CellStyle.ALIGN_CENTER, CellStyle.VERTICAL_BOTTOM); createCell(wb, row, (short) 1, CellStyle.ALIGN_CENTER_SELECTION, CellStyle.VERTICAL_BOTTOM); createCell(wb, row, (short) 2, CellStyle.ALIGN_FILL, CellStyle.VERTICAL_CENTER); createCell(wb, row, (short) 3, CellStyle.ALIGN_GENERAL, CellStyle.VERTICAL_CENTER); createCell(wb, row, (short) 4, CellStyle.ALIGN_JUSTIFY, CellStyle.VERTICAL_JUSTIFY); createCell(wb, row, (short) 5, CellStyle.ALIGN_LEFT, CellStyle.VERTICAL_TOP); createCell(wb, row, (short) 6, CellStyle.ALIGN_RIGHT, CellStyle.VERTICAL_TOP); /** * Creates a cell and aligns it a certain way. * * @param book книга Excel * @param row строка * @param column колонка * @param halign горизонтальное выравнивание * @param valign вертикальное выравнивание */ private void createCell(Workbook book, Row row, short column, short halign, short valign) { XSSFCell cell = row.createCell(column); cell.setCellValue("Значение"); // Определение стиля XSSFCellStyle cellStyle = book.createCellStyle(); // Настройка выравнивания стиля cellStyle.setAlignment(halign); cellStyle.setVerticalAlignment(valign); // Стиль ячейки cell.setCellStyle(cellStyle); }
Границы ячейки, Border
// Создание строки XSSFRow row = sheet.createRow(1); // Создание ячейки XSSFCell cell = row.createCell(1); cell.setCellValue("Значение"); // Создание стиля XSSFCellStyle style = book.createCellStyle(); // Определение граничных значений стиля style.setBorderTop (CellStyle.BORDER_MEDIUM_DASHED); style.setBorderRight (CellStyle.BORDER_THIN ); style.setBorderBottom(CellStyle.BORDER_THIN ); style.setBorderLeft (CellStyle.BORDER_THIN ); // Определение цвета граничных значений стиля style.setTopBorderColor (IndexedColors.BLACK.getIndex()); style.setRightBorderColor (IndexedColors.BLUE.getIndex ()); style.setBottomBorderColor(IndexedColors.BLACK.getIndex()); style.setLeftBorderColor (IndexedColors.GREEN.getIndex()); // Определение стиля ячейки cell.setCellStyle(style);
Многострочные ячейки
Для фиксированного разделения/переноса текста в ячейке необходимо в стиле определить
свойство WrapText=true, и в тексте установить разделители ‘n’.
String text = "Фиксированное n разделение n текста"; XSSFCellStyle style = book.createCellStyle(); style.setWrapText(true); XSSFRow row = sheet.createRow(2); XSSFCell cell = row.createCell(2); cell.setCellValue(text); cell.setCellStyle(style);
Использование формулы
Создадим две ячейки. В первую ячейку cell1 запишем сумму значений колонки, а во второй ячейке
cell2 разместим формулу «СУММА()». Для вычисления значения первой ячейки дополнительно используются
методы getColsSummary и getCellValue.
int row = 5; int summa = getColsSummary (1, 2, row); XSSFCell cell1 = row.createCell(2); if (summa > 0) cell1.setCellValue(summa); XSSFCell cell2 = row.createCell(2); String formula = String.format("SUM(B3:B%d)", row); cell2.setCellFormula(formula); //------------------------------------------------------- private int getCellValue (final int cl, final int rw) { XSSFRow row = sheet.getRow(rw); XSSFCell cell = row.getCell(cl); return (int)cell.getNumericCellValue(); } //------------------------------------------------------- private int getColsSummary (int col, int row1, int row2) { int summary = 0; for (int i = row1; i < row2; i++) summary += getCellValue (col, i); return summary; }
Создание файлов Excel методами Workbooks.Add, Worksheet.Copy и текстовых файлов с помощью оператора Open и метода CreateTextFile из кода VBA Excel. Создание документов Word рассмотрено в отдельной статье.
Метод Workbooks.Add
Описание
Файлы Excel можно создавать из кода VBA с помощью метода Add объекта Workbooks.
Workbooks.Add – это метод, который создает и возвращает новую книгу Excel. Новая книга после создания становится активной.
Ссылку на новую книгу Excel, созданную методом Workbooks.Add, можно присвоить объектной переменной с помощью оператора Set
или обращаться к ней, как к активной книге: ActiveWorkbook
.
Синтаксис
Workbooks.Add (Template)
Template – параметр, который определяет, как создается новая книга.
Значение Template | Параметры новой книги |
---|---|
Отсутствует | Новая книга с количеством листов по умолчанию. |
Полное имя существующего файла Excel | Новая книга с указанным файлом в качестве шаблона. |
xlWBATChart | Новый файл с одним листом диаграммы. |
xlWBATWorksheet | Новый файл с одним рабочим листом. |
Примеры
Пример 1
Создание новой книги Excel с количеством листов по умолчанию и сохранение ее в папку, где расположен файл с кодом VBA:
Sub Primer1() ‘Создаем новую книгу Workbooks.Add ‘Сохраняем книгу в папку, где расположен файл с кодом ActiveWorkbook.SaveAs (ThisWorkbook.Path & «Моя новая книга.xlsx») ‘Закрываем файл ActiveWorkbook.Close End Sub |
Файл «Моя новая книга.xlsx» понадобится для следующего примера.
Пример 2
Создание новой книги по файлу «Моя новая книга.xlsx» в качестве шаблона с присвоением ссылки на нее объектной переменной, сохранение нового файла с новым именем и добавление в него нового рабочего листа:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
Sub Primer2() ‘Объявляем объектную переменную с ранней привязкой Dim MyWorkbook As Workbook ‘Создаем новую книгу по шаблону файла «Моя новая книга.xlsx» Set MyWorkbook = Workbooks.Add(ThisWorkbook.Path & «Моя новая книга.xlsx») With MyWorkbook ‘Смотрим какое имя присвоено новому файлу по умолчанию MsgBox .Name ‘»Моя новая книга1″ ‘Сохраняем книгу с новым именем .SaveAs (ThisWorkbook.Path & «Моя самая новая книга.xlsx») ‘Смотрим новое имя файла MsgBox .Name ‘»Моя самая новая книга» ‘Добавляем в книгу новый лист с именем «Мой новый лист» .Sheets.Add.Name = «Мой новый лист» ‘Сохраняем файл .Save End With End Sub |
Метод Worksheet.Copy
Описание
Если в коде VBA Excel применить метод Worksheet.Copy без указания параметра Before или After, будет создана новая книга с копируемым листом (листами). Новая книга станет активной.
Примеры
Пример 3
Создание новой книги с помощью копирования одного листа (в этом примере используется книга, созданная в первом примере):
Sub Primer3() ‘Если книга источник не открыта, ее нужно открыть Workbooks.Open (ThisWorkbook.Path & «Моя новая книга.xlsx») ‘Создаем новую книгу копированием одного листа Workbooks(«Моя новая книга.xlsx»).Worksheets(«Лист1»).Copy ‘Сохраняем новую книгу с именем «Еще одна книжица.xlsx» в папку, ‘где расположен файл с кодом ActiveWorkbook.SaveAs (ThisWorkbook.Path & «Еще одна книжица.xlsx») End Sub |
Также, как и при создании нового файла Excel методом Workbooks.Add, при создании новой книги методом Worksheet.Copy, можно ссылку на нее присвоить объектной переменной.
Пример 4
Создание новой книги, в которую включены копии всех рабочих листов из файла с кодом VBA:
Sub Primer4() ThisWorkbook.Worksheets.Copy End Sub |
Пример 5
Создание новой книги, в которую включены копии выбранных рабочих листов из файла с кодом VBA:
Sub Primer5() ThisWorkbook.Sheets(Array(«Лист1», «Лист3», «Лист7»)).Copy End Sub |
Создание текстовых файлов
Оператор Open
При попытке открыть несуществующий текстовый файл с помощью оператора Open, такой файл будет создан. Новый файл будет создан при открытии его в любом режиме последовательного доступа, кроме Input (только для чтения).
Пример
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
Sub Primer6() Dim ff As Integer, ws As Object ‘Получаем свободный номер для открываемого файла ff = FreeFile ‘Создаем новый текстовый файл путем открытия ‘несуществующего в режиме чтения и записи Open ThisWorkbook.Path & «Мой-новый-файл.txt» For Output As ff ‘Записываем в файл текст Write #ff, «Этот файл создан при его открытии оператором « & _ «Open по несуществующему адресу (полному имени).» ‘Закрываем файл Close ff ‘Открываем файл для просмотра Set ws = CreateObject(«WScript.Shell») ws.Run ThisWorkbook.Path & «Мой-новый-файл.txt» Set ws = Nothing End Sub |
В имени текстового файла пробелы заменены дефисами (знаками минус), так как метод Run объекта Wscript.Shell не способен открывать файлы с именами, содержащими пробелы.
Рекомендую открывать файлы для просмотра методом ThisWorkbook.FollowHyperlink. Пример и преимущества этого метода в статье VBA Excel. Открыть файл другой программы.
Метод FileSystemObject.CreateTextFile
Для создания нового текстового файла из кода VBA Excel по указанному имени, можно использовать метод CreateTextFile объекта FileSystemObject.
Пример
Sub Primer7() Dim fso, fl, ws ‘Создаем новый экземпляр объекта FileSystemObject Set fso = CreateObject(«Scripting.FileSystemObject») ‘Присваиваем переменной fl новый объект TextStream, ‘связанный с созданным и открытым для записи файлом Set fl = fso.CreateTextFile(ThisWorkbook.Path & «Еще-один-текстовый-файл.txt») ‘Записываем в файл текст fl.Write («Этот текстовый файл создан методом CreateTextFile объекта FileSystemObject.») ‘Закрываем файл fl.Close ‘Открываем файл для просмотра Set ws = CreateObject(«WScript.Shell») ws.Run ThisWorkbook.Path & «Еще-один-текстовый-файл.txt» End Sub |
Стоит отметить, что новый текстовый файл может быть создан и с помощью метода OpenTextFile объекта FileSystemObject при условии присвоения параметру create значения True.
OpenXML — Пример создания Excel файла на C#
Язык программирования C#
В данной публикации приведен пример генерации Excel файла при помощи библиотеки OpenXML.
Отличие этой библиотеки OpenXML от Microsoft.Office.Interop.Excel в быстродействии которое на порядок выше.
Для работы с Excel документами необходимо установить расширение DocumentFormat.OpenXML из Nuget, оно позволит создавать Excel документы для версии Microsoft Office не ниже 2010.
Так-же для работы нам понадобится добавить в проект стандартную библиотеку WindowsBase, просто через Add References, без нее приложение не скомпилируется.
Ниже я приведу пример того, с чем работал сам, первоначальный вариант примера был найден где-то на просторах англоязычного интернета, переработан и теперь выглядит так — как выглядит, с моими комментариями и правками.
Пример демонстрирует формирование маленького Excel файла, который содержит тестовый текст в различных ячейках с применением разных стилей, как на изображении ниже:
Исходный код примера консольного приложения формирующего Excel на изображении выше:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using DocumentFormat.OpenXml;
using DocumentFormat.OpenXml.Packaging;
using DocumentFormat.OpenXml.Spreadsheet;
using System.Text.RegularExpressions;
namespace TestXlsx
{
class Program
{
static void Main(string[] args)
{
//Создаем новый документ
using (SpreadsheetDocument document = SpreadsheetDocument.Create("document.xlsx", SpreadsheetDocumentType.Workbook))
{
WorkbookPart workbookPart = document.AddWorkbookPart();
workbookPart.Workbook = new Workbook();
WorksheetPart worksheetPart = workbookPart.AddNewPart<WorksheetPart>();
FileVersion fv = new FileVersion();
fv.ApplicationName = "Microsoft Office Excel";
worksheetPart.Worksheet = new Worksheet(new SheetData());
WorkbookStylesPart wbsp = workbookPart.AddNewPart<WorkbookStylesPart>();
// Добавляем в документ набор стилей
wbsp.Stylesheet = GenerateStyleSheet();
wbsp.Stylesheet.Save();
// Задаем колонки и их ширину
Columns lstColumns = worksheetPart.Worksheet.GetFirstChild<Columns>();
Boolean needToInsertColumns = false;
if (lstColumns == null)
{
lstColumns = new Columns();
needToInsertColumns = true;
}
lstColumns.Append(new Column() { Min = 1, Max = 10, Width = 20, CustomWidth = true });
lstColumns.Append(new Column() { Min = 2, Max = 10, Width = 20, CustomWidth = true });
lstColumns.Append(new Column() { Min = 3, Max = 10, Width = 20, CustomWidth = true });
lstColumns.Append(new Column() { Min = 4, Max = 10, Width = 20, CustomWidth = true });
lstColumns.Append(new Column() { Min = 5, Max = 10, Width = 20, CustomWidth = true });
lstColumns.Append(new Column() { Min = 6, Max = 10, Width = 20, CustomWidth = true });
lstColumns.Append(new Column() { Min = 7, Max = 10, Width = 20, CustomWidth = true });
if (needToInsertColumns)
worksheetPart.Worksheet.InsertAt(lstColumns, 0);
//Создаем лист в книге
Sheets sheets = workbookPart.Workbook.AppendChild(new Sheets());
Sheet sheet = new Sheet() { Id = workbookPart.GetIdOfPart(worksheetPart), SheetId = 1, Name = "Отчет по входящим" };
sheets.Append(sheet);
SheetData sheetData = worksheetPart.Worksheet.GetFirstChild<SheetData>();
//Добавим заголовки в первую строку
Row row = new Row() { RowIndex = 1 };
sheetData.Append(row);
InsertCell(row, 1, "Стиль 1", CellValues.String, 5);
InsertCell(row, 2, "Стиль 2", CellValues.String, 5);
InsertCell(row, 3, "Стиль 3", CellValues.String, 5);
InsertCell(row, 4, "Стиль 4", CellValues.String, 5);
InsertCell(row, 5, "Стиль 5", CellValues.String, 5);
InsertCell(row, 6, "Стиль 6", CellValues.String, 5);
InsertCell(row, 7, "Стиль 7", CellValues.String, 5);
// Добавляем в строку все стили подряд.
row = new Row() { RowIndex = 2 };
sheetData.Append(row);
InsertCell(row, 1, "1", CellValues.Number, 1);
InsertCell(row, 2, ReplaceHexadecimalSymbols("Тест"), CellValues.String, 2);
InsertCell(row, 3, ReplaceHexadecimalSymbols("Тест"), CellValues.String, 3);
InsertCell(row, 4, ReplaceHexadecimalSymbols("Тест"), CellValues.String, 4);
InsertCell(row, 5, ReplaceHexadecimalSymbols("Тест"), CellValues.String, 5);
InsertCell(row, 6, ReplaceHexadecimalSymbols("01.01.2017"), CellValues.String, 6);
InsertCell(row, 7, ReplaceHexadecimalSymbols("123"), CellValues.String, 7);
workbookPart.Workbook.Save();
document.Close();
}
}
//Добавление Ячейки в строку (На вход подаем: строку, номер колонки, тип значения, стиль)
static void InsertCell(Row row, int cell_num, string val, CellValues type, uint styleIndex)
{
Cell refCell = null;
Cell newCell = new Cell() { CellReference = cell_num.ToString() + ":" + row.RowIndex.ToString(), StyleIndex = styleIndex };
row.InsertBefore(newCell, refCell);
// Устанавливает тип значения.
newCell.CellValue = new CellValue(val);
newCell.DataType = new EnumValue<CellValues>(type);
}
//Важный метод, при вставки текстовых значений надо использовать.
//Метод убирает из строки запрещенные спец символы.
//Если не использовать, то при наличии в строке таких символов, вылетит ошибка.
static string ReplaceHexadecimalSymbols(string txt)
{
string r = "[x00-x08x0Bx0Cx0E-x1Fx26]";
return Regex.Replace(txt, r, "", RegexOptions.Compiled);
}
//Метод генерирует стили для ячеек (за основу взят код, найденный где-то в интернете)
static Stylesheet GenerateStyleSheet()
{
return new Stylesheet(
new Fonts(
new Font( // Стиль под номером 0 - Шрифт по умолчанию.
new FontSize() { Val = 11 },
new Color() { Rgb = new HexBinaryValue() { Value = "000000" } },
new FontName() { Val = "Calibri" }),
new Font( // Стиль под номером 1 - Жирный шрифт Times New Roman.
new Bold(),
new FontSize() { Val = 11 },
new Color() { Rgb = new HexBinaryValue() { Value = "000000" } },
new FontName() { Val = "Times New Roman" }),
new Font( // Стиль под номером 2 - Обычный шрифт Times New Roman.
new FontSize() { Val = 11 },
new Color() { Rgb = new HexBinaryValue() { Value = "000000" } },
new FontName() { Val = "Times New Roman" }),
new Font( // Стиль под номером 3 - Шрифт Times New Roman размером 14.
new FontSize() { Val = 14 },
new Color() { Rgb = new HexBinaryValue() { Value = "000000" } },
new FontName() { Val = "Times New Roman" })
),
new Fills(
new Fill( // Стиль под номером 0 - Заполнение ячейки по умолчанию.
new PatternFill() { PatternType = PatternValues.None }),
new Fill( // Стиль под номером 1 - Заполнение ячейки серым цветом
new PatternFill(
new ForegroundColor() { Rgb = new HexBinaryValue() { Value = "FFAAAAAA" } }
)
{ PatternType = PatternValues.Solid }),
new Fill( // Стиль под номером 2 - Заполнение ячейки красным.
new PatternFill(
new ForegroundColor() { Rgb = new HexBinaryValue() { Value = "FFFFAAAA" } }
)
{ PatternType = PatternValues.Solid })
)
,
new Borders(
new Border( // Стиль под номером 0 - Грани.
new LeftBorder(),
new RightBorder(),
new TopBorder(),
new BottomBorder(),
new DiagonalBorder()),
new Border( // Стиль под номером 1 - Грани
new LeftBorder(
new Color() { Auto = true }
)
{ Style = BorderStyleValues.Medium },
new RightBorder(
new Color() { Indexed = (UInt32Value)64U }
)
{ Style = BorderStyleValues.Medium },
new TopBorder(
new Color() { Auto = true }
)
{ Style = BorderStyleValues.Medium },
new BottomBorder(
new Color() { Indexed = (UInt32Value)64U }
)
{ Style = BorderStyleValues.Medium },
new DiagonalBorder()),
new Border( // Стиль под номером 2 - Грани.
new LeftBorder(
new Color() { Auto = true }
)
{ Style = BorderStyleValues.Thin },
new RightBorder(
new Color() { Indexed = (UInt32Value)64U }
)
{ Style = BorderStyleValues.Thin },
new TopBorder(
new Color() { Auto = true }
)
{ Style = BorderStyleValues.Thin },
new BottomBorder(
new Color() { Indexed = (UInt32Value)64U }
)
{ Style = BorderStyleValues.Thin },
new DiagonalBorder())
),
new CellFormats(
new CellFormat() { FontId = 0, FillId = 0, BorderId = 0 }, // Стиль под номером 0 - The default cell style. (по умолчанию)
new CellFormat(new Alignment() { Horizontal = HorizontalAlignmentValues.Center, Vertical = VerticalAlignmentValues.Center, WrapText = true }) { FontId = 1, FillId = 2, BorderId = 1, ApplyFont = true }, // Стиль под номером 1 - Bold
new CellFormat(new Alignment() { Horizontal = HorizontalAlignmentValues.Center, Vertical = VerticalAlignmentValues.Center, WrapText = true }) { FontId = 2, FillId = 0, BorderId = 2, ApplyFont = true }, // Стиль под номером 2 - REgular
new CellFormat() { FontId = 3, FillId = 0, BorderId = 2, ApplyFont = true, NumberFormatId = 4 }, // Стиль под номером 3 - Times Roman
new CellFormat() { FontId = 0, FillId = 2, BorderId = 0, ApplyFill = true }, // Стиль под номером 4 - Yellow Fill
new CellFormat( // Стиль под номером 5 - Alignment
new Alignment() { Horizontal = HorizontalAlignmentValues.Center, Vertical = VerticalAlignmentValues.Center }
)
{ FontId = 0, FillId = 0, BorderId = 0, ApplyAlignment = true },
new CellFormat() { FontId = 0, FillId = 0, BorderId = 1, ApplyBorder = true }, // Стиль под номером 6 - Border
new CellFormat(new Alignment() { Horizontal = HorizontalAlignmentValues.Right, Vertical = VerticalAlignmentValues.Center, WrapText = true }) { FontId = 2, FillId = 0, BorderId = 2, ApplyFont = true, NumberFormatId = 4 } // Стиль под номером 7 - Задает числовой формат полю.
)
); // Выход
}
}
}
Вот и всё.
Надеюсь данный пример окажется кому-то полезен.
OpenXML
C#
Excel
пример
Example
Microsoft Office
- Download sample source code
Introduction
The adoption of XML as the native file format for Excel 2007 has opened up a whole host of new possibilities. Now for the first time we can create native Excel files on the server using standard tools. No longer is there a need to pollute your beautiful server room with a headless PC running Excel and an old VB6 app that uses OLE Automation to create reports. Such things can be consigned to the trash heap of IT history.
However, the new Office Open XML standard is so new there are precious few good code samples. This article aims to correct the situation by providing a flexible set of open source class libraries that you can use to create Excel spreadsheets on the server.
Why create Excel spreadsheets on the server?
Excel has long been recognized as the de facto standard when it comes to presenting management reports. The unique combination of great calculation engine, excellent charting facilities and the possibility to perform «what if» analysis, make it the «must have» business intelligence tool.
So when we came to replace our aging management reporting infrastructure, we set one key requirement: the new system must be Web-based and provide a «download in Excel» option. For our business intelligence project we built the data warehouse using SQL Server 2005 populated from our PeopleSoft and Novient implementations using SQL Server 2005 Integration Services (SSIS). The OLAP cube was built on SQL Server 2005 Analysis Services (SSAS). SQL Server 2005 Reporting Services (SSRS) provides the Web-based access to management reports and the all important «download in Excel» option. So why do we need to create Excel on the server?
The problem with SQL Server 2005 Reporting Services is that it the Excel spreadsheets it generates are «dumb». They contain no formula — just the raw data. So the recipient cannot perform a «what if» analysis by changing a few values and expecting the spreadsheet to recalculate.
We considered a number of ways to overcome this issue, but by far the most attractive is to create the Excel spreadsheet on the server, straight from the OLAP cube data. So we created a web-part for SharePoint Server 2007 so the user could enter their criteria and view the report on-line via Excel Services. Of course users can download the file for off-line viewing in Excel 2007 or even Excel 2003 file format. This SharePoint web-part and its associated web service that does the file format conversion will be the topic of another article.
The Open Source ExcelPackage Assembly
The ExcelPackage assembly is a set of classes and wrappers around the .NET 3.0 System.IO.Packaging
API and the new SpreadsheetML file format. It extracts away the complexity of dealing with the individual XML components that make up the new Excel 2007 file format. The classes are published as an assembly called ExcelPackage which you can install in the GAC and use as the basis of your own applications. In the sprit of open source projects, if you wish to help extend the functionality offered by the ExcelPackage assembly then join the team over at the ExcelPackage Open XML project.
Creating an Excel spreadsheet from scratch
Sample 1 shows how to create a new Excel spreadsheet containing some basic data and calculations. So let’s see how this is achieved.
using OfficeOpenXml; … FileInfo newFile = new FileInfo(@"C:mynewfile.xlsx"); using (ExcelPackage xlPackage = new ExcelPackage(newFile)) { … }
This creates a new instance of the all important ExcelPackage
class which gives you access to the Excel workbook and worksheets. If mynewfile.xlsx
already exists, then ExcelPackage will open the existing file. Otherwise mynewfile.xlsx
will be created from scratch.
Let’s start by adding a new worksheet called “Tinned Goods” and adding some basic data and a simple calculation:
ExcelWorksheet worksheet = xlPackage.Workbook.Worksheets.Add("Tinned Goods"); worksheet.Cell(1, 1).Value = "Product"; … worksheet.Cell(4, 1).Value = "Peas"; worksheet.Cell(5, 1).Value = "Total"; worksheet.Cell(1, 2).Value = "Tins Sold"; ExcelCell cell = worksheet.Cell(2, 2); cell.Value = "15"; string calcStartAddress = cell.CellAddress; worksheet.Cell(3, 2).Value = "32"; … worksheet.Cell(5, 2).Formula = string.Format("SUM({0}:{1})", calcStartAddress, calcEndAddress);
If all this seems a bit too easy — well yes it is! The ExcelPackage
assembly does all the hard work of creating the XML elements that are needed to represent an Excel worksheet, the Excel rows, the Excel cells etc. All you need to do is connect in the data! The ExcelWorksheet
class has all the properties and methods needed to create and manipulate worksheets. A number of supporting classes (such as ExcelCell
, ExcelRow
, ExcelColumn
, ExcelHeaderFooter
etc.) provide properties and methods of each worksheet component. They also provide helper functions that make it easy to manipulate Excel data. For example, the ExcelCell.GetCellAddress(iRow, iColumn)
method turns your row and column integers into Excel-style cell addresses.
Ok, so in our sample some of the data is too wide for the column, so let’s change the column size:
worksheet.Column(1).Width = 15;
Next, add some headers and footers to the spreadsheet. Note how we use the PageNumber and NumberOfPages constants to insert codes into the footer text. This causes Excel to insert the page number and the number of pages in the document footer. worksheet.HeaderFooter.oddHeader.CenteredText = «Tinned Goods Sales»;
worksheet.HeaderFooter.oddFooter.RightAlignedText = string.Format("Page {0} of {1}", ExcelHeaderFooter.PageNumber, ExcelHeaderFooter.NumberOfPages);
OK, so let’s write some real hard code. Let’s insert a line into the worksheet so we can add some more data. This will screw up our formula as it will be referencing the wrong set of rows (i.e. the new row will not be included in the total).
worksheet.InsertRow(3);
Well hell no, the formula is correct. The InsertRow
method not only updates all the row and cell references in the underlying XML, but also updates all the formulas in the spreadsheet! Ok, we now have our report, but we want to ensure our corporate search engine can find the file later. So let’s add some standard and custom document properties.
xlPackage.Workbook.Properties.Title = "Sample 1"; xlPackage.Workbook.Properties.Author = "John Tunnicliffe"; xlPackage.Workbook.Properties.SetCustomPropertyValue("EmployeeID", "1147");
Now save the file and all its components.
xlPackage.Save();
Below is a screenshot of the final output showing the header and the document properties.
Reading data from an Excel spreadsheet
Sample 2 shows how to read data from an existing Excel spreadsheet. We will use the spreadsheet generated by Sample 1 as the source document. To output the contents of column 2 to the console, this is all we need:
using (ExcelPackage xlPackage = new ExcelPackage(existingFile)) { ExcelWorksheet worksheet = xlPackage.Workbook.Worksheets[1]; int iCol = 2; for (int iRow = 1; iRow < 6; iRow++) Console.WriteLine("Cell({0},{1}).Value={2}", iRow, iCol, worksheet.Cell(iRow, iCol).Value); Console.WriteLine("Cell({0},{1}).Formula={2}", 6, iCol, worksheet.Cell(6, iCol).Formula); }
Here is the output from the sample code:
Starting with a template
Sample 3 shows how to create a new Excel spreadsheet based on an existing file and populate it with data from a database. This is a much better approach as you can quickly create a spreadsheet with the right formula and the correct corporate ‘look and feel’ using Excel 2007. You can then have the calculations in your template validated by the business before starting to write any code. This whole approach saves a lot of coding time!
Before running the code sample, open the template and take a look at its content. You will see it already has the desired layout and all the formula and formatting required for the title and total lines. However, it only has room for three «data rows» (i.e. rows 5, 6 & 7). You will see how we cope with this later.
So let’s start by creating a new Excel spreadsheet based on a template.
using OfficeOpenXml; assembly … FileInfo newFile = new FileInfo(@"C:sample3.xlsx"); FileInfo template = new FileInfo(@"C:sample3template.xlsx"); using (ExcelPackage xlPackage = new ExcelPackage(newFile, template)) {…}
Behind the scenes, the ExcelPackage
constructor simply copies the template and opens the new package. Now obtain a reference to the existing worksheet and initialize some variables:
ExcelWorksheet worksheet = xlPackage.Workbook.Worksheets["Sales"]; ExcelCell cell; const int startRow = 5; int row = startRow;
Next open a connection to the database and run the query. This example uses data from the AdventureWorks sample database, so you will need this installed if you want to run the sample.
while (sqlReader.Read()) { int col = 1; if (row > startRow) worksheet.InsertRow(row); for (int i = 0; i < sqlReader.FieldCount; i++) { if (sqlReader.GetName(i) == "EmailAddress") { string hyperlink = "mailto:" + sqlReader.GetValue(i).ToString(); worksheet.Cell(row, 1).Hyperlink = new Uri(hyperlink, UriKind.Absolute); } else { if (sqlReader.GetValue(i) != null) worksheet.Cell(row, col).Value = sqlReader.GetValue(i).ToString(); col++; } } row++; }
So now we have filled our worksheet with the entire dataset. Note how we use the email address as a hyperlink. Using hyperlinks is useful when you want to link one report up with another.
The purist among you will notice that all the data is written into the cell as a string. However, the Cell(row, col).Value = "xxx"
property assignment code checks if the value is a number or a string and sets the cell’s data type accordingly.
As mentioned earlier, the template only has room for three data rows. We cope with this by simply inserting rows into the template — thereby pushing the «Total» row down the sheet. The InsertRow
method automatically updates the formula in the «Total» row so that they take into account the extra rows.
As we have inserted a whole set of rows into the spreadsheet, they will not have the correct style. We correct this by simply iterating through the new rows and copying the style from the first row to all the other rows.
for (int iCol = 1; iCol <= 7; iCol++) { cell = worksheet.Cell(startRow, iCol); for (int iRow = startRow; iRow <= row; iRow++) { worksheet.Cell(iRow, iCol).StyleID = cell.StyleID; } }
The Power of Named Styles
Anyone familiar with styling HTML with CSS will understand the power and flexibility of using named styles rather than updating the style of every individual element. With named styles, the look and feel of the whole spreadsheet can be altered by changing one style definition. This capability was introduced in Excel 2003, but Excel 2007 goes one step further and makes it a dream to create a template using named styles.
We apply two built-in named styles to highlight the top achieving and the worst performing sales reps.
worksheet.Cell(startRow, 6).Style = "Good"; worksheet.Cell(row, 6).Style = "Bad";
The biggest problem with named styles in Excel 2007 is that if they are not used in your template, then Excel strips out the definition when the file is saved. This is a real headache. There are two ways to cope with this (1) add extra rows that have styles applied and delete them later (which is the technique used in this sample) or (2) load your own style.xml file which contains all the definitions you want to use.
Shared formula
Excel 2007 has a neat feature which saves a lot of coding when it comes to applying the same formula to a range of cells. A formula in one cell can be marked as «shared» and all cells referenced by the shared formula obtain their own version of the formula. So if cell E5
has the formula D5*12
, then cell E6
would have the formula D6*12
etc. etc. To set up a shared formula simply call the CreateSharedFormula
method. In the following example, the formula in cell E5
is marked as «shared» and all the other cells in the range E5:E21
are assigned their own variation of the formula.
worksheet.CreateSharedFormula(worksheet.Cell(5, 5), worksheet.Cell(21, 5));
Ensuring your formula are recalculated on File-Open
One problem we came across with Excel 2007 is that it does not automatically re-calculate the spreadsheet when it is re-opened — even when the Calculate option set to automatic! This is because the existing cells in the template have both a formula and a value in the cell. So Excel just assumes the value is correct and does not attempt to re-compute the formula. Of course, we have just added twenty rows of data and updated the formula references in the XML — but Excel has no why of knowing this, so assumes the values must be right!
The only way to force the recalculation is to ensure the cell has no value — just a formula. So the RemoveValue()
method becomes very useful for all formula in the worksheet. Hence:
worksheet.Cell(22, 5).RemoveValue();
Because of this phenomenon, we changed the ExcelCell.Formula property assignment code so that it removes the cell’s value when you assign the cell a formula.
The final output of Sample 3 code should look something like this — much more professional than anything that can be achieved starting from scratch.
Integrity issues
As soon as you start deleting rows or even worksheets from the package, you have potential for integrity issues. Your formulas will reference cells (or worksheets) that no longer exist. The ExcelPackage assembly does a good job of tidying up after you — but cannot cope with complex situations. You will soon know if you have an integrity problem — Excel will complain bitterly when opening the newly created file.
A classic problem is the calcChain.xml
file. This tells Excel in what order the calculations should be processed. So if you delete a row that is referenced by the calcChain, Excel will complain. However, if you simply remove the calcChain.xml
from the package, Excel re-creates it when the file is opened — and does not complain! So this is an easy fix. The ExcelPackage assembly does exactly that — deletes the calcChain.xml
file from the template so that Excel simply re-creates it when the file is opened.
The ExcelPackage assembly also provides you with direct access to each of the XML documents that make up the package. So you can write your own code to manipulate the XML directly. However, if you choose to do this, be careful to ensure the XML conforms to the new Office Open XML standard. Otherwise, Excel will simply strip out your all hard work as «badly formed».
Debugging your application
If you want to understand exactly what is been written into each of the component XML files by the ExcelPackage assembly, then simply add the following line of code:
xlPackage.DebugMode = true;
This will cause the assembly to output the raw XML files in the same location as the output file. You will see a sub-folder called ‘xl’ and another callled ‘docProps’.
Summary
This article has demonstrated just how easy it is to create Excel-based reports on the server using the open source ExcelPackage assembly. We hope you will be able to join us in extending the functionality of the assembly over at the ExcelPackage Open XML project. There is plenty still to do; charting, conditional formatting, inserting comments, to name just a few!
Good luck with your project!
John is a senior business intelligence developer / designer based in London, UK who likes to get his hands dirty doing real code.
Как в эксель создать документ
Как создать файл в формате Excel?
Если Вам необходимо создать файл Excel, то создавайте его только(!) при помощи Microsoft Excel. Причина проста — таблица созданная в LibreOffice, корректно читаться будет только этим самым LibreOffice. А вот если Вы попробуете эту таблицу открыть при помощи Microsoft Excel, то будете очень огорчены тем, что мало того что формулы не работают, так еще и бывает текст смещен. А сам файл создать несложно: кликаем по правой кнопке мыши и выпавшем меню выбираем «создать»/»лист Microsoft Excel».
Самый простой способ — это воспользоваться пакетом Microsoft Office, а именно Microsoft Excel. Там это сделать достаточно тривиально, поэтому, думаю, что это можно не описывать. Теперь другие способы. 😉
Первый из низ, это воспользоваться сторонним пакетом, таким, как например LibreOffice. Для этого, следует открыть приложение LibreOffice Calc, внести нужные данные, далее, пройти в меню «Файл»->»Сохранить как. «. В открывшемся диалоговом окне, выбрать тип файла — «Microsoft Excel (.xls)», ввести имя файла, и собственно говоря, нажать «Сохранить». В данном, случае, нужно быть внимательным, т.к. по умолчанию, формат файлов — .ods.
Второй способ — наиболее интересный. Бывают такие случаи, что требуется оформить результат работы программы в «удобный» для пользователя формат, но по каким-либо причинам, невозможно сделать прямое взаимодействие с Microsoft Excel (к примеру, программа, результат которой следует вывести в данном формате работает на отличной от Windows операционной системе).
Есть несколько способов — первый, перевести данные в формат CSV, и с помощью многочисленных конвертеров (или с помощью самого пакета MS Office) перевести в формат XLS.
Для платформы Microsoft Windows, удобнее всего, будет воспользоваться языком программирования C#. Дело в том, что описание всего интерфейса Microsoft Excel тянет на отдельную книгу, поэтому отсылаю читателя вот сюда или сюда.
Если мы имеем Linux приложение (т.е. XLS-файл, нужно создать из Linux’а, не используя офисные пакеты), то можно воспользоваться языком Perl, с подключенным модулем Spreadsheet::WriteExcel.
Вот, простой пример:
$worksheet->write(1,1,»This is a test»);
Вот, собственно и все.
Да, о самом модуле, его найти можно здесь.
Кстати говоря, модуль является кросс-платформенным, так что ничего не мешает установить Perl в Windows, подключить модуль и «ваять» уже там.
Вставка объекта в электронную таблицу Excel
Примечание: Мы стараемся как можно оперативнее обеспечивать вас актуальными справочными материалами на вашем языке. Эта страница переведена автоматически, поэтому ее текст может содержать неточности и грамматические ошибки. Для нас важно, чтобы эта статья была вам полезна. Просим вас уделить пару секунд и сообщить, помогла ли она вам, с помощью кнопок внизу страницы. Для удобства также приводим ссылку на оригинал (на английском языке).
Для включения содержимого из других программ, таких как Word или Excel, можно использовать связывание и внедрение объектов (OLE).
Технология OLE поддерживается многими различными программами, и технология OLE используется для создания содержимого, которое создается в одной программе, доступной в другой программе. Например, вы можете вставить документ Office Word в книгу Office Excel. Чтобы узнать, какие типы контента можно вставить, в группе текст на вкладке Вставка нажмите кнопку объект . В поле тип объекта отображаются только программы, установленные на вашем компьютере и поддерживающие объекты OLE.
При копировании данных между Excel или любой программой, поддерживающей технологию OLE, например Word, вы можете скопировать эти данные как связанный объект или внедренный объект. Основные различия между связанными и внедренными объектами находятся в том месте, где хранятся данные, а также о том, как объект будет обновлен после того, как вы поместите его в конечный файл. Внедренные объекты хранятся в книге, в которой они вставлены, и не обновляются. Связанные объекты сохраняются как отдельные файлы, и их можно обновить.
Связанные и внедренные объекты в документе
1. внедренный объект не имеет соединения с исходным файлом.
2. связанный объект связан с исходным файлом.
3. исходный файл обновляет связанный объект.
Когда следует использовать связанные объекты
Если вы хотите, чтобы информация в конечный файл обновлялась при изменении данных в исходный файл, используйте связанные объекты.
При использовании связанного объекта исходные данные сохраняются в исходном файле. В конечном файле выводится представление связанных данных, в котором хранятся только исходные данные (и размер объекта, если объект является диаграммой Excel). Исходный файл должен быть доступен на вашем компьютере или в сети для поддержания связи с исходными данными.
Связанные данные могут быть обновлены автоматически при изменении исходных данных в исходном файле. Например, если выбрать абзац в документе Word, а затем вставить его как связанный объект в книгу Excel, то при изменении данных в документе Word можно обновить данные в Excel.
Использование внедренных объектов
Если вы не хотите обновлять скопированные данные при изменении в исходном файле, используйте внедренный объект. Версия исходного кода полностью внедрена в книгу. Если вы копируете данные как внедренный объект, конечный файл требует больше места на диске, чем при связывании данных.
Когда пользователь открывает файл на другом компьютере, он может просматривать внедренный объект без доступа к исходным данным. Так как внедренный объект не содержит связей с исходным файлом, объект не обновляется при изменении исходных данных. Чтобы изменить внедренный объект, дважды щелкните объект, чтобы открыть его и изменить его в исходной программе. Исходная программа (или другая программа, поддерживающая редактирование объекта) должна быть установлена на вашем компьютере.
Изменение способа отображения объекта OLE
Вы можете отобразить связанный объект или внедренный объект в книге так, как она отображается в программа-источник или в виде значка. Если книга будет просматриваться в Интернете и вы не планируете печатать книгу, вы можете отобразить объект в виде значка. Это уменьшает объем отображаемого пространства, занимаемого объектом. Для просмотра, в котором нужно отобразить сведения, дважды щелкните значок.
Как создать реестр документов в Excel: пошаговая инструкция с фото
Здравствуйте, друзья сайта itswat.ru . Людям определённых профессий приходится работать с большим количеством всевозможных документов – внутренних, входящих, исходящих и других. В крупных организациях, где число документов гигантское, система их учёта чётко отлажена. Для создания электронных реестров используются профессиональные программы, лицензия на которые стоит прилично. Но что делать небольшой, только родившейся и ещё не раскрученной компании, или скромному предпринимателю? Документов не слишком много, но они есть и все очень важные. Их потеря может выйти боком, а платить ежемесячно за профессиональное ПО – лишние и пока неуместные траты. Мой ответ – используйте Excel и с помощью нескольких функций систематизируйте и учитывайте свои «важные бумажки». Итак, тема данного материала — как создать реестр документов в Excel. Дело не сложное, но муторное и с множеством нюансов, поэтому расскажу пошагово с картинками.
Что можно поместить в реестр?
Реестр в Excel можно создать для чего угодно, например, для договоров с партнёрами, клиентами или подрядчиками. Ниже вы можете увидеть картинку – шаблон таблицы с заголовками столбцов, отражающими данные, которые необходимо учесть.
Вы можете сделать также реестр платежей. Тоже прикреплю фото примера, может, кому-нибудь пригодится.
Я же буду создавать реестр текстовых документов, содержащих описания товаров, которые я когда-то составлял по просьбе одной бизнесвумен, по чистой случайности, завалявшиеся на моём ноутбуке. Делаю я это не по необходимости, а для того, чтобы наглядно продемонстрировать вам весь процесс. Это и будет пошаговая инструкция. Уяснив принципы, вы легко сможете адаптировать её под себя, изменив шапку таблицы и выбрав только те действия, которые понадобятся именно вам. Я использую Excel 2007, но версия не принципиальна. Вы можете работать в Excel 2010 или более поздних годов выпуска, ничего не потеряете, так как во всех редакциях используемые мной функции также присутствуют, а разделы меню и команды находятся там же, где и раньше.
Пошаговая инструкция
Друзья, вот план того, что нам предстоит сделать для создания удобного и функционального реестра документов:
- Создаём новый документ, задаём ему имя и сохраняем как «Книга с поддержкой макросов».
- Выделяем примерную область значений, выбираем раздел «Вставка», элемент «Таблица», подтверждаем наличие заголовков.
- Заполняем названия заголовков. В моём случае это «Номер», «Заказчик», «Папка», «Название», «Документ» и «Директория».
- Приступаем к заполнению столбцов.
- Столбец «Номер» заполняется просто. Необходимо ввести в первую строку значение 1, а во вторую – 2, выделить обе заполненные ячейки, зацепиться за маленький чёрный квадратик в правом нижнем углу выделенной области и протащить его вниз на нужное количество строк. В нижних ячейках автоматически проставятся значения от 1 до …(зависит от нас).
- Столбец «Заказчик» можно заполнить вручную или способом, описанным для столбца «Название» при условии, что имена заказчиков – это по совместительству названия папок в общей директории.
- В столбце «Папка» я хочу видеть адрес папки, в которой располагается конкретный документ и при этом сделать его ссылкой, при нажатии на которую Excel будет перебрасывать меня в эту папку. Для этого я воспользуюсь функцией «ГИПЕРССЫЛКА». Подробнее опишу ниже.
- В столбце «Название» мне нужно отобразить имена документов, но вводить их все вручную очень долго. В Excel существует небольшая хитрость, позволяющая в разы ускорить процесс и автоматически заполнить ячейки названиями всех документов, находящихся в указанной папке. Это возможно благодаря функции «Файлы», ищите алгоритм чуть ниже.
- Столбец «Документ» будет содержать рабочую ссылку на нужный файл, нажатие на которую спровоцирует его открытие. Как это сделать, ищите чуть ниже.
- Столбец «Директория» — это всё тот же адрес папки, но без гиперссылки. Он нужен для того, чтобы заполнить предыдущие столбцы.
Чтобы получить активный адрес папки, где расположен нужный документ, воспользуемся функцией «Гиперссылка»:
- Ставим курсор в первую ячейку соответствующего столбца.
- Копируем адрес нужной папки.
- Вставляем его сразу в «Директорию», он пригодится в дальнейшем.
- Нажимаем в строке значений на fx и находим нужную функцию или вписываем вручную =ГИПЕРССЫЛКА(«адрес папки»).
- Ещё один способ, на мой взгляд, самый удобный – щёлкаем в нужной ячейке ПКМ (правой кнопкой мыши), в меню выбираем команду «Гиперссылка», в открывшемся мастере отыскиваем нужную папку и подтверждаем действие.
- Так придётся делать для каждого документа, но если учесть, что большое количество их расположено в одной и той же папке, то процесс не должен отнять много времени. Для последующих документов, являющихся соседями первого по директории, адрес можно просто скопировать.
С названием немного сложнее:
- Добавляем к адресу, помещённому нами в «Директорию» ещё один обратный слеш и звёздочку, то есть *.
- Выбираем раздел меню «Формулы», функцию «Диспетчер имён».
- А в её мастере команду «Создать».
- Задаём имя, в моём случае это будет «Название».
- В строке «Диапазон» пишем =ФАЙЛЫ( и щёлкаем курсором по соответствующей ячейке в столбце «Директория», закрываем скобку).
- Нажимаем ОК и «Закрыть».
- Ставим курсор в первую ячейку столбца.
- Вписываем туда формулу =ИНДЕКС(Название;СТРОКА()-1), где Название – это имя, заданное нами на четвёртом шаге данного алгоритма, а -1 обозначает, что данная ячейка стоит второй в столбце.
- Нажимаем «Энтер» и видим, что в столбце появились имена всех файлов, расположенных в указанной папке.
- Таким методом можно поместить в реестр названия не всех файлов, а выборочно в зависимости от формата. Для этого предварительно в адресе папке, указываемом в столбце «Директория», после звёздочки следует написать расширение файла, например, *docx, xls или jpeg. Это актуально, когда в одной папке находятся вперемешку файлы разных форматов – таблицы, картинки, текстовые документы и любые другие.
Если что-то вам по моим картинкам и описанию не понятно, то посмотрите следующую подробную инструкцию в формате видео.
Друзья, столбец «Документ» содержит то же название, но являющееся ссылкой. Чтобы этого добиться, следует проделать все те же действия, что и в предыдущем алгоритме до шага 8. Мы их опустим, так как повторно делать одно и то же не нужно. Теперь немного усложняем формулу. Она примет вид =ГИПЕРССЫЛКА(ИНДЕКС(Название;СТРОКА()-1)). После её размещения и ввода строки заполнятся теми же названиями, но являющими собой активные ссылки.
Вот, кажется, и всё. Старался описать алгоритм наиболее подробно. Меня ещё недавно спросили, как создать реестр сведений о доходах физических лиц, то есть формировать справки 2-НДФЛ и вести их учёт в программе «Налогоплательщик ЮЛ». Тема, в общем, та же, но программа другая, поэтому я решил посвятить ей отдельный материал. До скорых встреч.
Создание комплексных документов в excel
Практическая работа №1
Создание комплексных документов
в табличном процессоре Microsoft Office Excel
Цель работы: использование информационной технологии для создания комплексных документов в табличном процессоре Microsoft Office Excel и изучение основных приемов работы с многостраничной электронной книгой; использование возможностей табличного процессора Microsoft Office Excel для расчетов, графического представления данных и прогнозирования.
Табличный процессор Microsoft Office Excel 2007 дает возможность анализировать, использовать и обрабатывать данные для принятия решений. Он содержит набор инструментов для работы с информацией, представленной в табличной форме. Таблица представляет собой сложный объект, который состоит из элементарных объектов: строка, столбец, ячейка, диапазон ячеек.
Строка — это все ячейки, расположенные на одном горизонтальном уровне. Заголовки строк представлены в виде целых чисел.
Столбец — это все ячейки, расположенные в одном вертикальном ряду таблицы. Заголовки столбцов задаются буквами латинского алфавита.
Ячейка — это элементарный объект электронной таблицы. Адрес ячейки образуется из заголовков столбца и строки, на пересечении которых она находится.
Диапазон ячеек — это группа смежных ячеек, образующих прямоугольную область. Он задается указанием адресов первой и последней его ячеек, разделенных двоеточием.
Электронные таблицы, с которыми работает пользователь, называются рабочими листами. Документы электронных таблиц могут включать несколько рабочих листов и называются рабочими книгами. Книга в Microsoft Office Excel представляет собой файл, используемый для обработки и хранения данных.
В работе с электронными таблицами можно выделить три основных типа данных: число, текст и формула. Текстом в электронных таблицах является любая последовательность символов, состоящая из букв, цифр и пробелов. Число, в отличие от текста, может участвовать в вычислительных операциях. В зависимости от решаемой задачи важно выбрать наиболее подходящий формат представления данных. Для ввода данных в ячейку нужно её выделить (установить курсор на ячейке), ввести данные и нажать клавишу Enter.
Назначение электронной таблицы в первую очередь состоит в автоматизации расчетов над данными. Для этого в ячейки таблицы вводятся формулы, которые являются основным средством для анализа данных. С помощью формул можно складывать, умножать и сравнивать данные, а также объединять значения. Существует стандартный порядок выполнения вычислений, однако его можно изменить с помощью скобок.
Ввод любой формулы начинается со знака равенства. Если его пропустить, то вводимая формула будет воспринята как текст. В формуле используются адреса объектов (ячейки, строки, столбца, диапазона ячеек), которые называются ссылками. Ссылки позволяют связывать между собой любые ячейки электронной таблицы и проводить необходимую обработку табличных данных.
Ссылка на ячейку может быть относительной или абсолютной. Относительными называются ссылки, которые при копировании в составе формулы в другую ячейку автоматически изменяются. Абсолютными называются ссылки, которые при копировании в составе формулы в другую ячейку не изменяются.
Заканчивается ввод формулы нажатием клавиши Enter. Результатом вычислений по арифметической формуле является число. Редактирование содержимого ячейки можно производить в строке формул.
Строкой формул называется специальная строка, расположенная над заголовками столбцов и предназначенная для ввода и редактирования формул и иной информации. Строка формул состоит из двух основных частей: адресной строки, в которой располагаются адреса выделенной ячейки или диапазона ячеек, и строки ввода, в которой отображается информация в ячейке.
Функции — это заранее определенные формулы, которые выполняют вычисления разной степени сложности по заданным величинам, называемым аргументами, и в указанном порядке. Microsoft Office Excel позволяет использовать большой набор функций, что облегчает расчеты в таблицах. Использование функций производится по следующей схеме:
1. Установить курсор в той ячейке, где ожидается получить ответ и удалить её содержимое.
2. Выполнить команду меню Формулы > Вставить функцию или вызвать Мастер функций нажатием кнопки, находящейся рядом со строкой редактирования.
3. На вкладке Библиотека функций выбрать категорию (финансовая, логическая, текстовая, дата и время, ссылки и массивы, математическая или другая) и название необходимой функции. Нажать кнопку ОК.
4. В появившемся диалоговом окне в соответствующих окошках указать необходимые аргументы функции. Нажать кнопку ОК.
Диаграмма является объектом электронной таблицы и предназначена для представления данных в графической форме. Microsoft Office Excel поддерживает различные типы диаграмм, что позволяет представлять данные наиболее понятным для аудитории способом. Создав диаграмму, можно изменить вид элементов диаграммы или удалить те элементы, которые не требуется отображать.
Линии тренда позволяют наглядно показать тенденции изменения данных и оценить значения, которые находятся за пределами фактических данных, то есть помогают анализировать задачи прогноза. Линию тренда можно добавить к ряду данных на диаграмме без накопления, линейчатой, плоской, биржевой, точечной или пузырьковой диаграмме, диаграмме с областями и гистограмме.
Сформировать и заполнить финансовую сводку за неделю. Построить диаграмму изменения финансового результата.
1. На компьютере в своей папке создать документ Microsoft Office Excel.
2. Дать документу имя Комплекс и открыть его.
3. Дать рабочему листу имя Результат.
4. Разместить на листе таблицу 1 согласно рисунку. Выделенные значения не нужно вносить с клавиатуры (они появляются после расчета).
5. Для ввода дней недели набрать Понедельник и произвести автокопирование до Воскресенья (левой кнопкой мыши протянуть вниз за маркер автозаполнения в правом нижнем углу ячейки).
6. Произвести расчет в графе «Финансовый результат» для понедельника по формуле:
= Доход – Расход (в ячейке D4 набрать формулу =В4-С4 и нажать клавишу Enter)
7. Скопировать полученную формулу для получения данных финансового результата за все дни недели (двойной щелчок мыши по маркеру автозаполнения в правом нижнем углу ячейки).
8. Изменить цвет отрицательных значений финансового результата на красный цвет.
8.1 Выделить протягиванием диапазон ячеек с результатами расчетов.
8.2 Выполнить команду меню Главная.
8.3 На вкладке Ячейки выбрать команду Формат > Формат ячеек.
8.4 Указать формат ячеек Денежный с выделением отрицательных чисел красным цветом, число десятичных знаков два.
8.5 Нажать кнопку ОК.
9. Рассчитать средние значения дохода и расхода.
9.1 Установить курсор в ячейку B11.
9.2 Выполнить команду меню Формулы.
9.3 На вкладке Библиотека функций выбрать категорию Другие функции > Статистические > СРЗНАЧ
9.4 В появившемся диалоговом окне в качестве первого числа выделить протягиванием диапазон ячеек В4:В10 с данными для расчета среднего значения дохода.
9.5 Нажать кнопку ОК для завершения ввода формулы.
9.6 Аналогично произвести расчет среднего значения расхода.
10. Рассчитать общий финансовый результат за неделю (на вкладке Библиотека функций можно воспользоваться кнопкой Автосумма на панели инструментов).
11. Построить диаграмму для анализа финансовых результатов по дням недели.
11.1 Выделить протягиванием диапазон ячеек с данными финансового результата D4:D10.
11.2 Выполнить команду меню Вставка.
11.3 На вкладке Диаграммы выбрать категорию Линейчатая.
11.4 Выбрать тип диаграммы Линейчатая с группировкой.
11.5 Выполнить команду меню Работа с диаграммами > Макет (диаграмма является активным объектом).
11.6 На вкладке Подписи использовать инструменты меню для внесения названия диаграммы и подписей данных.
12. Сохранить изменения, не закрывая документ Комплекс и программу Microsoft Office Excel.
Осуществить прогноз численности населения России на 2012 год добавлением линии тренда к ряду данных диаграммы.
1. В открытом документе Комплекс дать новому листу имя Тренд.
2. Разместить на листе таблицу 2 согласно рисунку.
3. Построить диаграмму численности населения.
3.1 Выделить протягиванием диапазон ячеек с числовыми данными о количестве человек (B3:G3).
3.2 Выполнить команду меню Вставка.
3.3 Выбрать тип диаграммы Гистограмма с группировкой.
3.4 Внести название диаграммы и подписи данных. Легенду не добавлять.
4. Создать подпись горизонтальной оси диаграммы.
4.1 Выполнить команду меню Работа с диаграммами > Конструктор (диаграмма является активным объектом).
4.2 На вкладке Данные выполнить команду Выбрать данные.
4.3 В открывшемся окне Выбор источника данных нажать кнопку Изменить в окне Подписи горизонтальной оси (категории).
4.4 Выделить протягиванием диапазон ячеек с годами в таблице 2 согласно приведенному рисунку.
4.5 Нажать кнопку ОК в окне Подписи оси.
4.6 Нажать кнопку ОК в окне Выбор источника данных.
5. Добавить линию тренда к созданной диаграмме.
5.1 Выполнить команду меню Работа с диаграммами > Макет (диаграмма является активным объектом).
5.2 На вкладке Анализ выполнить команду Линия тренда > Дополнительные параметры линии тренда.
5.3 В открывшемся окне Формат линии тренда указать параметры согласно приведенному рисунку.
5.4 Нажать кнопку Закрыть. На диаграмме будут показаны линия тренда и прогноз на один период вперед.
6. Сохранить изменения, не закрывая документ Комплекс и программу Microsoft Office Excel.
Рассчитать удельный вес каждого показателя в общей сумме бюджета в 2012 году.
1. В открытом документе Комплекс дать новому листу имя Удельный вес.
2. Разместить на листе таблицу 3.
Таблица 3. Влияние каждого показателя на общую сумму бюджета
Как создать новый текстовый документ Эксель?
Всем привет, у меня уже есть похожая статья, где я описывал как создать новый документ Ворд, теперь пришла очередь Майкрософт Эксель!
Ms Excel – это текстовый документ, который имеет оформление в виде таблиц и более того к полям таблицы можно применять различные математические функции. Вообще МС Эксель имеет очень много функций, но данная статья о том, как создать новый текстовый файл Эксель.
Способ №1. Как создать новый документ Excel на рабочем столе.
Чтобы создать новый документ Эксель на рабочем столе или в необходимой рабочей папке делаем следующее:
- Переходим на рабочий стол Виндовс или в рабочую папку
- Кликаем правой кнопкой мыши по пустому месту
- В появившемся меню ищем кнопку «Создать», далее нажимаем на «Электронная таблица MS Excel»
- Теперь на рабочем столе или папке у вас появится файл с названием «Электронная таблица Excel», обычно после создания файла эта надпись выделена синим цветом, это означает что мы можем задать свое название документу Эксель.
Вот и все! Теперь вы можете открыть данный файл и создать необходимую вам таблицу! Не забывайте переодически сохранять документы в которых вы работаете.
Способ №2. Как сделать новый документ в Экселе.
Во втором способе я вам рассказать, как создать другой файл Эксель из самой программы. Для этого следуем инструкции:
- Мышкой нажимаем кнопку «Пуск» в левом нижнем углу. И ищем папку «Microsoft Office . », нажимаем на нее и открываем программу MS Excel.
Если у вас установлена Windows 7, то после «Пуска» переходим во вкладку «Все программы» и следуем также как описано выше! - Открылась программа Эксель, выбираем пункт «Пустая книга«, теперь вы можете в ней работать, но чтобы создать документ Экселя, вам необходимо его сохранить.
- В левом верхнем углу нажимаем кнопку «Файл».
- Далее нажимаем «Сохранить».
- Вам будет предложено место для сохранения нового документа, поставьте необходимую папку для сохранения нового файла Эксель и задайте ему нужное название.
- Нажмите кнопку «Сохранить или Ок».
Вот и все! Ничего сложного в этом нет, не торопитесь и у вас все получится!
Как создать новую таблицу в одном документе Экселя
В экселе можно создавать несколько рабочих окон, таблиц, вкладок, листов называйте их как хотите, но сам Эксель подписывает их как «Лист 1, Лист 2 и т.д.»
Каждый лист в документе Excel можно назвать как вам необходимо — это позволяет делать документ многогранным и очень полезным, вы можете хранить разные отчеты или таблицы расчетов в одном файле Экселя. Очень удобно не правда ли?
Итак как сделать несколько документов в одном Ексель файле?
- Для начала создайте документ Ексель, как описано выше или откройте уже существующий документ.
- Теперь внимательно внизу страницы ближе к левому краю, вы должны увидеть надпись «Лист 1 (Sheet 1)» или «Любое название связанное с информацией в этой таблице».
- Рядом с этой вкладкой вы найдете кнопку в виде «Плюсика (+)», она бывает слева или справа от вкладки «Лист 1». Нажав на «Плюсик» вы создадите новый лист документа в Экселе.
- Чтобы переключиться между таблицами, просто щелкните на необходимый лист левой кнопкой мыши!
- Чтобы изменить название листа для удобства, щелкните по нужному листу дважды быстро, у вас откроется окно, где вы сможете задать свое название новой таблице или переименовать старую таблицу.
Вот и все! Желаю удачи и успехов!
Если вам понравилась статья, пожалуйста поделитесь ей в своих социальных сетях с помощью кнопок ниже. Спасибо!