Программно создающие Листы Excel 2007

Исключение нулевого указателя - это индикатор того, что вы используете объект, не инициализируя его.

Например, ниже - класс ученика, который будет использовать его в нашем коде.

public class Student {

    private int id;

    public int getId() {
        return this.id;
    }

    public setId(int newId) {
        this.id = newId;
    }
}

Приведенный ниже код дает вам исключение с нулевым указателем.

public class School {

    Student obj_Student;

    public School() {
        try {
            obj_Student.getId();
        }
        catch(Exception e) {
            System.out.println("Null Pointer ");
        }
    }
}

Поскольку вы используете Obj_Student, но вы забыли инициализировать его, как в правильном коде, показанном ниже:

public class School {

    Student obj_Student;

    public School() {
        try {
            obj_Student = new Student();
            obj_Student.setId(12);
            obj_Student.getId();
        }
        catch(Exception e) {
            System.out.println("Null Pointer ");
        }
    }
}
14
задан Cœur 11 October 2017 в 02:37
поделиться

8 ответов

Вы могли попытаться использовать , Office Открывает XML SDK. Это позволит, Вы для создания файлов Excel в использовании памяти говорите MemoryStream и намного более легко, чем генерация всего XML вручную.

, Поскольку Brian Kim указал, версия 2.0 SDK требует.NET 3.5, который Вы заявили, не было доступно. Версия 1 SDK также доступна, который поддерживает.NET 3.0. Это не так завершено, но по крайней мере поможет Вам управлять частями XML документа и отношений между ними.

9
ответ дан 1 December 2019 в 14:33
поделиться

Я просто генерирую HTML-таблицу, которая может быть открыта Excel:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"
        "http://www.w3.org/TR/html4/strict.dtd">

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Wnioski</title>
<style type="text/css">
<!--
br { mso-data-placement: same-cell; }
td { mso-number-format: \@; mso-displayed-decimal-separator: "."; }
-->
</style>

<table>
<tr style="height:15.0pt">
<td style="mso-number-format: general">474</td>
<td>474</td>

<tr>
<td>data2</td>
<td>data3</td>

<tr>
<td style="mso-number-format: &quot;yyyy-mm-dd&quot;">2008-10-01</td>
<td style="mso-number-format: standard">0.00</td>

<tr>
<td style="mso-number-format: general">line1<br>line2<br>line3</td>
<td></td>

</table>

Это работает хорошо также источником данных для последовательных букв в Word, работает с OpenOffice calc и т.д., И это очень просто для генерации.

2
ответ дан 1 December 2019 в 14:33
поделиться

я собирался прокомментировать сообщение BKIMMEL, но по-видимому у меня еще нет достаточно ТАК прохладные точки.

, Если Excel уже открыт, можно добраться, тот раздражающий "personal.xls уже является открытым" сообщением. Я пытаюсь получить приложение сначала. Если это перестало работать, то создайте его:

On Error Resume Next
Set myxlApp  = GetObject(, "Excel.Application")
If Err.Number <> 0 Then
  Err.Clear
  Set myxlApp = CreateObject("Excel.Application")
  If Err.Number <> 0 Then
    ' return False, show message, etc.
  End If
End If
1
ответ дан 1 December 2019 в 14:33
поделиться

Я сделал большую часть Открыть XML (xlsx), работают в SpreadsheetGear на.NET, и это далеко от тривиального осуществления. Я рекомендую использовать Office, Открывают XML SDK или другую стороннюю библиотеку как SpreadsheetGear или один из наших конкурентов (просто Google "SpreadsheetGear" для наблюдения, кто наши конкуренты).

SpreadsheetGear для.NET, казалось бы, удовлетворял бы Ваши потребности:

  • Работы с.NET 2.0.NET 3.0 и.NET 3.5.
  • Поддержки, пишущие в поток с IWorkbook. SaveToStream или пишущий в массив байтов с IWorkbook. SaveToMemory.
  • Excel 97-2003 поддержек (xls) рабочие книги, который, вероятно, будет следующей вещью, Вас просят относительно того, если необходимо поддерживать очень много пользователей.

Можно загрузить бесплатную, полностью функциональную оценку здесь.

1
ответ дан 1 December 2019 в 14:33
поделиться

Excel очень scriptable через COM-объекты. Я не попробовал его, но это должно быть твердым раствором, хотя ни один быстро или легкий вес.

Независимо от того, что Вы заканчиваете тем, что делали, проверьте если Ваш Unicode поддержки решений. Я столкнулся с некоторыми серьезными проблемами с помощью существующих решений для записи xls файлы (то есть, пред 2 007 файлов).

0
ответ дан 1 December 2019 в 14:33
поделиться

Каждый живой сноб кода ненавидит vbscript, но это просто, и это работает:

Set myxlapp = CreateObject("Excel.Application")
Set mywb = myxlapp.Workbooks.Add
myxlapp.Visible = true

Помещенный, что в текстовом файле, добавьте ".vbs" в конце и престо.

0
ответ дан 1 December 2019 в 14:33
поделиться

Можно использовать Primary Interop Assemblies (API Office), чтобы программно генерировать документы Excel - я не хотел бы делать что-либо чрезмерно сложное использование их, но это не кажется, что это - требование.

Этот подход должен работать на генерацию документов в памяти также.

Вот некоторые ресурсы:

0
ответ дан 1 December 2019 в 14:33
поделиться

Я раньше генерировал Разметка Обработки текстов документы, пользующиеся библиотекой функций для создания корректного XML для таблиц и абзацев.

я тогда просто изменил тип MIME для заголовка Ответа, чтобы быть документом слова и отправил XML как ответ клиенту. Это или открывается в их браузере или сохраняет как файл.

, кажется, нет того же SDK 2003 для Excel, хотя существует , мс Открывают XML SDK

0
ответ дан 1 December 2019 в 14:33
поделиться
Другие вопросы по тегам:

Похожие вопросы: