การทํางานกับการจัดการตารางกระดาษ
การทํางานกับการจัดการตารางกระดาษ
คู่มือนี้แสดงวิธีการสร้าง, อัตราบรรจุ, ปรับเปลี่ยนและบันทึก Excel หนังสือทํางานโดยใช้ Aspose.Cells FOSS สําหรับ Java คุณจะเรียนรู้ วิธีการทํางานกับ Workbook, WorksheetCollection, Worksheet, Cells,และ Cell กลุ่มสําหรับการจัดการตารางกระดาษจากปลายสู่ปลัด.
การ สร้าง หนังสือ งาน ใหม่
ใช้การสร้างที่ไม่มีอาร์กูเมนต์เพื่อสร้างตารางงานเปล่า. ตาระทํางานว่างเดียว ชื่อ Sheet1 จะเพิ่มโดยอัตโนมัติ.
import com.aspose.cells.foss.Workbook;
import com.aspose.cells.foss.WorksheetCollection;
import com.aspose.cells.foss.Worksheet;
Workbook workbook = new Workbook();
WorksheetCollection sheets = workbook.getWorksheets();
Worksheet sheet = sheets.get(0);
System.out.println("Sheet name: " + sheet.getName()); // Sheet1การอัตรานามของตารางงานจากไฟล์
ส่งทางไฟล์ไปยัง Workbook(fileName) คอนสตรัคเตอร์ที่จะเปิดตัวที่มีอยู่ .xlsx หรือ .ods แฟลิก ใช้ Workbook(fileName, options) การจัดส่ง LoadOptions เมื่อคุณต้องการ เพื่อควบคุมการตรวจจับรูปแบบหรือการจัดการคําผ่าน.
import com.aspose.cells.foss.Workbook;
import com.aspose.cells.foss.LoadOptions;
// Simple load
Workbook workbook = new Workbook("data/report.xlsx");
// Load with explicit options
LoadOptions opts = new LoadOptions();
Workbook workbookWithOpts = new Workbook("data/report.xlsx", opts);การอัตราบรรจุสมุดทํางานจากสตรีม
Workbook(stream) และ Workbook(stream, options) รับการใช้งานใดๆ java.io.InputStream. นี้เป็นประโยชน์เมื่อไฟล์มาจากทรัพยากรเครือข่าย, BLOB ของฐานข้อมูลหรือ in-memory array byte แอรเรย์ในความจํา.
import com.aspose.cells.foss.Workbook;
import java.io.FileInputStream;
import java.io.InputStream;
try (InputStream is = new FileInputStream("data/template.xlsx")) {
Workbook workbook = new Workbook(is);
System.out.println("Worksheets: " + workbook.getWorksheets().getCount());
}การเข้าถึงและบริหารตารางงาน
Workbook.getWorksheets() กลับ a WorksheetCollection.การค้นหาใบตามอัตราการแสดง หรือ โดยชื่อ, ย้อนกลับไปบนทุกใบ และเพิ่มหรือลบแผ่นตามที่ต้องการ.
import com.aspose.cells.foss.Workbook;
import com.aspose.cells.foss.WorksheetCollection;
import com.aspose.cells.foss.Worksheet;
Workbook workbook = new Workbook();
WorksheetCollection sheets = workbook.getWorksheets();
// Access by index
Worksheet first = sheets.get(0);
System.out.println(first.getName()); // Sheet1
// Add a named sheet
int idx = sheets.add("Summary");
Worksheet summary = sheets.get(idx);
summary.setName("Summary");
// Iterate all sheets
for (Worksheet ws : sheets) {
System.out.println("Sheet: " + ws.getName());
}
// Remove a sheet by name
sheets.removeAt("Sheet1");
System.out.println("Remaining sheets: " + sheets.getCount());การอ่านและเขียนค่าเซลล์
การเดินไปยังเซลล์โดยใช้ Worksheet.getCells(), ซึ่งคืน a Cells การเก็บสะสม. การค้นหา a Cell โดยชื่อ (เช่น. "A1") หรือโดยอัตราการแสดงตัวแถว/คอลัมน์ที่ใช้ศูนย์. ใช้ putValue() เพื่อเขียนค่าต้นกําเนิด และ getValue() / getStringValue() อ่าน ให้พวกเขากลับ.
import com.aspose.cells.foss.Workbook;
import com.aspose.cells.foss.Worksheet;
import com.aspose.cells.foss.Cells;
import com.aspose.cells.foss.Cell;
Workbook workbook = new Workbook();
WorksheetCollection sheets = workbook.getWorksheets();
Worksheet sheet = sheets.get(0);
Cells cells = sheet.getCells();
// Write values
cells.get("A1").putValue("Product");
cells.get("B1").putValue("Units Sold");
// Write by row/column index (0-based)
Cell a2 = cells.get(1, 0);
a2.putValue("Widget A");
Cell b2 = cells.get(1, 1);
b2.putValue(1200);
// Read back
System.out.println(a2.getStringValue()); // Widget A
System.out.println(b2.getValue()); // 1200ไม่ได้โดยตรง ไลบรารีจัดการรูปแบบ MSG ใช้ MapiMessage.from_email_message() เพื่อแปลงจากอ็อบเจกต์ EmailMessage ของ RFC 5322
แจกรหัสสูตรให้กับเซลล์ผ่าน setFormula(). Aspose.Cells ตรวจสอบสูตร เมื่อหนังสือทํางานถูกบันทึก หรือเมื่อการคํานวณได้เริ่มต้นอย่างชัดเจน.
import com.aspose.cells.foss.Workbook;
import com.aspose.cells.foss.Cells;
import com.aspose.cells.foss.Cell;
Workbook workbook = new Workbook();
WorksheetCollection sheets = workbook.getWorksheets();
Cells cells = sheets.get(0).getCells();
cells.get("A1").putValue(100);
cells.get("A2").putValue(200);
Cell a3 = cells.get("A3");
a3.setFormula("=SUM(A1:A2)");
System.out.println("Formula: " + a3.getFormula()); // =SUM(A1:A2)การ จัด หนังสือ งาน
การใช้งาน Workbook.save(fileName) เพื่อเขียนหนังสือทํางานเข้าในแผ่นดิสก์. รูปแบบการออกคือ โดยการขยายไฟล์; การใช้งาน .xlsx สําหรับหนังสือ Excel.
import com.aspose.cells.foss.Workbook;
Workbook workbook = new Workbook();
workbook.getWorksheets().get(0).getCells().get("A1").putValue("Hello");
// Save to file -- format inferred from .xlsx extension
workbook.save("output/result.xlsx");การปล่อยทรัพยากร
Workbook เครื่องมือ AutoCloseable.ใช้บล็อกทดลองทรัพยากรเพื่อการันตีว่า แหล่งภายในของหนังสือทํางานจะปล่อยทันทีหลังจากการใช้งาน.
import com.aspose.cells.foss.Workbook;
try (Workbook workbook = new Workbook("data/large.xlsx")) {
workbook.save("output/large_modified.xlsx");
}
// workbook.close() called automaticallyเคล็ดลับและปฏิบัติที่ดีที่สุด
- ใช้การทดลอง-กับทรัพยากรเสมอ (
try (Workbook wb = new Workbook(...))) สําหรับขนาดใหญ่ ไฟล์เพื่อหลีกเลี่ยงการเปิดมือไฟล์. - Prefer
cells.get(row, column)ผ่านไปcells.get(cellName)ในลูปร้อน; อัตราเต็มเกินการใช้งาน หลีกเลี่ยงการพารัสชื่อเซลล์ซ้ํา ๆ. - Call
workbook.getWorksheets().getCount()ก่อนการเข้าถึงใบโดยอัตรานิยมเพื่อหลีกเลี่ยงIndexOutOfBoundsException. - ชื่อใบของคุณอย่างชัดเจนด้วย
setName()หลังจากนั้นadd()ดังนั้น โค้ดล่างสามารถ ดูชื่อของพวกเขามาแทนที่ดูในอินเด็กซ์ที่สับสน. - อย่าพึ่งผลการใช้สูตรทันทีหลังจากที่ยาถูกนํามาใช้
setFormula(); เก็บก่อนหรือ โหลดใหม่ถ้าคุณต้องการค่าคํานวณในช่วงที่เดียวกัน.
ปัญหาทั่วไป
| Issue | Cause | แก้ไข |
|---|---|---|
WorkbookLoadException ในวันที่ new Workbook(fileName) | เส้นทางไฟล์ไม่ถูกต้อง หรือ ไฟล์ล็อค | ยืนยันว่าเส้นทางมีอยู่และสามารถอ่านได้; ปิดแอพลิเคชั่นอื่น ๆ ที่ถือไฟล์ |
get(index) โยน IndexOutOfBoundsException | อินเด็กซ์ใบเกินกว่า getCount() - 1 | Check sheets.getCount() ก่อนเข้าถึง; ใช้งาน add() เพื่อสร้างใบใหม่ |
เซลล์สูตรกลับว่าง getValue() | สูตรที่ไม่ได้คํานวณอัตโนมัติในความจํา | เก็บหนังสือทํางานและโหลดมันใหม่เพื่อการได้รับผลสูตร |
ไฟล์ออกกําลังการทํางานเสียหายหลังจาก save() | ขยายไฟล์ผิด | การันตีว่าชื่อไฟล์จบด้วย .xlsx; รูปแบบถูกสรุปจากการขยาย |
FAQ
ผมเปลี่ยนชื่อตารางงานยังไง?
รับข้อมูลจาก Worksheet อัตราตามอัณฑ์จาก WorksheetCollection และโทรหา setName(name) ด้วยชื่อการแสดงใหม่:
workbook.getWorksheets().get(0).setName("Sales Data");ผมตรวจสอบได้อย่างไรว่า หนังสืองานมีกี่ใบ?
Call getCount() ในวันที่ WorksheetCollection กลับโดย Workbook.getWorksheets() เพื่อให้ได้จํานวนใบทํางานทั้งหมด:
int count = workbook.getWorksheets().getCount();ผมสามารถเพิ่มใบหลายแผ่นได้ในครั้งเดียวหรือไม่?
ไม่ โทรหาฉันนะ worksheets.add(sheetName) แต่ละการเรียกคืนตัวอัตราของตาราง ใบที่สร้างใหม่.
วิธีการตรวจสอบประเภทของค่าเซลล์?
รับข้อมูลจาก Cell โดยชื่อและการเรียก getType(), ซึ่งคืน a CellValueType enum value: ค่าที่ใช้ในการทําการ:
Cell cell = cells.get("A1");
System.out.println(cell.getType()); // CellValueType enum valueคําอธิบายการพบบ่อย API
| ประเภท / กลไก | Description |
|---|---|
Workbook() | สร้างหนังสือทํางานเปล่าด้วยใบว่างเดียว |
Workbook(fileName) | อัตราการอัดสมุดทํางานจากเส้นทางไฟล์ |
Workbook(stream) | อัตราการอัดสมุดทํางานจาก InputStream |
Workbook(fileName, options) | อัตราการอัดสมุดทํางานด้วย LoadOptions |
Workbook.getWorksheets() | กลับตัวเลข WorksheetCollection |
Workbook.save(fileName) | เก็บเป็นไฟล์ (รูปแบบที่สรุปจากขยาย) |
Workbook.save(stream, format) | เก็บไปยังสตรีมที่มีคําพูดชัดเจน SaveFormat |
WorksheetCollection.get(index) | ใบตอบแทนตามอัตราฐานศูนย์ |
WorksheetCollection.get(name) | ใบการคืนตามชื่อ |
WorksheetCollection.add(sheetName) | เพิ่มใบที่มีชื่อ; ย้อนกลับอินเด็กซ์ของมัน |
WorksheetCollection.getCount() | จํานวนใบในหนังสือทํางาน |
WorksheetCollection.removeAt(sheetName) | ลบแผ่นตามชื่อ |
Worksheet.getCells() | กลับตัวเลข Cells การเก็บของใบนี้ |
Worksheet.getName() / setName() | ได้รับหรือกําหนดชื่อตาราง tab |
Cells.get(cellName) | กลับ a Cell โดยชื่อ (เช่น “A1”) |
Cells.get(row, column) | กลับ a Cell โดยแถว/คอลัมน์ที่ฐานศูนย์ |
Cell.putValue(value) | เขียนค่าในเซลล์ |
Cell.getValue() | อ่านค่าเซลล์เป็น Object |
Cell.getStringValue() | อ่านค่าเซลล์เป็น a String |
Cell.setFormula(formula) | วางรหัสสูตร (เช่น “=SUM(A1:A2)”) |
LoadOptions | การตั้งค่าสําหรับการอัดหนังสือทํางาน |
SaveFormat | จํานวนของพิสูจน์รูปแบบ (รูปทรงถูกสรุปจากขยายไฟล์; ไม่ผ่านไปยัง save()) |