- Download demo project and source files — 4.17 KB
- Download source code update.zip — 12.75 KB
Introduction
Generating Excel files from web pages or other applications is a major subject in many articles. I’d like to present here a solution that does not require MS Excel to be installed on the target computer. This article shows how to create Microsoft Excel Binary Interchange File Format (BIFF) without using Microsoft Excel. BIFF is the native file format for Excel data, and can be viewed and modified in Microsoft Excel 97 or later.
Approaches and problems
The technique that is most frequently used to transfer data to an Excel workbooks is Automation. With Automation, you can call methods and properties that are specific to Excel tasks, but this solution has many drawbacks. Some of them are described in the Microsoft Knowledge Base. Additionally, you have to manage the lifetime of the temporary XLS files created on the server. Also, it is slow, because Excel runs in a separate process.
ExcelWriter class
The solution presented here is to write directly to a stream in Excel binary file format. For this purpose, I created very small C# class called ExcelWriter
.
ExcelWriter class diagram
public class ExcelWriter { private Stream stream; private BinaryWriter writer; private ushort[] clBegin = { 0x0809, 8, 0, 0x10, 0, 0 }; private ushort[] clEnd = { 0x0A, 00 }; private void WriteUshortArray(ushort[] value) { for (int i = 0; i < value.Length; i++) writer.Write(value[i]); } public ExcelWriter(Stream stream) { this.stream = stream; writer = new BinaryWriter(stream); } public void WriteCell(int row, int col, string value) { ushort[] clData = { 0x0204, 0, 0, 0, 0, 0 }; int iLen = value.Length; byte[] plainText = Encoding.ASCII.GetBytes(value); clData[1] = (ushort)(8 + iLen); clData[2] = (ushort)row; clData[3] = (ushort)col; clData[5] = (ushort)iLen; WriteUshortArray(clData); writer.Write(plainText); } public void WriteCell(int row, int col, int value) { ushort[] clData = { 0x027E, 10, 0, 0, 0 }; clData[2] = (ushort)row; clData[3] = (ushort)col; WriteUshortArray(clData); int iValue = (value << 2) | 2; writer.Write(iValue); } public void WriteCell(int row, int col, double value) { ushort[] clData = { 0x0203, 14, 0, 0, 0 }; clData[2] = (ushort)row; clData[3] = (ushort)col; WriteUshortArray(clData); writer.Write(value); } public void WriteCell(int row, int col) { ushort[] clData = { 0x0201, 6, 0, 0, 0x17 }; clData[2] = (ushort)row; clData[3] = (ushort)col; WriteUshortArray(clData); } public void BeginWrite() { WriteUshortArray(clBegin); } public void EndWrite() { WriteUshortArray(clEnd); writer.Flush(); } }
Using the code
The ExcelWriter
sample is a console application that writes an XLS file to the name and location specified. The XLS file that is created is simply an empty spreadsheet. Then, you can start to write cell values by calling the WriteCell
method with the row number, column number, and a cell value as parameters:
namespace XLSExportDemo { class Program { static void Main(string[] args) { FileStream stream = new FileStream("demo.xls", FileMode.OpenOrCreate); ExcelWriter writer = new ExcelWriter(stream); writer.BeginWrite(); writer.WriteCell(0, 0, "ExcelWriter Demo"); writer.WriteCell(1, 0, "int"); writer.WriteCell(1, 1, 10); writer.WriteCell(2, 0, "double"); writer.WriteCell(2, 1, 1.5); writer.WriteCell(3, 0, "empty"); writer.WriteCell(3, 1); writer.EndWrite(); stream.Close(); } } }
The picture below shows the final result of this sample:
The ExcelWriter
class supports numeric and text values for the cells, and can be used for exporting data from the database to an XLS file, or for producing an XLS stream from a website on the fly.
I hope this article gives you a head start in working with Excel files from .NET and C#.
History
- 03 March 2009 — Initial submission.
This member has not yet provided a Biography. Assume it’s interesting and varied, and probably something to do with programming.
Как создать электронную таблицу Excel с С#, не требуя установки Excel на компьютере, на котором выполняется код?
Ответ 1
Вы можете использовать библиотеку под названием ExcelLibrary. Это бесплатная библиотека с открытым исходным кодом, размещенная в Google Code:
ExcelLibrary
Это выглядит как порт PHP ExcelWriter, который вы упомянули выше. Он пока не будет писать в новый формат .xlsx, но они работают над добавлением этой функциональности в.
Это очень просто, маленький и простой в использовании. Кроме того, он имеет DataSetHelper, который позволяет вам использовать DataSets и DataTables для удобной работы с данными Excel.
ExcelLibrary, кажется, все еще работает только для более старого формата Excel (файлы .xls), но может добавить поддержку в будущем для новых форматов 2007/2010.
Вы также можете использовать EPPlus, который работает только для файлов формата Excel 2007/2010 (файлы .xlsx). Там также NPOI, который работает с обоими.
Есть несколько известных ошибок с каждой библиотекой, как отмечено в комментариях. В целом, EPPlus кажется лучшим выбором с течением времени. Похоже, что он более активно обновляется и документируется.
Кроме того, как отмечает @АртёмЦарионов ниже, EPPlus имеет поддержку сводных таблиц, а ExcelLibrary может иметь некоторую поддержку (проблема сводных таблиц в ExcelLibrary)
Вот несколько ссылок для быстрого ознакомления:
ExcelLibrary — GNU Lesser GPL
EPPlus — GNU Lesser General Public License (LGPL)
НКОИ — Лицензия Apache
Вот пример кода для ExcelLibrary:
Вот пример получения данных из базы данных и создания из нее рабочей книги. Обратите внимание, что код ExcelLibrary — это одна строка внизу:
//Create the data set and table
DataSet ds = new DataSet("New_DataSet");
DataTable dt = new DataTable("New_DataTable");
//Set the locale for each
ds.Locale = System.Threading.Thread.CurrentThread.CurrentCulture;
dt.Locale = System.Threading.Thread.CurrentThread.CurrentCulture;
//Open a DB connection (in this example with OleDB)
OleDbConnection con = new OleDbConnection(dbConnectionString);
con.Open();
//Create a query and fill the data table with the data from the DB
string sql = "SELECT Whatever FROM MyDBTable;";
OleDbCommand cmd = new OleDbCommand(sql, con);
OleDbDataAdapter adptr = new OleDbDataAdapter();
adptr.SelectCommand = cmd;
adptr.Fill(dt);
con.Close();
//Add the table to the data set
ds.Tables.Add(dt);
//Here the easy part. Create the Excel worksheet from the data set
ExcelLibrary.DataSetHelper.CreateWorkbook("MyExcelFile.xls", ds);
Создать файл Excel так просто. Вы также можете вручную создавать файлы Excel, но вышеперечисленные функции меня поразили.
Ответ 2
Если вы довольны форматом xlsx, попробуйте мой проект GitHub, EPPlus. Все началось с исходного кода из ExcelPackage, но сегодня это полное переписывание.
Он поддерживает диапазоны, стилизацию ячеек, диаграммы, фигуры, изображения, именованные диапазоны, автофильтр и многое другое.
Ответ 3
Я успешно использовал следующие проекты с открытым исходным кодом:
-
ExcelPackage для форматов OOXML (Office 2007)
-
NPOI для формата .XLS(Office 2003). NPOI 2.0 (бета-версия) также поддерживает XLSX.
Посмотрите на мои сообщения в блоге:
Создание электронных таблиц Excel.XLS и .XLSX в С#
NPOI с таблицей Excel и динамической диаграммой
Ответ 4
А как насчет использования Open XML SDK 2.0 для Microsoft Office?
Несколько преимуществ:
- Не требует установленного Office
- Сделано в Microsoft = достойная документация MSDN
- Всего одна .Net dll для использования в проекте
- SDK поставляется со многими инструментами, такими как diff, validator и т.д.
Ссылки:
- Github
- Главная MSDN Посадка
- Начальная страница «Как я…»
- blogs.MSDN brian_jones анонсирует SDK
- blogs.MSDN brian_jones описывает SDK для обработки больших файлов без сбоев (в отличие от метода DOM)
Ответ 5
Вы можете использовать OLEDB для создания и обработки файлов Excel. Проверьте это: Чтение и запись Excel с помощью OLEDB.
Типичный пример:
using (OleDbConnection conn = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\temp\test.xls;Extended Properties='Excel 8.0;HDR=Yes'"))
{
conn.Open();
OleDbCommand cmd = new OleDbCommand("CREATE TABLE [Sheet1] ([Column1] string, [Column2] string)", conn);
cmd.ExecuteNonQuery();
}
EDIT — Еще несколько ссылок:
- Эй, сценарист! Как я могу читать из Excel без использования Excel?
- Как использовать ADO.NET для извлечения и изменения записей в книге Excel с помощью Visual Basic.NET
- Чтение и запись таблиц Excel с использованием ADO.NET С# DbProviderFactory
Ответ 6
Коммерческое решение, SpreadsheetGear для .NET сделает это.
Вы можете увидеть живые образцы ASP.NET (С# и VB) здесь и скачать ознакомительную версию здесь.
Отказ от ответственности: я владею SpreadsheetGear LLC
Ответ 7
Несколько вариантов, которые я использовал:
Если XLSX является обязательным: ExcelPackage — хороший старт, но он умер, когда разработчик прекратил работать над ним. ExML поднялся оттуда и добавил несколько функций. ExML не является плохим вариантом, я все еще использую его на нескольких веб-сайтах.
Тем не менее, для всех моих новых проектов я использую NPOI, порт.NET Apache POI. NPOI 2.0 (Alpha) также поддерживает XLSX.
Ответ 8
Очень легкая опция может заключаться в использовании таблиц HTML. Просто создайте теги head, body и table в файле и сохраните его как файл с расширением .xls. Существуют специальные атрибуты Microsoft, которые можно использовать для создания вывода, включая формулы.
Я понимаю, что вы не можете кодировать это в веб-приложении, но вот пример композиции файла Excel через HTML-таблица. Этот метод можно использовать, если вы кодировали консольное приложение, настольное приложение или службу.
Ответ 9
Вы можете использовать ExcelXmlWriter.
Работает нормально.
Ответ 10
Если вы создаете файлы Excel 2007/2010, попробуйте этот проект с открытым исходным кодом: https://github.com/closedxml/closedxml
Он обеспечивает объектно-ориентированный способ манипулирования файлами (аналогично VBA), не имея дело с проблемами XML-документов. Он может использоваться любым языком.NET, таким как С# и Visual Basic (VB).
ClosedXML позволяет создавать файлы Excel 2007/2010 без приложения Excel. Типичным примером является создание отчетов Excel на веб-сервере:
var workbook = new XLWorkbook(); var worksheet = workbook.Worksheets.Add("Sample Sheet"); worksheet.Cell("A1").Value = "Hello World!"; workbook.SaveAs("HelloWorld.xlsx");
Ответ 11
Возможно, вы захотите проверить классы взаимодействия. Вы говорите, нет OLE (что это не так), но классы взаимодействия очень просты в использовании.
Вы можете быть впечатлены, если не попробовали их.
Пожалуйста, обратите внимание на позицию Microsoft по этому вопросу:
В настоящее время Microsoft не рекомендует и не поддерживает автоматизацию приложений Microsoft Office из любых необслуживаемых, неинтерактивных клиентских приложений или компонентов (включая ASP, ASP.NET, DCOM и NT Services), поскольку Office может работать нестабильно и/или или тупик, когда Office работает в этой среде.
Ответ 12
Здесь полностью бесплатная библиотека С#, которая позволяет экспортировать из DataSet
, DataTable
или List<>
в подлинный файл Excel.xlsx Excel 2007. Использование библиотек OpenXML:
http://mikesknowledgebase.com/pages/CSharp/ExportToExcel.htm
Полный исходный код предоставляется — бесплатно — вместе с инструкциями и демонстрационным приложением.
После добавления этого класса в приложение вы можете экспортировать свой DataSet в Excel только в одной строке кода:
CreateExcelFile.CreateExcelDocument(myDataSet, "C:\Sample.xlsx");
Это не намного проще, чем это…
И это даже не требует наличия Excel на вашем сервере.
Ответ 13
Вы можете рассмотреть возможность создания ваших файлов в формате XML Spreadsheet 2003. Это простой формат XML с использованием хорошо документированной схемы.
Ответ 14
Вы можете взглянуть на GemBox.Spreadsheet.
У них есть бесплатная версия со всеми функциями, но не более 150 строк на листе и 5 листов на книгу, если это соответствует вашим потребностям.
Мне еще не приходилось пользоваться им, но выглядит интересно.
Ответ 15
Syncfusion Essential XlsIO может сделать это. Он не зависит от Microsoft Office, а также имеет специальную поддержку для различных платформ.
- ASP.NET
- ASP.NET MVC
- UWP
- Xamarin
- WPF и Windows Forms
- Служба Windows и пакетные операции
Пример кода:
//Creates a new instance for ExcelEngine.
ExcelEngine excelEngine = new ExcelEngine();
//Loads or open an existing workbook through Open method of IWorkbooks
IWorkbook workbook = excelEngine.Excel.Workbooks.Open(fileName);
//To-Do some manipulation|
//To-Do some manipulation
//Set the version of the workbook.
workbook.Version = ExcelVersion.Excel2013;
//Save the workbook in file system as xlsx format
workbook.SaveAs(outputFileName);
Весь набор средств управления предоставляется бесплатно через программу лицензий сообщества, если вы соответствуете требованиям (доход менее 1 миллиона долларов США). Примечание: я работаю на Syncfusion.
Ответ 16
Доступны различные библиотеки Office 2003 XML для небольших файлов Excel. Тем не менее, я считаю большой размер большой рабочей книги, сохраненной в формате XML, проблемой. Например, рабочая книга, с которой я работаю, будет иметь размер 40 МБ в новом (и, по общему мнению, более плотно упакованном) формате XLSX и станет файлом XML размером 360 МБ.
Насколько мне показало мое исследование, есть два коммерческих пакета, которые позволяют выводить файлы в более старые двоичные форматы. Они:
- Gembox
- ComponentOne Excel
Ни один не дешев (500 долларов США и 800 долларов США соответственно, я думаю). но оба работают независимо от самого Excel.
Что мне было бы интересно, так это модуль вывода в Excel для OpenOffice.org. Интересно, можно ли их портировать с Java на .Net.
Ответ 17
Ну,
вы также можете использовать стороннюю библиотеку, например Aspose.
Эта библиотека имеет то преимущество, что на вашем компьютере не будет установлен Excel, который был бы идеальным в вашем случае.
Ответ 18
OpenXML также является хорошей альтернативой, которая помогает избежать установки MS Excel на сервере. Open XML SDK 2.0, предоставляемый Microsoft, упрощает задачу управления пакетами Open XML и базовыми элементами схемы Open XML в пакете. Интерфейс прикладного программирования Open XML (API) инкапсулирует многие общие задачи, которые разработчики выполняют в пакетах Open XML.
Отметьте OpenXML: Альтернатива, которая помогает избежать установки MS Excel на сервере
Ответ 19
Я согласен с созданием XML-таблиц, вот пример того, как это сделать для С# 3 (все просто блоги об этом в VB 9: P) http://www.aaron-powell.com/linq-to-xml-to-excel
Ответ 20
Я только недавно использовал FlexCel.NET и обнаружил, что это отличная библиотека! Я не говорю это о слишком многих программных продуктах. Нет смысла указывать здесь всю информацию о продажах, вы можете прочитать все функции на их сайте.
Это коммерческий продукт, но вы получите полный исходный код, если купите его. Итак, я полагаю, вы могли бы скомпилировать его в свою сборку, если бы вы действительно этого хотели. В противном случае это всего лишь одна дополнительная сборка для xcopy — без настройки, установки или чего-либо подобного.
Я не думаю, что вы найдете какой-либо способ сделать это без сторонних библиотек, так как .NET Framework, очевидно, не имеет встроенной поддержки для него, а OLE Automation — это целый мир боли.
Ответ 21
Просто хочу добавить другую ссылку на стороннее решение, которое напрямую решает вашу проблему: http://www.officewriter.com
(Отказ от ответственности: я работаю для SoftArtisans, компании, которая делает OfficeWriter)
Ответ 22
Я написал простой код для экспорта набора данных в Excel без использования объекта Excel с помощью System.IO.StreamWriter.
Ниже приведен код, который будет читать все таблицы из набора данных и записывать их на листы один за другим. Я взял помощь из этой статьи.
public static void exportToExcel(DataSet source, string fileName)
{
const string endExcelXML = "</Workbook>";
const string startExcelXML = "<xml version>rn<Workbook " +
"xmlns="urn:schemas-microsoft-com:office:spreadsheet"rn" +
" xmlns:o="urn:schemas-microsoft-com:office:office"rn " +
"xmlns:x="urn:schemas- microsoft-com:office:" +
"excel"rn xmlns:ss="urn:schemas-microsoft-com:" +
"office:spreadsheet">rn <Styles>rn " +
"<Style ss:ID="Default" ss:Name="Normal">rn " +
"<Alignment ss:Vertical="Bottom"/>rn <Borders/>" +
"rn <Font/>rn <Interior/>rn <NumberFormat/>" +
"rn <Protection/>rn </Style>rn " +
"<Style ss:ID="BoldColumn">rn <Font " +
"x:Family="Swiss" ss:Bold="1"/>rn </Style>rn " +
"<Style ss:ID="StringLiteral">rn <NumberFormat" +
" ss:Format="@"/>rn </Style>rn <Style " +
"ss:ID="Decimal">rn <NumberFormat " +
"ss:Format="0.0000"/>rn </Style>rn " +
"<Style ss:ID="Integer">rn <NumberFormat " +
"ss:Format="0"/>rn </Style>rn <Style " +
"ss:ID="DateLiteral">rn <NumberFormat " +
"ss:Format="mm/dd/yyyy;@"/>rn </Style>rn " +
"</Styles>rn ";
System.IO.StreamWriter excelDoc = null;
excelDoc = new System.IO.StreamWriter(fileName);
int sheetCount = 1;
excelDoc.Write(startExcelXML);
foreach (DataTable table in source.Tables)
{
int rowCount = 0;
excelDoc.Write("<Worksheet ss:Name="" + table.TableName + "">");
excelDoc.Write("<Table>");
excelDoc.Write("<Row>");
for (int x = 0; x < table.Columns.Count; x++)
{
excelDoc.Write("<Cell ss:StyleID="BoldColumn"><Data ss:Type="String">");
excelDoc.Write(table.Columns[x].ColumnName);
excelDoc.Write("</Data></Cell>");
}
excelDoc.Write("</Row>");
foreach (DataRow x in table.Rows)
{
rowCount++;
//if the number of rows is > 64000 create a new page to continue output
if (rowCount == 64000)
{
rowCount = 0;
sheetCount++;
excelDoc.Write("</Table>");
excelDoc.Write(" </Worksheet>");
excelDoc.Write("<Worksheet ss:Name="" + table.TableName + "">");
excelDoc.Write("<Table>");
}
excelDoc.Write("<Row>"); //ID=" + rowCount + "
for (int y = 0; y < table.Columns.Count; y++)
{
System.Type rowType;
rowType = x[y].GetType();
switch (rowType.ToString())
{
case "System.String":
string XMLstring = x[y].ToString();
XMLstring = XMLstring.Trim();
XMLstring = XMLstring.Replace("&", "&");
XMLstring = XMLstring.Replace(">", ">");
XMLstring = XMLstring.Replace("<", "<");
excelDoc.Write("<Cell ss:StyleID="StringLiteral">" +
"<Data ss:Type="String">");
excelDoc.Write(XMLstring);
excelDoc.Write("</Data></Cell>");
break;
case "System.DateTime":
//Excel has a specific Date Format of YYYY-MM-DD followed by
//the letter 'T' then hh:mm:sss.lll Example 2005-01-31T24:01:21.000
//The Following Code puts the date stored in XMLDate
//to the format above
DateTime XMLDate = (DateTime)x[y];
string XMLDatetoString = ""; //Excel Converted Date
XMLDatetoString = XMLDate.Year.ToString() +
"-" +
(XMLDate.Month < 10 ? "0" +
XMLDate.Month.ToString() : XMLDate.Month.ToString()) +
"-" +
(XMLDate.Day < 10 ? "0" +
XMLDate.Day.ToString() : XMLDate.Day.ToString()) +
"T" +
(XMLDate.Hour < 10 ? "0" +
XMLDate.Hour.ToString() : XMLDate.Hour.ToString()) +
":" +
(XMLDate.Minute < 10 ? "0" +
XMLDate.Minute.ToString() : XMLDate.Minute.ToString()) +
":" +
(XMLDate.Second < 10 ? "0" +
XMLDate.Second.ToString() : XMLDate.Second.ToString()) +
".000";
excelDoc.Write("<Cell ss:StyleID="DateLiteral">" +
"<Data ss:Type="DateTime">");
excelDoc.Write(XMLDatetoString);
excelDoc.Write("</Data></Cell>");
break;
case "System.Boolean":
excelDoc.Write("<Cell ss:StyleID="StringLiteral">" +
"<Data ss:Type="String">");
excelDoc.Write(x[y].ToString());
excelDoc.Write("</Data></Cell>");
break;
case "System.Int16":
case "System.Int32":
case "System.Int64":
case "System.Byte":
excelDoc.Write("<Cell ss:StyleID="Integer">" +
"<Data ss:Type="Number">");
excelDoc.Write(x[y].ToString());
excelDoc.Write("</Data></Cell>");
break;
case "System.Decimal":
case "System.Double":
excelDoc.Write("<Cell ss:StyleID="Decimal">" +
"<Data ss:Type="Number">");
excelDoc.Write(x[y].ToString());
excelDoc.Write("</Data></Cell>");
break;
case "System.DBNull":
excelDoc.Write("<Cell ss:StyleID="StringLiteral">" +
"<Data ss:Type="String">");
excelDoc.Write("");
excelDoc.Write("</Data></Cell>");
break;
default:
throw (new Exception(rowType.ToString() + " not handled."));
}
}
excelDoc.Write("</Row>");
}
excelDoc.Write("</Table>");
excelDoc.Write(" </Worksheet>");
sheetCount++;
}
excelDoc.Write(endExcelXML);
excelDoc.Close();
}
Ответ 23
IKVM + POI
Или вы могли бы использовать Interop…
Ответ 24
Здесь можно сделать это с LINQ to XML, в комплекте с образцом кода:
Быстрый импорт и экспорт данных Excel с помощью LINQ to XML
Это немного сложно, поскольку вам нужно импортировать пространства имен и т.д., но это позволяет вам избежать любых внешних зависимостей.
(Также, конечно, это VB.NET, а не С#, но вы всегда можете изолировать материал VB.NET в своем собственном проекте, чтобы использовать XML-литералы и делать все остальное на С#.)
Ответ 25
Вы можете создавать красиво отформатированные файлы Excel с помощью этой библиотеки:
http://officehelper.codeplex.com/documentation
Пример ниже:
using (ExcelHelper helper = new ExcelHelper(TEMPLATE_FILE_NAME, GENERATED_FILE_NAME))
{
helper.Direction = ExcelHelper.DirectionType.TOP_TO_DOWN;
helper.CurrentSheetName = "Sheet1";
helper.CurrentPosition = new CellRef("C3");
//the template xlsx should contains the named range "header"; use the command "insert"/"name".
helper.InsertRange("header");
//the template xlsx should contains the named range "sample1";
//inside this range you should have cells with these values:
//<name> , <value> and <comment>, which will be replaced by the values from the getSample()
CellRangeTemplate sample1 = helper.CreateCellRangeTemplate("sample1", new List<string> {"name", "value", "comment"});
helper.InsertRange(sample1, getSample());
//you could use here other named ranges to insert new cells and call InsertRange as many times you want,
//it will be copied one after another;
//even you can change direction or the current cell/sheet before you insert
//typically you put all your "template ranges" (the names) on the same sheet and then you just delete it
helper.DeleteSheet("Sheet3");
}
где образец выглядит следующим образом:
private IEnumerable<List<object>> getSample()
{
var random = new Random();
for (int loop = 0; loop < 3000; loop++)
{
yield return new List<object> {"test", DateTime.Now.AddDays(random.NextDouble()*100 - 50), loop};
}
}
Ответ 26
Некоторые сторонние поставщики компонентов, такие как Infragistics или Syncfusion, обеспечивают очень хорошие возможности экспорта Excel, которые не требуют установки Microsoft Excel.
Поскольку эти поставщики также предоставляют расширенные компоненты сетки пользовательского интерфейса, эти компоненты особенно удобны, если вы хотите, чтобы стиль и макет экспорта excel имитировали текущее состояние сетки в пользовательском интерфейсе вашего приложения.
Если ваш экспорт предназначен для выполнения на стороне сервера с акцентом на экспортируемые данные и без ссылки на пользовательский интерфейс, я бы воспользовался одним из бесплатных вариантов с открытым исходным кодом (например, ExcelLibrary).
Ранее я участвовал в проектах, которые пытались использовать автоматизацию на стороне сервера в пакете Microsoft Office. Исходя из этого опыта, я бы настоятельно рекомендовал против такого подхода.
Ответ 27
public class GridViewExportUtil
{
public static void Export(string fileName, GridView gv)
{
HttpContext.Current.Response.Clear();
HttpContext.Current.Response.AddHeader(
"content-disposition", string.Format("attachment; filename={0}", fileName));
HttpContext.Current.Response.ContentType = "application/ms-excel";
using (StringWriter sw = new StringWriter())
{
using (HtmlTextWriter htw = new HtmlTextWriter(sw))
{
// Create a form to contain the grid
Table table = new Table();
// add the header row to the table
if (gv.HeaderRow != null)
{
GridViewExportUtil.PrepareControlForExport(gv.HeaderRow);
table.Rows.Add(gv.HeaderRow);
}
// add each of the data rows to the table
foreach (GridViewRow row in gv.Rows)
{
GridViewExportUtil.PrepareControlForExport(row);
table.Rows.Add(row);
}
// add the footer row to the table
if (gv.FooterRow != null)
{
GridViewExportUtil.PrepareControlForExport(gv.FooterRow);
table.Rows.Add(gv.FooterRow);
}
// render the table into the htmlwriter
table.RenderControl(htw);
// render the htmlwriter into the response
HttpContext.Current.Response.Write(sw.ToString());
HttpContext.Current.Response.End();
}
}
}
/// <summary>
/// Replace any of the contained controls with literals
/// </summary>
/// <param name="control"></param>
private static void PrepareControlForExport(Control control)
{
for (int i = 0; i < control.Controls.Count; i++)
{
Control current = control.Controls[i];
if (current is LinkButton)
{
control.Controls.Remove(current);
control.Controls.AddAt(i, new LiteralControl((current as LinkButton).Text));
}
else if (current is ImageButton)
{
control.Controls.Remove(current);
control.Controls.AddAt(i, new LiteralControl((current as ImageButton).AlternateText));
}
else if (current is HyperLink)
{
control.Controls.Remove(current);
control.Controls.AddAt(i, new LiteralControl((current as HyperLink).Text));
}
else if (current is DropDownList)
{
control.Controls.Remove(current);
control.Controls.AddAt(i, new LiteralControl((current as DropDownList).SelectedItem.Text));
}
else if (current is CheckBox)
{
control.Controls.Remove(current);
control.Controls.AddAt(i, new LiteralControl((current as CheckBox).Checked ? "True" : "False"));
}
if (current.HasControls())
{
GridViewExportUtil.PrepareControlForExport(current);
}
}
}
}
Привет, это решение заключается в том, чтобы экспортировать вид сетки в ваш файл excel, который может помочь вам
Ответ 28
Самый простой и быстрый способ создания файла Excel из С# — использовать инструмент производительности Open XML. Инструмент производительности Open XML поставляется с установкой Open XML SDK. Инструмент реверсирует любой файл Excel в код С#. Затем код С# можно использовать для повторного создания этого файла.
Обзор процесса:
- Установите SDK Open XML с помощью инструмента.
- Создайте файл Excel, используя последний клиент Excel с желаемым внешним видом. Назовите его
DesiredLook.xlsx
. - С помощью инструмента откройте
DesiredLook.xlsx
и нажмите кнопку Reflect Code рядом с верхней. - Код С# для вашего файла будет создан в правой панели инструмента. Добавьте это в свое решение С# и создайте файлы с этим желаемым внешним видом.
В качестве бонуса этот метод работает для любых файлов Word и PowerPoint. Будучи разработчиком С#, вы вносите изменения в код в соответствии с вашими потребностями.
Я разработал простое приложение WPF для github, которое будет работать в Windows для этой цели. Существует класс-заполнитель под названием GeneratedClass
который вы можете вставить сгенерированный код. Если вы вернетесь к одной версии файла, она будет генерировать файл excel следующим образом:
Ответ 29
Некоторая полезная автоматизация Excel в С#, вы можете найти по следующей ссылке.
http://csharp.net-informations.com/excel/csharp-excel-tutorial.htm
Болтона.
Ответ 30
Посмотрите образцы, как создавать файлы Excel.
Есть примеры в С# и VB.NET
Он управляет файлами XSL XSLX и CSV Excel.
http://www.devtriogroup.com/ExcelJetcell/Samples
Вы можете использовать библиотеку под названием ExcelLibrary. Это бесплатная библиотека с открытым исходным кодом, размещенная в Google Code:
ExcelLibrary
Это выглядит как порт PHP ExcelWriter, который вы упомянули выше. Он пока не будет писать в новый формат .xlsx, но они работают над добавлением этой функциональности в.
Это очень просто, маленький и простой в использовании. Кроме того, он имеет DataSetHelper, который позволяет вам использовать DataSets и DataTables для простой работы с данными Excel.
Кажется, что ExcelLibrary все еще работает только для старого формата Excel (файлы .xls), но в будущем может добавить поддержку для новых форматов 2007/2010.
Вы также можете использовать EPPlus, который работает только для файлов формата Excel 2007/2010 (файлы .xlsx). Там также NPOI, который работает с обоими.
Есть несколько известных ошибок с каждой библиотекой, как отмечено в комментариях. В целом, EPPlus кажется лучшим выбором с течением времени. Кажется, что он также более активно обновляется и документируется.
Кроме того, как отметил @АртёмЦарионов ниже, EPPlus имеет поддержку сводных таблиц, а ExcelLibrary может иметь некоторую поддержку (проблема сводных таблиц в ExcelLibrary)
Вот несколько ссылок для быстрого ознакомления:
ExcelLibrary — GNU Lesser GPL
EPPlus — GNU Lesser General Public License (LGPL)
НКОИ — Лицензия Apache
Вот пример кода для ExcelLibrary:
Вот пример получения данных из базы данных и создания из нее рабочей книги. Обратите внимание, что код ExcelLibrary — это одна строка внизу:
//Create the data set and table
DataSet ds = new DataSet("New_DataSet");
DataTable dt = new DataTable("New_DataTable");
//Set the locale for each
ds.Locale = System.Threading.Thread.CurrentThread.CurrentCulture;
dt.Locale = System.Threading.Thread.CurrentThread.CurrentCulture;
//Open a DB connection (in this example with OleDB)
OleDbConnection con = new OleDbConnection(dbConnectionString);
con.Open();
//Create a query and fill the data table with the data from the DB
string sql = "SELECT Whatever FROM MyDBTable;";
OleDbCommand cmd = new OleDbCommand(sql, con);
OleDbDataAdapter adptr = new OleDbDataAdapter();
adptr.SelectCommand = cmd;
adptr.Fill(dt);
con.Close();
//Add the table to the data set
ds.Tables.Add(dt);
//Here the easy part. Create the Excel worksheet from the data set
ExcelLibrary.DataSetHelper.CreateWorkbook("MyExcelFile.xls", ds);
Создать файл Excel так просто. Вы также можете вручную создавать файлы Excel, но вышеперечисленные функции меня поразили.
На чтение 9 мин Просмотров 27.1к. Опубликовано 09.11.2017
MS Excel давно стал стандартом для работы с электронными таблицами. В статье рассматриваются способы программной выгрузки и загрузки из 1С в файлы Excel.
Существует несколько способов программной работы с файлами Excel из 1С. Каждый из них имеет свои преимущества и недостатки.
Содержание
- Обмен через табличный документ
- Обмен через OLE
- Использование COMSafeArray
- Обмен через ADO
- Выгрузка без программирования
Обмен через табличный документ
Данный способ простой. Его суть заключается в том, что объект ТабличныйДокумент имеет методы:
- Записать(<ИмяФайла>, <ТипФайлаТаблицы>) для выгрузки данных в файл;
- Прочитать(<ИмяФайла>, <СпособЧтенияЗначений>) для загрузки данных из файла.
Внимание!
Метод Записать() доступен как на клиенте, так и на сервере. Метод Прочитать() доступен только на стороне сервера. Необходимо помнить об этом
при планировании клиент-серверного взаимодействия.
Рассмотрим пример сохранения табличного документа в файл. Необходимо любым способом создать и заполнить объект ТабличныйДокумент, а выгрузка в файл осуществляется всего лишь одной строкой:
ТабДок.Записать(ПутьКФайлу, ТипФайлаТабличногоДокумента.XLSX);
Здесь ТабДок — сформированный табличный документ, ПутьКФайлу — имя файла для выгрузки, ТипФайлаТабличногоДокумента.XLSX — формат создаваемого файла. Поддерживаются следующие форматы Excel:
- XLS95 — формат Excel 95;
- XLS97 — формат Excel 97;
- XLSX — формат Excel 2007.
Загрузка из файла осуществляется также достаточно просто:
ТабДок = Новый ТабличныйДокумент;
ТабДок.Прочитать(ПутьКФайлу, СпособЧтенияЗначенийТабличногоДокумента.Значение);
Здесь ПутьКФайлу — путь к загружаемому файлу Excel. СпособЧтенияЗначенийТабличногоДокумента.Значение определяет, каким образом нужно интерпретировать данные, считываемые из исходного документа. Доступны варианты:
- Значение;
- Текст.
Обмен через OLE
Обмен через технологию OLE automation, пожалуй, самый распространенный вариант программной работы с файлами Excel. Он позволяет использовать весь функционал, предоставляемый Excel, но отличается медленной скоростью работы по сравнению с другими способами. Для обмена через OLE требуется установка MS Excel:
- На компьютере конечного пользователя, если обмен происходит на стороне клиента;
- На компьютере сервера 1С:Предприятие, если обмен происходит на стороне сервера.
Пример выгрузки:
// Создание COM-объекта
Эксель = Новый COMОбъект(«Excel.Application»);
// Отключение вывода предупреждений и вопросов
Эксель.DisplayAlerts = Ложь;
// Создание новой книги
Книга = Эксель.WorkBooks.Add();
// Позиционирование на первом листе
Лист = Книга.Worksheets(1);// Запись значения в ячейку
Лист.Cells(НомерСтроки, НомерКолонки).Value = ЗначениеЯчейки;// Сохранение файла
Книга.SaveAs(ИмяФайла);// Закрытие Эксель и освобождение памяти
Эксель.Quit();
Эксель = 0;
Примеры чтения:
// —— ВАРИАНТ 1 ——
// Создание COM-объекта
Эксель = Новый COMОбъект(«Excel.Application»);
// Открытие книги
Книга = Эксель.Workbooks.Open(ПутьКФайлу);
// Позиционирование на нужном листе
Лист = Книга.Worksheets(1);// Чтение значения ячейки, обычно здесь располагается цикл обхода ячеек
ЗначениеЯчейки = Лист.Cells(НомерСтроки, НомерКолонки).Value;// Закрытие книги
Книга.Close(0);// Закрытие Эксель и освобождение памяти
Эксель.Quit();
Эксель = 0;// —— ВАРИАНТ 2 ——
// Открытие книги
Книга = ПолучитьCOMОбъект(ПутьКФайлу);
// Позиционирование на нужном листе
Лист = Книга.Worksheets(1);// Чтение значения ячейки, обычно здесь располагается цикл обхода ячеек
ЗначениеЯчейки = Лист.Cells(НомерСтроки, НомерКолонки).Value;// Закрытие книги
Книга.Application.Quit();
Для обхода всех заполненных строк листа Excel можно использовать следующие приемы:
// —— ВАРИАНТ 1 ——
КоличествоСтрок = Лист.Cells(1, 1).SpecialCells(11).Row;
Для НомерСтроки = 1 По КоличествоСтрок Цикл
ЗначениеЯчейки = Лист.Cells(НомерСтроки, НомерКолонки).Value;
КонецЦикла;// —— ВАРИАНТ 2 ——
НомерСтроки = 0;
Пока Истина Цикл
НомерСтроки = НомерСтроки + 1;
ЗначениеЯчейки = Лист.Cells(НомерСтроки, НомерКолонки).Value;
Если НЕ ЗначениеЗаполнено(ЗначениеЯчейки) Тогда
Прервать;
КонецЕсли;
КонецЦикла;
Вместо последовательного обхода всех строк листа можно выгрузить все данные в массив и работать с ним. Такой подход будет быстрее при чтении большого объема данных:
ВсегоКолонок = Лист.Cells(1, 1).SpecialCells(11).Column;
ВсегоСтрок = Лист.Cells(1, 1).SpecialCells(11).Row;Область = Лист.Range(Лист.Cells(1, 1), Лист.Cells(ВсегоСтрок, ВсегоКолонок));
Данные = Область.Value.Выгрузить();
В таблице ниже приведены наиболее востребованные свойства и методы для работы с Excel через OLE:
Действие | Код | Комментарий |
Работа с приложением | ||
Установка видимости окна приложения | Эксель.Visible = Ложь; | |
Установка режима вывода предупреждений (выводить/не выводить) | Эксель.DisplayAlerts = Ложь; | |
Закрытие приложения | Эксель.Quit(); | |
Работа с книгой | ||
Создание новой книги | Книга = Эксель.WorkBooks.Add(); | |
Открытие существующей книги | Книга = Эксель.WorkBooks.Open(ИмяФайла); | |
Сохранение книги | Книга.SaveAs(ИмяФайла); | |
Закрытие книги | Книга.Close(0); | |
Работа с листом | ||
Установка текущего листа | Лист = Книга.WorkSheets(НомерЛиста); | |
Установка имени | Лист.Name = Имя; | |
Установка защиты | Лист.Protect(); | |
Снятие защиты | Лист.UnProtect(); | |
Установка ориентации страницы | Лист.PageSetup.Orientation = 2; | 1 — книжная, 2 — альбомная |
Установка левой границы | Лист.PageSetup.LeftMargin = Эксель.CentimetersToPoints(Сантиметры); | |
Установка верхней границы | Лист.PageSetup.TopMargin = Эксель.CentimetersToPoints(Сантиметры); | |
Установка правой границы | Лист.PageSetup.RightMargin = Эксель.CentimetersToPoints(Сантиметры); | |
Установка нижней границы | Лист.PageSetup.BottomMargin = Эксель.CentimetersToPoints(Сантиметры); | |
Работа со строками, колонками, ячейками | ||
Установка ширины колонки | Лист.Columns(НомерКолонки).ColumnWidth = Ширина; | |
Удаление строки | Лист.Rows(НомерСтроки).Delete(); | |
Удаление колонки | Лист.Columns(НомерКолонки).Delete(); | |
Удаление ячейки | Лист.Cells(НомерСтроки, НомерКолонки).Delete(); | |
Установка значения | Лист.Cells(НомерСтроки, НомерКолонки).Value = Значение; | |
Объединение ячеек | Лист.Range(Лист.Cells(НомерСтроки, НомерКолонки), Лист.Cells(НомерСтроки1, НомерКолонки1)).Merge(); | |
Установка шрифта | Лист.Cells(НомерСтроки, НомерКолонки).Font.Name = ИмяШрифта; | |
Установка размера шрифта | Лист.Cells(НомерСтроки, НомерКолонки).Font.Size = РазмерШрифта; | |
Установка жирного шрифта | Лист.Cells(НомерСтроки, НомерКолонки).Font.Bold = 1; | 1 — жирный шрифт, 0 — нормальный |
Установка курсива | Лист.Cells(НомерСтроки, НомерКолонки).Font.Italic = 1; | 1 — курсив, 0 — нормальный |
Установка подчеркнутого шрифта | Лист.Cells(НомерСтроки, НомерКолонки).Font.Underline = 2; | 2 — подчеркнутый, 1 — нет |
Для того, чтобы узнать какое свойство нужно менять или какой метод вызвать можно воспользоваться макросами Excel. Если записать макрос с требуемыми действиями, то после можно посмотреть программный код на VBA записанного макроса.
Использование COMSafeArray
При выгрузке больших объемов данных из 1С в Excel для ускорения можно использовать объект COMSafeArray. Согласно определению из синтакс-помощника, COMSafeArray — объектная оболочка над многомерным массивом SafeArray из COM. Позволяет создавать и использовать SafeArray для обмена данными между COM-объектами. Проще говоря, это массив значений, который можно использовать для обмена между приложениями по технологии OLE.
// Создание COMSafeArray
МассивКом = Новый COMSafeArray(«VT_Variant», ВсегоКолонок, ВсегоСтрок);
// Заполнение COMSafeArray
Для Стр = 0 По ВсегоСтрок — 1 Цикл
Для Кол = 0 По ВсегоКолонок — 1 Цикл
МассивКом.SetValue(Кол, Стр, Значение);
КонецЦикла;
КонецЦикла;
// Присвоение области листа Excel значений из COMSafeArray
Лист.Range(Лист.Cells(1, 1), Лист.Cells(ВсегоСтрок, ВсегоКолонок)).Value = МассивКом;
Обмен через ADO
Файл Excel при обмене через ADO представляет собой базу данных, к которой можно обращаться при помощи SQL-запросов. Установка MS Excel не требуется, но обязательно наличие драйвера ODBC, при помощи которого будет осуществляться доступ. Используемый драйвер ODBC определяется при указании строки соединения к файлу. Обычно требуемый драйвер уже установлен на компьютере.
Обмен через ADO заметно быстрее обмена через OLE, но при выгрузке нет возможности использовать функционал Excel для оформления ячеек, разметки страниц, задания формул и т.д.
Пример выгрузки:
// Создание COM-объекта для соединения
Соединение = Новый COMОбъект(«ADODB.Connection»);// Установка строки соединения
Соединение.ConnectionString = «
|Provider=Microsoft.ACE.OLEDB.12.0;
|Data Source=»+ИмяФайла+«;
|Extended Properties=»»Excel 12.0 XML;HDR=YES»»;»;
Соединение.Open(); // Открытие соединения// Создание COM-объекта для команды
Команда = Новый COMОбъект(«ADODB.Command»);
Команда.ActiveConnection = Соединение;// Присвоение текста команды для создания таблицы
Команда.CommandText = «CREATE TABLE [Лист1] (Колонка1 char(255), Колонка2 date, Колонка3 int, Колонка4 float)»;
Команда.Execute(); // Выполнение команды// Присвоение текста команды для добавления строки таблицы
Команда.CommandText = «INSERT INTO [Лист1] (Колонка1, Колонка2, Колонка3, Колонка4) values (‘абвгдеё’, ‘8/11/2017’, ‘12345’, ‘12345,6789’)»;
Команда.Execute(); // Выполнение команды// Удаление команды и закрытие соединения
Команда = Неопределено;
Соединение.Close();
Соединение = Неопределено;
Для создания нового листа и формирования его структуры можно воспользоваться объектами ADOX.Catalog и ADOX.Table. В этом случае код примет вид:
// Создание COM-объекта для работы с книгой
Книга = Новый COMОбъект(«ADOX.Catalog»);
Книга.ActiveConnection = Соединение;// Создание COM-объекта для работы со структурой данных на листе
Таблица = Новый COMОбъект(«ADOX.Table»);
Таблица.Name = «Лист1»;
Таблица.Columns.Append(«Колонка1», 202);
Таблица.Columns.Append(«Колонка2», 7);
Таблица.Columns.Append(«Колонка3», 5);
Таблица.Columns.Append(«Колонка4», 5);// Создание в книге листа с описанной структурой
Книга.Tables.Append(Таблица);
Таблица = Неопределено;
Книга = Неопределено;
В приведенном примере в методе
Таблица.Columns.Append(«Колонка1», 202);
во втором параметре указывается тип колонки. Параметр необязательный, вот некоторые значения типа колонки:
- 5 — adDouble;
- 6 — adCurrency;
- 7 — adDate;
- 11 — adBoolean;
- 202 — adVarWChar;
- 203 — adLongVarWChar.
Пример чтения:
// Создание COM-объекта для соединения
Соединение = Новый COMОбъект(«ADODB.Connection»);// Установка строки соединения
Соединение.ConnectionString = «
|Provider=Microsoft.ACE.OLEDB.12.0;
|Data Source=»+ИмяФайла+«;
|Extended Properties=»»Excel 12.0 XML;HDR=YES»»;»;
Соединение.Open(); // Открытие соединения// Создание COM-объекта для получения выборки
Выборка = Новый COMОбъект(«ADODB.Recordset»);
ТекстЗапроса = «SELECT * FROM [Лист1$]»;// Выполнение запроса
Выборка.Open(ТекстЗапроса, Соединение);// Обход результата выборки
Пока НЕ Выборка.EOF() Цикл
ЗначениеКолонки1 = Выборка.Fields.Item(«Колонка1»).Value; // Обращение по имени колонки
ЗначениеКолонки2 = Выборка.Fields.Item(0).Value; // Обращение по индексу колонки
Выборка.MoveNext();
КонецЦикла;Выборка.Close();
Выборка = Неопределено;
Соединение.Close();
Соединение = Неопределено;
В строке соединения параметр HDR определяет как будет восприниматься первая строка на листе. Возможны варианты:
- YES — первая строка воспринимается как названия колонок. К значениям можно обращаться по имени и по индексу колонки.
- NO — первая строка воспринимается как данные. К значениям можно обращаться только по индексу колонки.
В приведенных примерах рассмотрено лишь несколько объектов ADO. Объектная модель ADO состоит из следующих объектов:
- Connection;
- Command;
- Recordset;
- Record;
- Fields;
- Stream;
- Errors;
- Parameters;
- Properties.
Выгрузка без программирования
Для сохранения данных из 1С в Excel не всегда целесообразно прибегать к программированию. Если в режиме Предприятия пользователь может отобразить требуемые для выгрузки данные, то, их возможно сохранить в Excel без программирования.
Для сохранения табличного документа (например, результата отчета) можно вызвать команду Сохранить или Сохранить как… главного меню.
В открывшемся окне требуется выбрать каталог, имя и формат сохраняемого файла.
Для сохранения данных динамических списков (например, списка номенклатуры) необходимо:
- Вывести данные в табличный документ при помощи команды Еще ⇒ Вывести список…;
- Сохранить табличный документ в требуемый формат.
Содержание
- Открытие файлов формата XLS
- Варианты открытия
- Способ 1: Excel
- Способ 2: пакет LibreOffice
- Способ 3: пакет Apache OpenOffice
- Способ 4: просмотрщик файлов
- Работа с таблицами в браузере: Excel Online и другие бесплатные сервисы
- Excel Online
- Excel Online на Яндекс.Диске
- Google Sheets (Таблицы)
- Zoho Sheet
- OnlyOffice
Открытие файлов формата XLS
Файлы формата XLS являются электронными таблицами. Наравне с XLSX и ODS, указанный формат входит в число наиболее популярных представителей группы табличных документов. Давайте выясним, каким именно программным обеспечением нужно обладать, чтобы работать с таблицами формата XLS.
Варианты открытия
XLS является одним из самых первых форматов электронных таблиц. Он был разработан компанией Microsoft, являясь базовым форматом программы Эксель до версии 2003 года включительно. После этого в качестве главного его заменил более современный и компактный XLSX. Тем не менее, XLS теряет популярность относительно медленно, так как импорт файлов с указанным расширением применяют довольно большое количество сторонних программ, которые по разным причинам не перешли на современный аналог. На сегодняшний день в интерфейсе Эксель указанное расширение именуется «Книга Excel 97 -2003». А теперь давайте узнаем, с помощью какого ПО можно запустить документы этого типа.
Способ 1: Excel
Естественно, что документы данного формата можно открыть с помощью приложения Microsoft Excel, для которого изначально представленные таблицы и были созданы. При этом, в отличие от XLSX, объекты с расширением XLS без дополнительных патчей открывают даже старые программы Excel. Прежде всего, рассмотрим, как это совершить для Excel 2010 и более поздних версий.
- Производим запуск программы и передвигаемся ко вкладке «Файл».
Вместо этих двух действий можно применить сочетание горячих кнопок Ctrl+O, являющееся универсальным для перехода к запуску файлов в большинстве приложений, работающих на операционной системе Windows.
Кроме того, если у вас на компьютере установлен пакет Microsoft Office и вы не вводили изменения в список программ по умолчанию для открытия типов файлов, то запустить книгу XLS в Excel можно просто произведя двойной щелчок по наименованию соответствующего документа в Проводнике Windows или в другом файловом менеджере.
Способ 2: пакет LibreOffice
Открыть книгу XLS можно также при помощи приложения Calc, являющегося частью свободного офисного пакета LibreOffice. Calc – это табличный процессор, представляющий собой бесплатное соответствие Эксель. Он полностью поддерживает работу с документами XLS, включая просмотр, редактирование и сохранение, хоть данный формат и не является базовым для указанной программы.
- Выполняем запуск пакета программ LibreOffice. Запускается стартовое окно LibreOffice с выбором приложений. Но непосредственно активировать сразу Calc для открытия документа XLS не обязательно. Можно, находясь в стартовом окне, произвести комбинированное нажатие кнопок Ctrl+O.
Второй вариант – это в том же стартовом окне кликнуть по наименованию «Открыть файл», размещенное самым первым в вертикальном меню.
Третий вариант предусматривает клик по позиции «Файл» горизонтального списка. После этого появляется раскрывающийся перечень, где следует выбрать позицию «Открыть».
Можно произвести открытие книги XLS непосредственно находясь уже в приложении Кальк.
- После того, как Кальк запущен, кликаем по наименованию «Файл» в вертикальном меню. Из раскрывшегося перечня останавливаем выбор на варианте «Открыть…».
Это действие также можно заменить комбинацией Ctrl+O.
Способ 3: пакет Apache OpenOffice
Следующим вариантом открыть книгу XLS является приложение, которое тоже называется Calc, но входит в офисный пакет Apache OpenOffice. Данная программа также является бесплатной и свободной. Она тоже поддерживает все манипуляции с документами XLS (просмотр, редактирование, сохранение).
- Механизм открытия файла тут очень похож на предыдущий способ. Вслед за запуском стартового окна Apache OpenOffice щелкаем по кнопке «Открыть…».
Можно воспользоваться верхним меню, выбрав в нем позицию «Файл», а затем в открывшемся перечне перейдя по названию «Открыть».
Наконец, есть возможность просто набрать комбинацию на клавиатуре Ctrl+O.
Как и при использовании LibreOffice, открыть книгу можно непосредственно из приложения Кальк.
- При открытом окне Кальк выполняем комбинированное нажатие кнопок Ctrl+O.
Другой вариант: в горизонтальном меню щелкнуть по пункту «Файл» и в раскрывающемся списке выбрать «Открыть…».
Способ 4: просмотрщик файлов
Запустить документ XLS можно одной из множества программ, специально предназначенных для просмотра документов разнообразных форматов с поддержкой указанного выше расширения. Одной из лучших программ подобного плана является File Viewer. Её преимущество состоит в том, что в отличие от аналогичного ПО, File Viewer умеет не только просматривать документы XLS, но также изменять и сохранять их. Правда данными возможностями лучше не злоупотреблять и пользоваться в указанных целях полноценными табличными процессорами, о которых шел разговор выше. Главный недостаток File Viewer состоит в том, что бесплатный период эксплуатации ограничивается всего 10 днями, а потом нужно будет покупать лицензию.
- Запускаем File Viewer и продвигаемся с помощью Проводника Windows или любого иного файлового менеджера в тот каталог, где размещен файл с расширением XLS. Отмечаем данный объект и, зажав левую кнопку мышки, просто перетягиваем его в окно File Viewer.
- Документ тут же будет доступен для просмотра в File Viewer.
Есть возможность запустить файл и через окно открытия.
- Запустив File Viewer, жмем сочетание кнопок Ctrl+O.
Либо же выполняем переход в пункт верхнего горизонтального меню «File». Далее выбираем в списке позицию «Open…».
Как видим, открыть документы с расширением XLS и выполнять в них изменения можно с помощью целого ряда табличных процессоров, которые входят в состав различных офисных пакетов. Кроме того, просмотреть содержимое книги можно с помощью специальных приложений-просмотрщиков.
Источник
Работа с таблицами в браузере: Excel Online и другие бесплатные сервисы
Для работы с таблицами необязательно устанавливать программу Excel на компьютер. Вместо этого можно использовать онлайн-версию одноименного приложения или сервисы со схожими функциями других разработчиков. Выбор зависит от того, какие задачи вам нужно решить — просто поправить пару значений в ячейках или посчитать бюджет крупной организации с помощью сложных функций и макросов.
Excel Online
Excel Online — веб-версия настольного приложения из пакета Microsoft Office. Она бесплатно предоставляет пользователям основные функции программы для работы с таблицами и данными.
По сравнению с настольной версией, в Excel Online отсутствует поддержка пользовательских макросов и ограничены возможности сохранения документов. По умолчанию файл скачивается на компьютер в формате XLSX, который стал стандартом после 2007 года. Также вы можете сохранить его в формате ODS (OpenDocument). Однако скачать документ в формате PDF или XLS (стандарт Excel до 2007 года), к сожалению, нельзя.
Впрочем, ограничение на выбор формата легко обойти при наличии настольной версии Excel. Например, вы можете скачать файл из веб-приложения с расширением XLSX, затем открыть его в программе на компьютере и пересохранить в PDF.
Если вы работаете с формулами, то Excel Online вряд ли станет полноценной заменой настольной версии. Чтобы в этом убедиться, достаточно посмотреть на инструменты, доступные на вкладке «Формулы». Здесь их явно меньше, чем в программе на ПК. Но те, что здесь присутствуют, можно использовать так же, как в настольной версии.
Есть у Excel Online и преимущества. Главное из них — возможность совместной работы над документом. Вы можете создать файл и открыть к нему доступ на чтение и редактирование любым пользователям, например, членам вашей команды. Чтобы это сделать, пройдите по пути «Файл» — «Поделиться» и еще раз «Поделиться».
Как и Word Online, Excel Online имеет два режима совместной работы:
- Приглашение других пользователей по индивидуальной ссылке, которая привязана к адресу электронной почты. Просматривать или редактировать документ сможет только тот человек, на чей адрес вы отправили приглашение.
- Создание публичной ссылки, по которой доступ к вашему документу может получить любой желающий.
Право на редактирование файла дается по умолчанию всем, кому он доступен. Если вы хотите, чтобы пользователи могли только читать документ и оставлять комментарии, измените для них уровень прав: нажмите на пункт «Всем пользователям, получившим ссылку, доступно редактирование», снимите галочку с опции «Разрешить редактирование», а затем нажмите «Применить». Это переведет документ в режим чтения для всех, кроме владельца — того, кто его создал.
В настройках общего доступа также есть функции установки срока действия ссылки и шифрования, однако для их использования нужен премиум-аккаунт OneDrive. В России его пока приобрести нельзя.
При совместной работе удобно использовать и встроенную в документ систему комментирования, доступную на вкладке «Рецензирование». Все, кто имеет доступ к файлу, могут оставлять и просматривать примечания других. Комментарии прикрепляются к конкретным местам документа и отображаются единым списком.
Файлы, созданные в Excel Online, по умолчанию сохраняются в облаке OneDrive. Доступ в него есть у каждого пользователя, имеющего аккаунт Майкрософт. В бесплатной версии OneDrive у вас будет 5 ГБ дискового пространства. Этого объёма достаточно для хранения миллионов таблиц.
Ещё один способ поделиться таблицей, созданной в Excel Online, — вставить её на сайт с помощью HTML-кода. Чтобы воспользоваться этой возможностью, пройдите по пути «Файл» — «Поделиться» — «Внедрить». Затем нажмите на кнопку «Создать». В окне предварительного просмотра, которое откроется после этого, можно выбрать, что из таблицы должно отображаться на сайте после вставки кода на страницу.
Все созданные документы размещены на главной странице сервиса Excel Online. Они размещены на трех вкладках:
- «Последние» — недавно открытые документы.
- «Закреплённые» — документы, рядом с названиями которых вы нажали на кнопку «Добавить к закреплённым».
- «Общие» — документы других владельцев, к которым вам открыли доступ.
Веб-версию Excel можно использовать и в качестве онлайн-просмотрщика документов в форматах XLSX и ODS. Для этого, находясь на главной странице, кликните по ссылке «Добавить и открыть», после чего укажите путь к нужному файлу. Документ откроется в онлайн-версии Excel, где вы можете его редактировать.
Для редактирования таблиц на смартфоне также можно использовать мобильное приложение Excel. У него есть версии для Android и iOS. После установки авторизуйтесь в приложении под тем же аккаунтом, которым вы пользовались в веб-версии, и вам будут доступны все файлы, созданные в Excel Online. Покупка Office 365 не требуется.
Excel Online на Яндекс.Диске
Веб-версия приложения Excel доступна также пользователям Яндекс.Диска — облачного хранилища от Яндекс. Чтобы в нее войти:
- Откройте сайт Яндекса и авторизуйтесь в своей учётной записи.
- Перейдите в интерфейс Яндекс.Диска.
- Нажмите на кнопку «Создать» и выберите тип «Таблицу».
Чтобы открыть файл Excel, созданный на ПК, загрузите его на Яндекс.Диск. Затем дважды кликните по нему внутри хранилища. В соседней вкладке откроется онлайн-редактор таблиц с содержимым документа. После правки и сохранения файл автоматически обновится на Яндекс.Диске.
С точки зрения функциональности эта версия ничем не отличается от Excel Online на OneDrive. Единственная разница — документы, созданные здесь, по умолчанию сохраняются на Яндекс.Диске. Ими также можно делиться с другими пользователями при помощи публичных ссылок.
Google Sheets (Таблицы)
Google Sheets — главная альтернатива браузерной версии Excel. Гугловское веб-приложение предлагает заметно больше возможностей для работы с таблицами и данными, чем аналог от Майкрософт. Например, кроме предустановленных четырёх сотен функций, здесь доступно создание собственных скриптов. Кроме того, функциональность Google Sheets расширяется за счёт плагинов.
Ещё один плюс Google Sheets — тесная связь с другими гугловскими приложениями: Google Docs, Gmail, Google Translate, Google Forms, Google Sites, Google Calendar, Google Contacts, Google Groups и Google Maps. С помощью Google Apps Script (специальная версия JavaScript, предназначенная для работы с сервисами Google) можно автоматизировать различные процессы, например, настроить массовую рассылку писем, автоматически сохранять все вложения на Google Drive или добавлять напоминания в календарь.
Обработчиком скриптов выступает само приложение Google Sheets. Функция их создания вряд ли пригодится вам для домашних нужд, но для компании она может стать отличным способом оптимизации рутинных процессов.
В Google Sheets, как и в рассмотренных аналогах, есть возможность совместной работы над документами. Вы можете пригласить других пользователей по электронной почте или создать и разослать им публичную ссылку. Возможные права доступа — только просмотр, комментирование или редактирование.
Все изменения, внесённые при командной работе, фиксируются в документе. Благодаря системе контроля версий вы можете просматривать их историю. С помощью этой функции также можно восстановить предыдущее состояние документа, если кто-то допустил ошибку при его заполнении.
Файл, созданный в Google Sheets, можно сохранить в форматах XLSX, ODS, PDF, в виде веб-страницы HTML, CSV и TSV. Это тоже делает сервис заметно более гибким, чем Excel Online.
Документы, созданные в Google Sheets, хранятся в облаке Google Drive. На главной странице веб-приложения есть их список, отсортированный по дате просмотра. Эти же файлы можно просматривать и редактировать через бесплатное мобильное приложение для Android и iOS.
Zoho Sheet
Zoho Sheet — еще одно онлайн-средство для просмотра и простого редактирования файлов Excel. Сервис поддерживает форматы XLS, XLSX ODS, CSV и TSV. Вы можете загрузить в него файл из памяти компьютера или импортировать по ссылке с других веб-ресурсов.
Для просмотра содержимого файла регистрация на Zoho Sheet не нужна, но если вы хотите внести в него изменения, придется создать аккаунт. Зарегистрироваться на сервисе можно по электронной почте или через профили на сервисах Google, Facebook или Microsoft.
Полноценной заменой настольной версии Excel редактор Zoho не станет, но составить таблицу, добавить формулы и поработать с данными в нём можно.
Основные возможности редактора:
- Совместная работа над документами.
- Настройки блокировки ячеек и сохранение истории изменений для контроля внесённых правок.
- Инструменты для автоматического преобразования данных в диаграммы и таблицы.
- Более 350 функций для обработки данных.
- Инструменты для очистки данных.
- Поддержка макросов для автоматизации процессов.
- Поддержка 23 языков, в том числе русского.
У Zoho Sheet также есть мобильные приложения для Android и iOS. При использовании одного аккаунта данные между веб-версией и данными на смартфоне синхронизируются. Это позволяет, например, создать документ в браузере на компьютере, а затем быстро внести в него правки с мобильного девайса.
Созданные в Zoho Street документы сохраняются на сервере в аккаунте пользователя. Загрузить их на компьютер можно в форматах XLS, XLSX, ODS, CS, TSV, HTML и PDF.
OnlyOffice
Офисный пакет с открытым исходным кодом OnlyOffice также предлагает пользователям онлайн-редактор электронных таблиц. Для получения доступа к нему вам понадобится регистрация по электронной почте или аккаунты сервисов Google или Facebook.
После авторизации вы попадёте на главный экран сервиса, откуда запускаются онлайн-версии приложений. Для работы с таблицами запустите OnlyOffice Spreadsheets.
Визуально редактор OnlyOffice Spreadsheets напоминает Эксель Онлайн, поэтому вам не придется тратить время на его освоение. С точки зрения функциональности эти веб-приложения тоже очень близки друг к другу.
OnlyOffice предлагает следующие возможности для работы с таблицами в браузере:
- Редактирование и форматирование ячеек.
- Формулы для выполнения расчётов.
- Формирование таблиц и диаграмм из данных.
- Сортировка и группировка данных.
- Совместная работа над документом.
Конкурентное преимущество OnlyOffice перед Excel Online — поддержка макросов для автоматизации пользовательских действий. Создавать новые алгоритмы можно на вкладке «Плагины». Здесь же собраны инструменты для подсветки кода, редактирования изображений, подбора синонимов, перевода текста и вставки видео с YouTube.
Однако веб-версия OnlyOffice не может использоваться для открытия файлов с компьютера. Сервис поддерживает только те, что были созданы в нем. Вы можете хранить документы на «облаке» или скачать на свои устройства в форматах XLSX, ODS, CSV, OTS, PDF.
Приложение OnlyOffice работает и на смартфонах на базе Android и iOS. При авторизации под тем же аккаунтом, что и в веб-версии, данные синхронизируются.
Помимо бесплатного редактора таблиц, OnlyOffice имеет коммерческую версию облачной платформы для организаций. Для тестирования её возможностей предоставляется пробный период на 180 дней. Стоимость подписки зависит от количества сотрудников. В среднем месячная лицензия на одного пользователя обходится в 4.25 евро. При годовой подписке экономия составит 40%, при покупке тарифа на 3 года — 60%.
Некоммерческим организациям и учебным заведениям OnlyOffice предоставляет бесплатный доступ к платным функциям. Для этого нужно зарегистрироваться, выбрать баннер, который будет размещён на главной странице сайта организации, и заполнить форму. Подробности — на этой странице.
Облачная платформа OnlyOffice не предназначена для домашнего использования, так как слишком сложна и довольно дорого стоит. Но если вы ищите онлайн-решение для организации, она станет отличной заменой Excel Online.
Источник